Skip to end of banner
Go to start of banner

Transformer

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 20 Next »

In order to assist with the Data Integration (DI) efforts with 3rd party systems (ex: Prismic, GraphCMS, BigQuery, PlentyMarkets, GCS, etc), Boxalino is presenting the Data Transformer service https://boxalino-di-transformer-krceabfwya-ew.a.run.app/

Use this service to:

  1. Identify the required request BODY for content integration https://boxalino-di-transformer-krceabfwya-ew.a.run.app/transformer/view

  2. Identify the required request BODY for API request https://boxalino-di-transformer-krceabfwya-ew.a.run.app/api/view

  3. Identify if your project`s connector (headless CMS/BQ/etc) is supported. If not, please provide a service request.

This is service is currently expanding. We value our integrator`s feedback.
For further service requests and integration reviews, please get in touch with Boxalino.

INTEGRATION BENEFITS

When exporting other content to Boxalino ecosystem your project is opening up to further features:

  1. Dynamic content ( top brands/categories/blogs, etc) as part of your API integration/layout

  2. Mixed API response for search/listing (ex: blogs, promotions, campaigns alongside products)

  3. Dynamic pages for your project content (ex: blog pages driven by the personalization/AI engine)

  4. More personalized content to keep your customer`s engaged (as part of our omnichannel approach)

  5. Relevant statistics for each of your content reach (performance impact)

  6. A/B testing as to identify what content your customers have a higher response towards

INTEGRATION FLOW

  1. Review the Transformer services:

    1. is your connector type is not yet supported, please get in touch with Boxalino.

  2. Use the https://boxalino-di-transformer-krceabfwya-ew.a.run.app/transformer/view service to identify the body content requested for the API request.

  3. Identify the content types (blog, banner, categories, etc) that must be integrated from your 3rd party source.

  4. Prepare the connector options https://boxalino.atlassian.net/wiki/spaces/BPKB/pages/662536193/Transformer#CONNECTOR with content from your 3rd party system.

  5. Do a test connector request https://boxalino.atlassian.net/wiki/spaces/BPKB/pages/662536193/Transformer#TEST-REQUEST

  6. Prepare the mapping https://boxalino.atlassian.net/wiki/spaces/BPKB/pages/662536193/Transformer#MAPPING for each content type you want to export.

  7. Do a test sample request https://boxalino.atlassian.net/wiki/spaces/BPKB/pages/662536193/Transformer#REQUEST-DEFINITION

8. Repeat step 6-7 until all desired content is part of the response.

8. Do the sync request https://boxalino.atlassian.net/wiki/spaces/BPKB/pages/662536193/Transformer#REQUEST-DEFINITION

REQUEST DEFINITION

As an integrator, please create the bellow request to the provided endpoint.

There should be a process within your own project that triggers the data sync between a 3rd party source (connector) and Boxalino.

Endpoint

full data sync

https://boxalino-di-transformer-krceabfwya-ew.a.run.app

1

Action

/sync

2

Method

POST

3

Body

use the public endpoint
https://boxalino-di-transformer-krceabfwya-ew.a.run.app/transformer/view
to check the required BODY structure for your integration use-case (it depends on the content type and connector type)

4

Headers

Authorization

Basic base64<<DATASYNC API key : DATASYNC API Secret>>

note: use the API credentials from your Boxalino account that have the ADMIN role assigned

5

 

Content-Type

application/json

6

 

client

account name

7

 

mode

data sync mode: F for full, D for delta

8

 

type

product, user, content, user_content, order.

if left empty - it will check for all tables with the given tm

9

 

tm

(optional) time , in format: YmdHis

technical: used to identify the documents version

10

 

ts

(optional) timestamp, must be millisecond based in UNIX timestamp

11

dev

(optional) use this to mark the content for the dev data index

BODY ELEMENTS

The API SYNC request BODY structure can be accessed in the public service https://boxalino-di-transformer-krceabfwya-ew.a.run.app/transformer/view

There should be a transformer request element per data type (ex: blog, banner, etc). The body is a list (array) of such transformer request definitions (connector, document, mapping, languages)

 Body content for a single document type sync (ex: doc_content data structure for mapping)
[
    {
        "connector": {
            "type": "prismic",
            "options": {
                "query": [],
                "method": "GET",
                "access_token": "",
                "url": "",
                "page": 1
            }
        },
        "document": {
            "type": "content"
        },
        "mapping": {
            "id": "",
            "type": "",
            "creation": "",
            "last_update": "",
            "persona_type": "",
            "persona_id": "",
            "parent_content_ids": [],
            "products": [],
            "contents": [],
            "customers": [],
            "stores": [],
            "title": [],
            "description": [],
            "short_description": [],
            "images": [],
            "link": [],
            "tags": [],
            "labels": [],
            "status": "",
            "periods": [],
            "string_attributes": {},
            "localized_string_attributes": {},
            "numeric_attributes": {},
            "localized_numeric_attributes": {},
            "datetime_attributes": {},
            "localized_datetime_attributes": {}
        },
        "languages": {},
        "options": {},
        "di": {}
    }
]

CONNECTOR

The connector properties are:

  1. type (prismic, graphcms, strapi, gcs, plentymarket, sftp)

  2. options (gets generated based on the selected connector type)

For example, bellow is a sample of the connector properties:

Prismic Connector Properties

 Prismic Connector Properties
"connector": {
  "type": "prismic",
  "options": {
      "query": [],
      "access_token": "",
      "url": ""
  }
}

The query content must be a list of filters and it should be escaped (copy-paste each [] filter into an escape/unescape online tool)

Review this sample from Boxalino`s public Prismic repository:

"connector": {
    "type": "prismic",
    "options": {
      "url": "https://rtux-integration.cdn.prismic.io/api/v2/",
      "access_token": "MC5ZSkU4SnhBQUFDSUFXSXZR.77-9QO-_vWR577-977-9HO-_ve-_ve-_vXPvv73vv71LeO-_vUNi77-9Ii3vv73vv73vv71sC2Xvv71A77-9IA",
      "query": ["[at(document.type, \"blog\")]"]
    }
  }

GraphCMS Connector Properties

 GraphCMS Connector Properties
"connector": {
  "type": "graphql",
  "options": {
      "fields": "",
      "type": "",
      "token": "",
      "endpoint": "",
      "filters": "",
      "locales": []
  }
}

The fields and filters must be escaped (copy-paste the graphiQL section into an escape/unescape online tool)
Review this sample from Boxalino`s public GraphCMS repository:

{
  "connector": {
    "type": "graphql",
    "options": {
      "endpoint": "https://api-eu-central-1.graphcms.com/v2/ckll4a83ni7og01yzfr3k9yc4/master",
      "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImdjbXMtbWFpbi1wcm9kdWN0aW9uIn0.eyJ2ZXJzaW9uIjozLCJpYXQiOjE2MjI1NjIzMzMsImF1ZCI6WyJodHRwczovL2FwaS1ldS1jZW50cmFsLTEuZ3JhcGhjbXMuY29tL3YyL2NrbGw0YTgzbmk3b2cwMXl6ZnIzazl5YzQvbWFzdGVyIiwiaHR0cHM6Ly9tYW5hZ2VtZW50LW5leHQuZ3JhcGhjbXMuY29tIl0sImlzcyI6Imh0dHBzOi8vbWFuYWdlbWVudC5ncmFwaGNtcy5jb20vIiwic3ViIjoiZjZlMTcyNGYtOTI2NS00OTFjLWEwMzktYzFkNGI2ZDExZDA5IiwianRpIjoiY2twZTdweDVoZGR2bzAxejU1NjNwZjc1cCJ9.MjYP8I7OvwyOkiHiB22LPwOfRzEt_ilvp6jHTVufkQEs6UTxJeuOEDvcojbMAgiEa3lStbc3mOVDezOQhMoLdD-UYoSzGyKmzIBI76vsVv5xbkhKwnLBnmX2ssRHMfOgIuyEpG16SwNiyKuBOZdhC39dapEWwSn2bzWqSi4Y-LvIdsANlHfgdwzVzkJNfNAO-2oOMQC4h-QfBlUVoSEQPYLPmGDOUpcawnHXc60Lyg9rCdxooG9YVzXUeqoi4SIc8feHH4My4s_Eb9mprP6sewezTIb4ldPCVwAlh2xl5BrWYDLLNbhgVMmUVaNZjXSS40egT4xxIWiNPw4axCAKZbgsk78lgHo51t0hz8j6qIfn9G_ZNzMagKQRupx4guuMQXiXg30WjSE09HBv6QjDLQRz9A89eRAKCiGVddKGAvXy_cZrAi2OZ_gtsX993wR-kt6AtNZ7s2U5IZPribvLbiNBMtwh1kRfz_t_bUFLCJs7J332odSDkxL38LqR7oRNStZv6EqAXmelWYqBsUvnwZWI3DYqjysYfjb4JALSTwOa4zfDHDkzlaKOiIZwZkI0GroSed_fmL6cfkpmN63CRY3qNQfwG7cXT0mOuOTJSzRBw1QigfCVnM_M2881eBaBdpdwXw3zF7FlxJL1Y0uMSQ0RZ2l3WC81xH7KqUUlUPw",
      "type": "blogs",
      "fields": "{ title __typename locale createdAt active id metaDescription metaTitle publishedAt seoLink updatedAt content {  html text } headerImage { url id width height fileName} stage background { css hex } brands { id name locale } createdBy { id name } history { createdAt } publishedBy { id name } updatedBy { id name } localizations { id locale } }",
      "locales": [
        "de_CH",
        "fr_CH"
      ],
      "filters": "active: true"
    }
  }
}

The filters are optional.
We recommend to sync fully the existing content type and use the API request to set filters.

For example, in case of localization, if your content (ex: blog) is not active in one of the languages and you set a filter for this - the default language values will be set.

The options vary based on the connector type.

The connector required options should be properly described in your 3rd party system documentation (it`s a generic remote access)

MAPPING

The mapping elements depend on the document that requires to be synchronized in the Boxalino ecosystem. We expect our clients to work with headless CMS / 3rd party environments for their content sync.

The mapping exposes the Boxalino Data Structure for the requested document (ex: https://boxalino.atlassian.net/wiki/spaces/BPKB/pages/252280968/doc%2Bcontent ).

For each property, as an integrator, you have to map the connector`s output path (wildcards [*] allowed):

a) for the properties returned as “string”/single value: only one mapping is allowed (ex: id, type, creation, description, etc)

b) (if you intend to change the name of some attributes in the export) for the properties returned as "array" ([]) or as "objects" {}, set a list with index property name (output)=> mapping path (input) :

  1. the output is the explicit type (ex: for tags, the tagging source can be tags or default) or exposed property name

  2. the input is the mapping logic (ex: all product IDs from data.product_ids[*].id are set as product_ids in localized_numeric_attributes)

c) (if you do not want to change the property name in *_attributes mapping) set a list (as array [] ) with mapping path (input)

  1. "localized_string_attributes":{"menu_title":"data.menu_title"} can be declared as "localized_string_attributes":["data.menu_title"]

d) there are a series of default mappings supported which do not have to be declared in your request

  1. do a test/sample request without any mapping declaration to identify the default mappings

    1. In the case of prismic integrations, the following mappings are added by default:

      "id": "id",
      "type": "type",
      "creation": "first_publication_date",
      "last_update": "last_publication_date",
      "link": "uid",
      "string_attributes" : {"linked_ids":"alternate_languages[*].id"},
      "localized_string_attributes" : ["slugs", "href"],
      "raw" : {
        "localized_string_attributes" : [
          "alternate_languages",
          "linked_documents"
        ]
      }

b. In the case of graphCms integrations, the following mappings are added by default:

"id": "id",
"type": "__typename",
"creation": "createdAt",
"last_update": "updatedAt",
"persona_type": "createdBy.name",
"persona_id": "createdBy.id",
"localized_string_attributes" : ["stage"],
"localized_datetime_attributes" : {"published_at":"publishedAt"}

e) export of properties as raw JSON - use the raw node in the mapping

  1. properties will be available as bxraw_<property name>

  2. this is useful for exporting headless CMS specific content types that would require specific rendering in your template (ex: slices, sections, etc)

f) export linked-content : either using the contents property from the Data Structure or by exporting it as raw JSON

  1. the mapping for contents is done in the following way: "contents":{"<source for input>":{"data-structure field":"CMS field"}}"

g) in order to establish in which languages the content is available, a “language status” property is added dynamically ( value 0/1 based on language)

  1. it will take one of the following name _bx_locale_status

Check bellow a sample for various integrations following the designed blog logic in our public repository:

Prismic Mapping Sample (doc_content)

 Prismic Mapping Sample
"mapping": {
    "title": "data.title",
    "description": "data.content",
    "images": "data.header_image.url",
    "tags": {
      "default":"tags",
      "category":"data.category.tags"
     },
    "parent_content_ids": "data.category.id",
    "status": "data.status",
    "string_attributes": {
      "category_uid": "data.category.uid"
    },
    "localized_string_attributes": [
      "data.meta_title",
      "data.content"
    ],
    "numeric_attributes": [
      "data.position"
    ],
    "localized_numeric_attributes": {
      "product_ids":"data.product_ids[*].id"
    },
    "datetime_attributes": {},
    "localized_datetime_attributes": {},
    "raw" : {
      "localized_string_attributes" : [
         "data.content",
         "data.header_image"
       ]
     }
  }

GraphCMS Mapping Sample (doc_content)

 GraphCMS Mapping sample

Warning : the mapping fields must exist in the connector options ~fields~ property.

"mapping": {
    "title": "title",
    "description": "content.text",
    "images": "headerImage.url",
    "link": "seoLink",
    "tags": {
      "brands":"brands[*].name"
    },
    "status": "stage",
    "string_attributes": {
      "background_hex": "background.hex",
      "background_css": "background.css",
      "brand_ids" : "brands[*].id",
      "brands" : "brands[*].name"
    },
    "localized_numeric_attributes": {
      "active" : "active"
    },
    "localized_string_attributes": {
      "meta_title": "metaTitle",
      "meta_description": "metaDescription",
      "content":"content.html"
    },
    "raw": {
        "localized_string_attributes": [
          "content",
          "background",
          "brands",
          "headerImage"
        ]
    }
  }

At Boxalino, we try to map the way our client expects for a headless integration to work.

For this reason, if your connector integration libraries allows for content to be accessed as HTML or text (ex: data.content) - this is as well possible.

In the above sample:

  1. data.content is a RichText (editor) input

  2. when using the mapping “description”:data.content - it will be exported as TEXT

  3. when adding the mapping for localized_string_attributes - it will be exported as HTML.

  4. when adding the mapping in raw it will be exported as raw JSON


The connector response returns the requested content (results) in the following:

 Prismic Response object
{
  "id": "YJJzXhAAACEAXhBY",
  "uid": "feines-haar-wir-haben-die-besten-frisuren-im-2021",
  "type": "blog",
  "href": "https://rtux-integration.cdn.prismic.io/api/v2/documents/search?ref=YKzPhhEAACEAldeL&q=%5B%5B%3Ad+%3D+at%28document.id%2C+%22YJJzXhAAACEAXhBY%22%29+%5D%5D",
  "tags": [
    "haare",
    "parfum"
  ],
  "first_publication_date": "2021-05-05T10:28:57+0000",
  "last_publication_date": "2021-05-25T10:20:12+0000",
  "slugs": [
    "feines-haar-wir-haben-die-besten-frisuren-im-2021-fur-sie"
  ],
  "linked_documents": [],
  "lang": "en-de",
  "alternate_languages": [
    {
      "id": "YJKjqxEAACMAE292",
      "uid": "cheveux-fins-nous-avons-les-meilleures-coiffures-pour-vous-en-2021",
      "type": "blog",
      "lang": "fr-ch"
    }
  ],
  "data": {
    "status": true,
    "title": [
      {
        "type": "heading2",
        "text": "Feines Haar? Wir haben die besten Frisuren im 2021 für Sie!",
        "spans": []
      }
    ],
    "meta_title": [],
    "content": [
      {
        "type": "paragraph",
        "text": "Feines Haar kann sich manchmal als echte Herausforderung darstellen. Dünn, luftig und keine Griffigkeit. Wenn man dann noch eine Frisur stylen will, liegen die Nerven meist blank. Ich bin der Sache auf den Grund gegangen und habe unsere Expertin gefragt. Erfahren Sie im Interview mit Stylistin und Geschäftsführerin vom PerfectHair.ch Salon am Obertor, auf was Sie sich besonders achten sollten, wie Sie feines Haar am besten stylen und pflegen können und welche Frisuren-Trends wir im Jahr 2021 erwarten dürfen.",
        "spans": [
          {
            "start": 0,
            "end": 513,
            "type": "strong"
          }
        ]
      },
      {
        "type": "heading2",
        "text": "Was ist feines Haar?\n",
        "spans": []
      },
      {
        "type": "image",
        "url": "https://images.prismic.io/rtux-integration/5c6b6741-b587-495f-a123-ac3eda053eec_feines-haar-2.jpg?auto=compress,format",
        "alt": null,
        "copyright": null,
        "dimensions": {
          "width": 1280,
          "height": 780
        }
      },
      {
        "type": "paragraph",
        "text": "Unter feinem Haar versteht man eine (im Vergleich zu einem durchschnittlichen Haar) eher dünnere Haarstruktur. Viele Frauen die feines Haar haben, beschreiben Ihre Mähne oft als luftig, strohig oder gar dünn.",
        "spans": []
      },
      {
        "type": "paragraph",
        "text": "Um es in Zahlen auszudrücken: Der Durchmesser einer einzelnen Strähne bei feinem Haar liegt bei nicht mehr als 0,04 Millimeter. Ein „normales“ Haar ist hingegen etwa 0,05 bis 0,07 Millimeter breit. Als dickes Haar wird alles über 0,07 Millimeter bezeichnet.",
        "spans": [
          {
            "start": 111,
            "end": 127,
            "type": "strong"
          }
        ]
      },
      {
        "type": "heading2",
        "text": "Das Experten-Interview",
        "spans": []
      },
      {
        "type": "heading3",
        "text": "Liebe Jenny, wie lange arbeitest du schon bei PerfectHair.ch und was ist deine Tätigkeit?",
        "spans": []
      },
      {
        "type": "paragraph",
        "text": "Ich habe bereits meine Berufslehre als Haarstylistin/ Coiffeuse bei PerfectHair.ch absolviert und bin seit Anfang an dabei. Heute darf ich den Salon am Obertor in Winterthur leiten und betreue unser Team von insgesamt 6 Personen. ",
        "spans": []
      },
      {
        "type": "heading3",
        "text": "Was gehört zu deinem Kerngeschäft bzw. welche Behandlungen führst du am meisten durch?",
        "spans": []
      },
      {
        "type": "paragraph",
        "text": "Ich würde sagen, dass die Behandlungen welche ich am meisten durchführe, definitiv Balayage und Farbtechniken sind. Also alles rund ums Thema Farbe und Farbverlauf gehört zu meinen \"Haupttätigkeiten\". Natürlich beruht sich meine Arbeit aber auf Vielfalt und Diversität. Also vom Haare schneiden bis zur extravaganten Frisur ist alles dabei. ",
        "spans": [
          {
            "start": 83,
            "end": 109,
            "type": "strong"
          }
        ]
      }
    ],
    "header_image": {
      "dimensions": {
        "width": 1280,
        "height": 780
      },
      "alt": null,
      "copyright": null,
      "url": "https://images.prismic.io/rtux-integration/f6562824-6e6d-4cf9-9812-1d1acf87e4cf_TrendsQ1NE5gfuUVPnA_1280x1280%402x.jpg?auto=compress,format"
    },
    "category": {
      "id": "YJE1vRAAACEAWG7G",
      "type": "category",
      "tags": [
        "magazin"
      ],
      "slug": "magazin",
      "lang": "en-de",
      "uid": "magazin",
      "link_type": "Document",
      "isBroken": false
    },
    "product_ids": [
      {
        "id": 23456
      },
      {
        "id": 34566
      },
      {
        "id": 765
      }
    ]
  }
}

 GraphCMS response object

{
  "data": {
    "blogs": [
      {
        "title": "K-Beauty at PerfectHair.ch",
        "__typename": "Blog",
        "locale": "de_CH",
        "createdAt": "2021-06-01T09:29:26.374498+00:00",
        "active": true,
        "id": "ckpdua7zk9t8v0b49fg45udjq",
        "metaDescription": "Koreanische Kosmetik hat in den letzten paar Jahren den europäischen Markt erobert. Auch im PerfectHair.ch Sortiment hat koreanische Hautpflege Einzug gehalten. Lesen Sie weiter, um die innovativen Produkte zu entdecken und alles über den K-Beauty Trend zu erfahren. ",
        "metaTitle": "Koreanische Kosmetik im PerfectHair.ch Sortiment",
        "publishedAt": "2021-06-01T09:48:02.146258+00:00",
        "seoLink": "k-beauty-at-perfecthairch",
        "updatedAt": "2021-06-01T09:30:32.190042+00:00",
        "content": {
          "html": "<p><strong>Koreanische Kosmetik hat in den letzten paar Jahren den europäischen Markt erobert. Auch im PerfectHair.ch Sortiment hat koreanische Hautpflege Einzug gehalten. Lesen Sie weiter, um die innovativen Produkte zu entdecken und alles über den K-Beauty Trend zu erfahren. </strong></p><h6></h6><h6>Sheet Masks, Essence und Co. sind in aller Munde und ein Must-Have für einen glowy und jugendlichen Look. Doch was macht den K-Beauty Trend so speziell, wieso ist koreanische Kosmetik so beliebt ist und wieso sollten Sie sich auch unbedingt davon überzeugen? Wir zeigen Ihnen wieso!</h6><p></p><h3><strong>Trend: Koreanische Kosmetik</strong></h3><p>Cushion-Foundations, BB Creams und Sheet-Mask sind nur einige Produkte, die auch bei uns im Westen kaum mehr wegzudenken sind, doch Ihren Ursprung finden sie allesamt in Asien. Korea gilt als absoluter Vorreiter in Sachen Hautpflege und Kosmetika, so dass es kaum erstaunt, dass unzählige Trends der Kosmetikwelt von K-Beauty abgeschaut und inspiriert wurden. </p><p></p><p>Die Marke Erborian ist beispielsweise bekannt für BB und CC Cream und kombiniert so ganz einfach Make-Up und Skincare in einem Produkt. Tony Moly überzeugt hingegen mit effektiven Aktivstoffen und verspielten Verpackungen. Kocostar ist der König der Tuchmasken und Shangpree bekannt für die wohltuenden Augenmasken.</p><p></p><p>Innovation und die neuste Technologie kombiniert mit traditionellen Wirkstoffen werden bei koreanischer Kosmetik grossgeschrieben. Mit Schneckensekret, fermentiertem Reis, Tee und anderen natürlichen Inhaltsstoffen, die seit jeher in der chinesischen Medizin verwendet werden, werden auch moderne Creme, Toner und Co. angereichert, um dem Traum einer makellosen Haut näher zu kommen. </p><p></p><h3><strong>Das Geheimnis von Glass Skin</strong></h3><p></p><img src=\"https://media.graphcms.com/kjVzAmKnR2JHK75PyM89\" alt=\"glass-skin.png\" title=\"glass-skin.png\" width=\"1280\" height=\"780\" /><p>Doch wieso nimmt Make-Up und insbesondere Hautpflege solch einen hohen Stellenwert in Fernost ein? Ganz vereinfacht ist die Frage mit dem Streben nach einer perfekten Haut zu beantworten. Das A und O und somit die Basis jedes weiteren Schrittes der Beauty-Routine stellt die Hautpflege dar. Eine reine, weisse Haut, frei von Poren gilt als Nonplusultra in Korea. Der Weg zum Ziel führt über eine ausgeklügelte 10-Schritt Pflegeroutine und basiert auf viel Feuchtigkeit und Sonnenschutz. Glass Skin ist hier das Stichwort.</p><p></p><p></p><p>Glass Skin - oft auch als dewy Skin bezeichnet - ist wortwörtlich eine glasklare Haut, die auch ohne Make-Up schimmert, glänzt und einer Porzellanpuppe gleichkommt. Doch wie können auch Sie einen ultimativen Glow auf Ihre Haut zaubern? Die Antwort verbirgt sich hinter 10 Schritten ausgeklügelter Pflege.</p><p></p><h4><strong>In 10 Schritten zur Glashaut</strong></h4><p>Die 10 Step Korean Skincare Routine ist inzwischen auch hierzulande ein Begriff. Die koreanische Art Produkte übereinander zu legen - auch Layering genannt - verspricht auf die Dauer nicht nur eine glasklare, sondern auch eine faltenfreie Haut. Lernen Sie hier die 10 Schritte zur makellosen Haut kennen.</p><p></p><h5>1. Öl basierter Cleanser</h5><p>Am Ende des Tages ist eine gründliche Reinigung das A und O für eine dauerhaft reine Haut. Greifen Sie als ersten Schritt auf eine ölbasierte Reinigung zurück, um Make-Up Rückstände, Talg, Sonnencreme und andere ölbasierte Verschmutzungen zu entfernen. </p><p></p><h5>2. Wasser-basierter Cleanser</h5><p>Schmutz, Schweiss und andere Rückstände auf der Haut werden von einem ölbasierten Cleanser nicht aufgenommen. In Südkorea ist daher die Double-Cleanse Methode weit verbreitet. Verwenden Sie dafür einfach eine wasserbasierte Reinigung nach ihrem Öl-Cleanser.</p><p></p><h5>3. Peeling</h5><p>Ein wöchentliches Peeling befreit die Haut von toten Hautschüppchen und lässt einen jugendlichen und zarten Glow hervorscheinen. Ein regelmässiges Peeling (das nicht übertrieben werden sollte) macht die Haut zudem aufnahmefähiger für weitere Pflegeprodukte.</p><p></p><h5>4. Toner</h5><p>Die ultimative Vorbereitung auf weitere Pflegeschritte: der Toner! Er befreit die Haut von allfälligen Rückständen und bereitet sie insbesondere auf die kommende Pflege vor, indem er den pH-Wert und den Feuchtigkeitsgehalt der Haut reguliert.</p><p></p><h5>5. Essence</h5><p>Das Geheimnis von Korean Beauty und das Herz einer koreanischen Beauty Routine lautet Essence. Die hochkonzentrierten Wässerchen sorgen nicht nur für Feuchtigkeit, sondern sind ein essentieller Spieler, wenn es darum geht die Zellerneuerung zu beschleunigen. Oft angereichert mit fermentierten Inhaltsstoffen, sind sie die ultimative Anti-Aging Wunderwaffe unter den Beauty-Produkten.</p><p></p><h5>6. Treatment: Serum, Ampulle und Co.</h5><p>Zeit, spezifische Hautprobleme in Angriff zu nehmen! Mit Boostern, Seren und Ampullen, die vollgepackt sind mit wirkungsvollen Inhaltsstoffen, werden Hyperpigmentierung, vergrösserte Poren, Fältchen und vieles mehr gezielt bekämpft.</p><h5></h5><h5>7. Sheet Mask</h5><p></p><p></p><p>Tuchmasken: die Seele der koreanischen Hautpflege in 10 Schritten. Eigentlich nichts anderes als ein Stückchen Stoff vollgesaugt mit Essence, sind diese Masken besonders leicht in der Anwendung und sorgen zugleich für Entspannung und Me-Time.</p><p></p><h5>8. Augencreme</h5><p>Da die Haut um unsere Augen besonders dünn und empfindlich ist, bedarf sie einer ganz speziellen Pflege. Augenschatten, Krähenfüsse und geschwollene Augen werden am besten mit wirkungsvollen Augencremen bekämpft. </p><p></p><h5>9. Feuchtigkeitscreme</h5><p>Egal ob sie von dieser ausführlichen Schönheitspflege angetan sind oder nicht, diesen Schritt sollten sie niemals auslassen. Eine tägliche Feuchtigkeitspflege vermindert nicht nur Fältchen und Co. sondern sorgt langzeitig auch für eine gesunde und geschützte Haut. Also unbedingt Creme, Emulsion und Lotion in Ihre Routine integrieren, falls dies nicht sowieso schon längst geschehen ist.</p><p></p><h5>10. Sonnencreme</h5><p>Der letzte und einer der wohl wichtigsten Schritte ist die Sonnencreme. Sie sind immer noch nicht überzeugt davon täglich einen Sonnenschutz zu verwenden? Hören Sie in unseren Podcast rein und lassen Sie sich einmal mehr davon überzeugen, wieso er das Herzstück jeder Routine darstellen sollte und in der asiatischen Kosmetik längst Überhand genommen hat.</p><p></p><h4><strong>Koreanische Pflege für jede Bedürfnisse</strong></h4><p>Natürlich ist es kein Muss täglich alle 10 Schritte durchzuführen. Gerade ein Peeling sollte nicht jeden Tag gemacht werden, da es zu aggressiv für die Haut ist. Die 10 Step Skincare Routine zeigt vielmehr, was der effektivste Weg des Produkt-Layerings ist, um der Haut eine geballte Portion Feuchtigkeit zu schenken, die auch anhält und für den gewünschten Glow sorgt. </p><p></p><p>Inzwischen sollte aber ganz klar sein, wieso sich koreanische Pflegeprodukte solch grosser Beliebtheit erfreuen. Da Skincare grossgeschrieben wird, sollten auch Sie sich einmal an einer ausgefeilte 10-Schritt Routine versuchen - egal ob mit neu gefundenen K-Beauty Produkten oder doch lieber mit Ihren altbekannten Lieblingen. Entdecken Sie in unserem breiten Sortiment - das von koreanischer Kosmetik über französische Klassiker bis hin zu Schweizer Dermokosmetik reicht - alles was Sie für 10 Schritte Beauty Routine benötigen.</p><p></p><p></p><img src=\"https://media.graphcms.com/boXxLptcTKWRNhXeln1f\" alt=\"sheet-masks-bei-PerfectHair.ch.png\" title=\"sheet-masks-bei-PerfectHair.ch.png\" width=\"1280\" height=\"780\" /><p></p>",
          "text": "Koreanische Kosmetik hat in den letzten paar Jahren den europäischen Markt erobert. Auch im PerfectHair.ch Sortiment hat koreanische Hautpflege Einzug gehalten. Lesen Sie weiter, um die innovativen Produkte zu entdecken und alles über den K-Beauty Trend zu erfahren. \\n\\nSheet Masks, Essence und Co. sind in aller Munde und ein Must-Have für einen glowy und jugendlichen Look. Doch was macht den K-Beauty Trend so speziell, wieso ist koreanische Kosmetik so beliebt ist und wieso sollten Sie sich auch unbedingt davon überzeugen? Wir zeigen Ihnen wieso!\\n\\nTrend: Koreanische Kosmetik\\nCushion-Foundations, BB Creams und Sheet-Mask sind nur einige Produkte, die auch bei uns im Westen kaum mehr wegzudenken sind, doch Ihren Ursprung finden sie allesamt in Asien. Korea gilt als absoluter Vorreiter in Sachen Hautpflege und Kosmetika, so dass es kaum erstaunt, dass unzählige Trends der Kosmetikwelt von K-Beauty abgeschaut und inspiriert wurden. \\n\\nDie Marke Erborian ist beispielsweise bekannt für BB und CC Cream und kombiniert so ganz einfach Make-Up und Skincare in einem Produkt. Tony Moly überzeugt hingegen mit effektiven Aktivstoffen und verspielten Verpackungen. Kocostar ist der König der Tuchmasken und Shangpree bekannt für die wohltuenden Augenmasken.\\n\\nInnovation und die neuste Technologie kombiniert mit traditionellen Wirkstoffen werden bei koreanischer Kosmetik grossgeschrieben. Mit Schneckensekret, fermentiertem Reis, Tee und anderen natürlichen Inhaltsstoffen, die seit jeher in der chinesischen Medizin verwendet werden, werden auch moderne Creme, Toner und Co. angereichert, um dem Traum einer makellosen Haut näher zu kommen. \\n\\nDas Geheimnis von Glass Skin\\n\\n\\nDoch wieso nimmt Make-Up und insbesondere Hautpflege solch einen hohen Stellenwert in Fernost ein? Ganz vereinfacht ist die Frage mit dem Streben nach einer perfekten Haut zu beantworten. Das A und O und somit die Basis jedes weiteren Schrittes der Beauty-Routine stellt die Hautpflege dar. Eine reine, weisse Haut, frei von Poren gilt als Nonplusultra in Korea. Der Weg zum Ziel führt über eine ausgeklügelte 10-Schritt Pflegeroutine und basiert auf viel Feuchtigkeit und Sonnenschutz. Glass Skin ist hier das Stichwort.\\n\\n\\nGlass Skin - oft auch als dewy Skin bezeichnet - ist wortwörtlich eine glasklare Haut, die auch ohne Make-Up schimmert, glänzt und einer Porzellanpuppe gleichkommt. Doch wie können auch Sie einen ultimativen Glow auf Ihre Haut zaubern? Die Antwort verbirgt sich hinter 10 Schritten ausgeklügelter Pflege.\\n\\nIn 10 Schritten zur Glashaut\\nDie 10 Step Korean Skincare Routine ist inzwischen auch hierzulande ein Begriff. Die koreanische Art Produkte übereinander zu legen - auch Layering genannt - verspricht auf die Dauer nicht nur eine glasklare, sondern auch eine faltenfreie Haut. Lernen Sie hier die 10 Schritte zur makellosen Haut kennen.\\n\\n1. Öl basierter Cleanser\\nAm Ende des Tages ist eine gründliche Reinigung das A und O für eine dauerhaft reine Haut. Greifen Sie als ersten Schritt auf eine ölbasierte Reinigung zurück, um Make-Up Rückstände, Talg, Sonnencreme und andere ölbasierte Verschmutzungen zu entfernen. \\n\\n2. Wasser-basierter Cleanser\\nSchmutz, Schweiss und andere Rückstände auf der Haut werden von einem ölbasierten Cleanser nicht aufgenommen. In Südkorea ist daher die Double-Cleanse Methode weit verbreitet. Verwenden Sie dafür einfach eine wasserbasierte Reinigung nach ihrem Öl-Cleanser.\\n\\n3. Peeling\\nEin wöchentliches Peeling befreit die Haut von toten Hautschüppchen und lässt einen jugendlichen und zarten Glow hervorscheinen. Ein regelmässiges Peeling (das nicht übertrieben werden sollte) macht die Haut zudem aufnahmefähiger für weitere Pflegeprodukte.\\n\\n4. Toner\\nDie ultimative Vorbereitung auf weitere Pflegeschritte: der Toner! Er befreit die Haut von allfälligen Rückständen und bereitet sie insbesondere auf die kommende Pflege vor, indem er den pH-Wert und den Feuchtigkeitsgehalt der Haut reguliert.\\n\\n5. Essence\\nDas Geheimnis von Korean Beauty und das Herz einer koreanischen Beauty Routine lautet Essence. Die hochkonzentrierten Wässerchen sorgen nicht nur für Feuchtigkeit, sondern sind ein essentieller Spieler, wenn es darum geht die Zellerneuerung zu beschleunigen. Oft angereichert mit fermentierten Inhaltsstoffen, sind sie die ultimative Anti-Aging Wunderwaffe unter den Beauty-Produkten.\\n\\n6. Treatment: Serum, Ampulle und Co.\\nZeit, spezifische Hautprobleme in Angriff zu nehmen! Mit Boostern, Seren und Ampullen, die vollgepackt sind mit wirkungsvollen Inhaltsstoffen, werden Hyperpigmentierung, vergrösserte Poren, Fältchen und vieles mehr gezielt bekämpft.\\n\\n7. Sheet Mask\\n\\n\\nTuchmasken: die Seele der koreanischen Hautpflege in 10 Schritten. Eigentlich nichts anderes als ein Stückchen Stoff vollgesaugt mit Essence, sind diese Masken besonders leicht in der Anwendung und sorgen zugleich für Entspannung und Me-Time.\\n\\n8. Augencreme\\nDa die Haut um unsere Augen besonders dünn und empfindlich ist, bedarf sie einer ganz speziellen Pflege. Augenschatten, Krähenfüsse und geschwollene Augen werden am besten mit wirkungsvollen Augencremen bekämpft. \\n\\n9. Feuchtigkeitscreme\\nEgal ob sie von dieser ausführlichen Schönheitspflege angetan sind oder nicht, diesen Schritt sollten sie niemals auslassen. Eine tägliche Feuchtigkeitspflege vermindert nicht nur Fältchen und Co. sondern sorgt langzeitig auch für eine gesunde und geschützte Haut. Also unbedingt Creme, Emulsion und Lotion in Ihre Routine integrieren, falls dies nicht sowieso schon längst geschehen ist.\\n\\n10. Sonnencreme\\nDer letzte und einer der wohl wichtigsten Schritte ist die Sonnencreme. Sie sind immer noch nicht überzeugt davon täglich einen Sonnenschutz zu verwenden? Hören Sie in unseren Podcast rein und lassen Sie sich einmal mehr davon überzeugen, wieso er das Herzstück jeder Routine darstellen sollte und in der asiatischen Kosmetik längst Überhand genommen hat.\\n\\nKoreanische Pflege für jede Bedürfnisse\\nNatürlich ist es kein Muss täglich alle 10 Schritte durchzuführen. Gerade ein Peeling sollte nicht jeden Tag gemacht werden, da es zu aggressiv für die Haut ist. Die 10 Step Skincare Routine zeigt vielmehr, was der effektivste Weg des Produkt-Layerings ist, um der Haut eine geballte Portion Feuchtigkeit zu schenken, die auch anhält und für den gewünschten Glow sorgt. \\n\\nInzwischen sollte aber ganz klar sein, wieso sich koreanische Pflegeprodukte solch grosser Beliebtheit erfreuen. Da Skincare grossgeschrieben wird, sollten auch Sie sich einmal an einer ausgefeilte 10-Schritt Routine versuchen - egal ob mit neu gefundenen K-Beauty Produkten oder doch lieber mit Ihren altbekannten Lieblingen. Entdecken Sie in unserem breiten Sortiment - das von koreanischer Kosmetik über französische Klassiker bis hin zu Schweizer Dermokosmetik reicht - alles was Sie für 10 Schritte Beauty Routine benötigen.\\n\\n\\n\\n"
        },
        "headerImage": {
          "url": "https://media.graphcms.com/eCuzQhKbSWFhrTObAL0J",
          "id": "ckpdtsy2o9kfp0a45zcnundnr"
        },
        "stage": "PUBLISHED",
        "background": {
          "css": "rgb(80,227,194)",
          "hex": "#50e3c2"
        },
        "brands": [
          {
            "id": "ckltsc4h43wv60b1150to6a3h",
            "name": "Qualicat"
          },
          {
            "id": "ckltsb9m0nlfc0b49uowphbnb",
            "name": "All for Paws"
          }
        ],
        "createdBy": {
          "id": "ckll2ip3sg2jt01yzftc5gfft",
          "name": "danneg"
        },
        "history": [],
        "publishedBy": {
          "id": "ckll2ip3sg2jt01yzftc5gfft",
          "name": "danneg"
        },
        "updatedBy": {
          "id": "ckll2ip3sg2jt01yzftc5gfft",
          "name": "danneg",
          "kind": "MEMBER"
        }
      }
    ]
  }
}

LANGUAGES

This must be declared in order to map the exported language (ex: “de”) with your connector defined value (ex:”en-de”).

"languages": {
  "de": "en-de",
  "fr": "fr-ch"
}

The languages list is used in order to load the data from the headless CMS (per language). Further it will identify which ID from locale A is linked to which ID from locale B in order to generate localized data.

AVAILABLE SERVICES

In order to allow our integrators to validate that the existing data available in the 3rd party systems is properly exported, a few helper services are available:

TEST CONNECTOR REQUEST /test/connector

Use a simple TEST request in order to validate that the connection to your configured endpoint (connector property) is valid.

curl https://boxalino-di-transformer-krceabfwya-ew.a.run.app/test/connector \
-X POST \
-d "[{\"connector\":{\"type\":\"prismic\",\"options\":{\"url\":\"https:\/\/rtux-integration.cdn.prismic.io\/api\/v2\/\",\"access_token\":\"MC5ZSkU4SnhBQUFDSUFXSXZR.77-9QO-_vWR577-977-9HO-_ve-_ve-_vXPvv73vv71LeO-_vUNi77-9Ii3vv73vv73vv71sC2Xvv71A77-9IA\",\"query\":[\"[at(document.type, \\\"category\\\")]\"]}},\"document\":{},\"mapping\":{},\"languages\":{}},{\"connector\":{\"type\":\"prismic\",\"options\":{\"url\":\"https:\/\/rtux-integration.cdn.prismic.io\/api\/v2\/\",\"access_token\":\"MC5ZSkU4SnhBQUFDSUFXSXZR.77-9QO-_vWR577-977-9HO-_ve-_ve-_vXPvv73vv71LeO-_vUNi77-9Ii3vv73vv73vv71sC2Xvv71A77-9IA\",\"query\":[\"[at(document.type, \\\"blog\\\")]\"]}},\"document\":{},\"mapping\":{},\"languages\":{}},{\r\n  \"connector\": {\r\n    \"type\": \"graphql\",\r\n    \"options\": {\r\n      \"endpoint\": \"https:\/\/api-eu-central-1.graphcms.com\/v2\/ckll4a83ni7og01yzfr3k9yc4\/master\",\r\n      \"token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImdjbXMtbWFpbi1wcm9kdWN0aW9uIn0.eyJ2ZXJzaW9uIjozLCJpYXQiOjE2MjI1NjIzMzMsImF1ZCI6WyJodHRwczovL2FwaS1ldS1jZW50cmFsLTEuZ3JhcGhjbXMuY29tL3YyL2NrbGw0YTgzbmk3b2cwMXl6ZnIzazl5YzQvbWFzdGVyIiwiaHR0cHM6Ly9tYW5hZ2VtZW50LW5leHQuZ3JhcGhjbXMuY29tIl0sImlzcyI6Imh0dHBzOi8vbWFuYWdlbWVudC5ncmFwaGNtcy5jb20vIiwic3ViIjoiZjZlMTcyNGYtOTI2NS00OTFjLWEwMzktYzFkNGI2ZDExZDA5IiwianRpIjoiY2twZTdweDVoZGR2bzAxejU1NjNwZjc1cCJ9.MjYP8I7OvwyOkiHiB22LPwOfRzEt_ilvp6jHTVufkQEs6UTxJeuOEDvcojbMAgiEa3lStbc3mOVDezOQhMoLdD-UYoSzGyKmzIBI76vsVv5xbkhKwnLBnmX2ssRHMfOgIuyEpG16SwNiyKuBOZdhC39dapEWwSn2bzWqSi4Y-LvIdsANlHfgdwzVzkJNfNAO-2oOMQC4h-QfBlUVoSEQPYLPmGDOUpcawnHXc60Lyg9rCdxooG9YVzXUeqoi4SIc8feHH4My4s_Eb9mprP6sewezTIb4ldPCVwAlh2xl5BrWYDLLNbhgVMmUVaNZjXSS40egT4xxIWiNPw4axCAKZbgsk78lgHo51t0hz8j6qIfn9G_ZNzMagKQRupx4guuMQXiXg30WjSE09HBv6QjDLQRz9A89eRAKCiGVddKGAvXy_cZrAi2OZ_gtsX993wR-kt6AtNZ7s2U5IZPribvLbiNBMtwh1kRfz_t_bUFLCJs7J332odSDkxL38LqR7oRNStZv6EqAXmelWYqBsUvnwZWI3DYqjysYfjb4JALSTwOa4zfDHDkzlaKOiIZwZkI0GroSed_fmL6cfkpmN63CRY3qNQfwG7cXT0mOuOTJSzRBw1QigfCVnM_M2881eBaBdpdwXw3zF7FlxJL1Y0uMSQ0RZ2l3WC81xH7KqUUlUPw\",\r\n      \"type\": \"blogs\",\r\n   \"filters\": \"active:true\"\r\n }\r\n  },\r\n  \"document\" : {\r\n    \"type\" : \"content\"\r\n  },\r\n  \"mapping\": {},\r\n  \"languages\":{}\r\n}]" \
-H "Content-Type: application/json" \
-H "mode: F" \
-H "type: content"

In the sample above, the following BODY is used:

 JSON body content for TEST request
[
  {
    "connector": {
      "type": "prismic",
      "options": {
        "url": "https://rtux-integration.cdn.prismic.io/api/v2/",
        "access_token": "MC5ZSkU4SnhBQUFDSUFXSXZR.77-9QO-_vWR577-977-9HO-_ve-_ve-_vXPvv73vv71LeO-_vUNi77-9Ii3vv73vv73vv71sC2Xvv71A77-9IA",
        "query": [
          "[at(document.type, \"category\")]"
        ]
      }
    },
    "document": {},
    "mapping": {},
    "languages": {}
  },
  {
    "connector": {
      "type": "prismic",
      "options": {
        "url": "https://rtux-integration.cdn.prismic.io/api/v2/",
        "access_token": "MC5ZSkU4SnhBQUFDSUFXSXZR.77-9QO-_vWR577-977-9HO-_ve-_ve-_vXPvv73vv71LeO-_vUNi77-9Ii3vv73vv73vv71sC2Xvv71A77-9IA",
        "query": [
          "[at(document.type, \"blog\")]"
        ]
      }
    },
    "document": {},
    "mapping": {},
    "languages": {}
  },
  {
    "connector": {
      "type": "graphql",
      "options": {
        "endpoint": "https://api-eu-central-1.graphcms.com/v2/ckll4a83ni7og01yzfr3k9yc4/master",
        "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImdjbXMtbWFpbi1wcm9kdWN0aW9uIn0.eyJ2ZXJzaW9uIjozLCJpYXQiOjE2MjI1NjIzMzMsImF1ZCI6WyJodHRwczovL2FwaS1ldS1jZW50cmFsLTEuZ3JhcGhjbXMuY29tL3YyL2NrbGw0YTgzbmk3b2cwMXl6ZnIzazl5YzQvbWFzdGVyIiwiaHR0cHM6Ly9tYW5hZ2VtZW50LW5leHQuZ3JhcGhjbXMuY29tIl0sImlzcyI6Imh0dHBzOi8vbWFuYWdlbWVudC5ncmFwaGNtcy5jb20vIiwic3ViIjoiZjZlMTcyNGYtOTI2NS00OTFjLWEwMzktYzFkNGI2ZDExZDA5IiwianRpIjoiY2twZTdweDVoZGR2bzAxejU1NjNwZjc1cCJ9.MjYP8I7OvwyOkiHiB22LPwOfRzEt_ilvp6jHTVufkQEs6UTxJeuOEDvcojbMAgiEa3lStbc3mOVDezOQhMoLdD-UYoSzGyKmzIBI76vsVv5xbkhKwnLBnmX2ssRHMfOgIuyEpG16SwNiyKuBOZdhC39dapEWwSn2bzWqSi4Y-LvIdsANlHfgdwzVzkJNfNAO-2oOMQC4h-QfBlUVoSEQPYLPmGDOUpcawnHXc60Lyg9rCdxooG9YVzXUeqoi4SIc8feHH4My4s_Eb9mprP6sewezTIb4ldPCVwAlh2xl5BrWYDLLNbhgVMmUVaNZjXSS40egT4xxIWiNPw4axCAKZbgsk78lgHo51t0hz8j6qIfn9G_ZNzMagKQRupx4guuMQXiXg30WjSE09HBv6QjDLQRz9A89eRAKCiGVddKGAvXy_cZrAi2OZ_gtsX993wR-kt6AtNZ7s2U5IZPribvLbiNBMtwh1kRfz_t_bUFLCJs7J332odSDkxL38LqR7oRNStZv6EqAXmelWYqBsUvnwZWI3DYqjysYfjb4JALSTwOa4zfDHDkzlaKOiIZwZkI0GroSed_fmL6cfkpmN63CRY3qNQfwG7cXT0mOuOTJSzRBw1QigfCVnM_M2881eBaBdpdwXw3zF7FlxJL1Y0uMSQ0RZ2l3WC81xH7KqUUlUPw",
        "type": "blogs",
        "filters": "active:true"
      }
    },
    "document": {
      "type": "content"
    },
    "mapping": {},
    "languages": {}
  }
]

TEST SAMPLE REQUEST /test/sample

You can also use the SAMPLE trigger in order to access one element of the requested types.

The JSON response will be the JSONL structure as it is exported to Boxalino GCS.

Use this service to validate & check that all your data is exported as desired.

curl https://boxalino-di-transformer-krceabfwya-ew.a.run.app/test/sample \
-X POST \
-d "[{\"connector\":{\"type\":\"prismic\",\"options\":{\"url\":\"https:\/\/rtux-integration.cdn.prismic.io\/api\/v2\/\",\"access_token\":\"MC5ZSkU4SnhBQUFDSUFXSXZR.77-9QO-_vWR577-977-9HO-_ve-_ve-_vXPvv73vv71LeO-_vUNi77-9Ii3vv73vv73vv71sC2Xvv71A77-9IA\",\"query\":[\"[at(document.type, \\\"category\\\")]\"]}},\"document\":{\"type\":\"content\"},\"mapping\":{\"id\":\"id\",\"type\":\"type\",\"creation\":\"first_publication_date\",\"last_update\":\"last_publication_date\",\"persona_type\":\"\",\"persona_id\":\"\",\"title\":\"data.name\",\"short_description\":\"\",\"description\":\"data.description\",\"images\":\"data.header_image.url\",\"link\":\"uid\",\"tags\":{\"default\":\"tags\"},\"parent_content_ids\":\"data.parent_category.id\",\"contents\":[],\"products\":[],\"customers\":[],\"stores\":\"\",\"status\":\"data.status\",\"string_attributes\":{\"default_tags\":\"tags\",\"version\":\"version\"},\"localized_string_attributes\":{\"category_title\":\"data.category_title\",\"slugs\":\"slugs\",\"linked_language_id\":\"alternate_languages[*].id\"},\"numeric_attributes\":{\"position\":\"data.position\",\"show_in_navigation\":\"data.show_in_navigation\"},\"localized_numeric_attributes\":{},\"datetime_attributes\":{},\"localized_datetime_attributes\":{}},\"languages\":{\"de\":\"en-de\",\"fr\":\"fr-ch\"}},{\"connector\":{\"type\":\"prismic\",\"options\":{\"url\":\"https:\/\/rtux-integration.cdn.prismic.io\/api\/v2\/\",\"access_token\":\"MC5ZSkU4SnhBQUFDSUFXSXZR.77-9QO-_vWR577-977-9HO-_ve-_ve-_vXPvv73vv71LeO-_vUNi77-9Ii3vv73vv73vv71sC2Xvv71A77-9IA\",\"query\":[\"[at(document.type, \\\"blog\\\")]\"]}},\"document\":{\"type\":\"content\"},\"mapping\":{\"id\":\"id\",\"type\":\"type\",\"creation\":\"first_publication_date\",\"last_update\":\"last_publication_date\",\"persona_type\":\"\",\"persona_id\":\"\",\"title\":\"data.title\",\"short_description\":\"\",\"description\":\"data.content\",\"images\":\"data.header_image.url\",\"link\":\"uid\",\"tags\":{\"default\":\"tags\",\"category\":\"data.category.tags\"},\"parent_content_ids\":\"data.category.id\",\"contents\":[],\"products\":[],\"customers\":[],\"stores\":\"\",\"status\":\"data.status\",\"string_attributes\":{\"tags\":\"tags\",\"category_uid\":\"data.category.uid\"},\"localized_string_attributes\":{\"slugs\":\"slugs\",\"alternate_languages\":\"alternate_languages[*].id\",\"meta_title\":\"data.meta_title\",\"content\":\"data.content\"},\"numeric_attributes\":{\"position\":\"data.position\"},\"localized_numeric_attributes\":{\"product_ids\":\"data.product_ids[*].id\"},\"datetime_attributes\":{},\"localized_datetime_attributes\":{}},\"languages\":{\"de\":\"en-de\",\"fr\":\"fr-ch\"}},{\"connector\":{\"type\":\"graphql\",\"options\":{\"endpoint\":\"https:\/\/api-eu-central-1.graphcms.com\/v2\/ckll4a83ni7og01yzfr3k9yc4\/master\",\"token\":\"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImdjbXMtbWFpbi1wcm9kdWN0aW9uIn0.eyJ2ZXJzaW9uIjozLCJpYXQiOjE2MjI1NjIzMzMsImF1ZCI6WyJodHRwczovL2FwaS1ldS1jZW50cmFsLTEuZ3JhcGhjbXMuY29tL3YyL2NrbGw0YTgzbmk3b2cwMXl6ZnIzazl5YzQvbWFzdGVyIiwiaHR0cHM6Ly9tYW5hZ2VtZW50LW5leHQuZ3JhcGhjbXMuY29tIl0sImlzcyI6Imh0dHBzOi8vbWFuYWdlbWVudC5ncmFwaGNtcy5jb20vIiwic3ViIjoiZjZlMTcyNGYtOTI2NS00OTFjLWEwMzktYzFkNGI2ZDExZDA5IiwianRpIjoiY2twZTdweDVoZGR2bzAxejU1NjNwZjc1cCJ9.MjYP8I7OvwyOkiHiB22LPwOfRzEt_ilvp6jHTVufkQEs6UTxJeuOEDvcojbMAgiEa3lStbc3mOVDezOQhMoLdD-UYoSzGyKmzIBI76vsVv5xbkhKwnLBnmX2ssRHMfOgIuyEpG16SwNiyKuBOZdhC39dapEWwSn2bzWqSi4Y-LvIdsANlHfgdwzVzkJNfNAO-2oOMQC4h-QfBlUVoSEQPYLPmGDOUpcawnHXc60Lyg9rCdxooG9YVzXUeqoi4SIc8feHH4My4s_Eb9mprP6sewezTIb4ldPCVwAlh2xl5BrWYDLLNbhgVMmUVaNZjXSS40egT4xxIWiNPw4axCAKZbgsk78lgHo51t0hz8j6qIfn9G_ZNzMagKQRupx4guuMQXiXg30WjSE09HBv6QjDLQRz9A89eRAKCiGVddKGAvXy_cZrAi2OZ_gtsX993wR-kt6AtNZ7s2U5IZPribvLbiNBMtwh1kRfz_t_bUFLCJs7J332odSDkxL38LqR7oRNStZv6EqAXmelWYqBsUvnwZWI3DYqjysYfjb4JALSTwOa4zfDHDkzlaKOiIZwZkI0GroSed_fmL6cfkpmN63CRY3qNQfwG7cXT0mOuOTJSzRBw1QigfCVnM_M2881eBaBdpdwXw3zF7FlxJL1Y0uMSQ0RZ2l3WC81xH7KqUUlUPw\",\"type\":\"blogs\",\"fields\":\"{ title __typename locale createdAt active id metaDescription metaTitle publishedAt seoLink updatedAt content {  html text } headerImage { url id } stage background { css hex } brands { id name } createdBy { id name } history { createdAt } publishedBy { id name } updatedBy { id name } }\",\"filters\":\"active:true\",\"locales\":[\"de_CH\",\"fr_CH\"]}},\"document\":{\"type\":\"content\"},\"mapping\":{\"id\":\"id\",\"type\":\"__typename\",\"creation\":\"createdAt\",\"last_update\":\"updatedAt\",\"persona_type\":\"createdBy.name\",\"persona_id\":\"createdBy.id\",\"title\":\"title\",\"short_description\":\"\",\"description\":\"content.text\",\"images\":\"headerImage.url\",\"link\":\"seoLink\",\"tags\":{\"brands\":\"brands[*].name\"},\"parent_content_ids\":\"\",\"contents\":[],\"products\":[],\"customers\":[],\"stores\":\"\",\"status\":\"state\",\"string_attributes\":{\"background\":\"background.hex\",\"background_css\":\"background.css\",\"brand_ids\":\"brands[*].id\"},\"localized_string_attributes\":{\"meta_title\":\"metaTitle\",\"meta_description\":\"metaDescription\",\"content\":\"content.html\",\"slugs\":\"seoLink\"},\"numeric_attributes\":{},\"localized_numeric_attributes\":{\"display\":\"active\"},\"datetime_attributes\":{\"published_at\":\"publishedAt\"},\"localized_datetime_attributes\":{}},\"languages\":{\"de\":\"de_CH\",\"fr\":\"fr_CH\"}}]" \
-H "Content-Type: application/json" \
-H "mode: F" \
-H "type: content"

In the sample above, the following BODY is used:

 JSON body content for the SAMPLE request
[
{
  "connector": {
    "type": "prismic",
    "options": {
      "url": "https://rtux-integration.cdn.prismic.io/api/v2/",
      "access_token": "MC5ZSkU4SnhBQUFDSUFXSXZR.77-9QO-_vWR577-977-9HO-_ve-_ve-_vXPvv73vv71LeO-_vUNi77-9Ii3vv73vv73vv71sC2Xvv71A77-9IA",
      "query": ["[at(document.type, \"category\")]"]
    }
  },
  "document" : {
    "type" : "content"
  },
  "mapping": {
    "title": "data.name",
    "description": "data.description",
    "images": "data.header_image.url",
    "parent_content_ids": "data.parent_category.id",
    "status": "data.status",
    "localized_string_attributes": {
      "category_title": "data.category_title",
      "slugs": "slugs",
      "linked_language_id": "alternate_languages[*].id"
    },
    "numeric_attributes": {
      "position": "data.position",
      "show_in_navigation": "data.show_in_navigation"
    },
  },
  "languages": {
    "de": "en-de",
    "fr": "fr-ch"
  }
},
{
  "connector": {
    "type": "prismic",
    "options": {
      "url": "https://rtux-integration.cdn.prismic.io/api/v2/",
      "access_token": "MC5ZSkU4SnhBQUFDSUFXSXZR.77-9QO-_vWR577-977-9HO-_ve-_ve-_vXPvv73vv71LeO-_vUNi77-9Ii3vv73vv73vv71sC2Xvv71A77-9IA",
      "query": ["[at(document.type, \"blog\")]"]
    }
  },
  "document" : {
    "type" : "content"
  },
  "mapping": {
    "title": "data.name",
      "description": "data.description",
      "images": "data.header_image.url",
      "parent_content_ids": "data.parent_category.id",
      "status": "data.status",
      "string_attributes": {
        "default_tags": "tags",
        "categories": "data.parent_category.id"
      },
      "localized_string_attributes": {
        "category_title": "data.category_title"
      },
      "numeric_attributes": {
        "position": "data.position"
      },
      "localized_numeric_attributes": {
        "enabled": "data.status",
        "show_in_navigation": "data.show_in_navigation"
      },
      "raw": {
        "localized_string_attributes": [
          "data.header_img",
          "data.description",
          "data.category_title",
          "data.parent_category"
        ]
      }
  },
  "languages": {
    "de": "en-de",
    "fr": "fr-ch"
  }
},
{
    "connector": {
      "type": "prismic",
      "options": {
        "url": "https://rtux-integration.cdn.prismic.io/api/v2/",
        "access_token": "MC5ZSkU4SnhBQUFDSUFXSXZR.77-9QO-_vWR577-977-9HO-_ve-_ve-_vXPvv73vv71LeO-_vUNi77-9Ii3vv73vv73vv71sC2Xvv71A77-9IA",
        "query": [
          "[at(document.type, \"newsletter\")]"
        ]
      }
    },
    "document": {
      "type": "content"
    },
    "mapping": {
      "title": "data.name",
      "short_description": "",
      "description": "data.description",
      "images": "data.header_img.url",
      "parent_content_ids": "",
      "status": "data.status",
      "string_attributes": {},
      "localized_string_attributes": {
        "description_bottom": "data.description_bottom",
        "contact": "data.contact",
        "benefits": "data.benefits",
        "footer_disclaimer": "data.footer_disclaimer",
        "footer_address": "data.footer_address"
      },
      "raw": {
        "localized_string_attributes": [
          "data.header_img",
          "data.shop_link",
          "data.description",
          "data.description_bottom",
          "data.benefits",
          "data.footer_address"
        ]
      }
    },
    "languages": {
      "de": "en-de",
      "fr": "fr-ch"
    }
  },
  {
    "connector": {
      "type": "graphcms",
      "options": {
        "endpoint": "https://api-eu-central-1.graphcms.com/v2/ckll4a83ni7og01yzfr3k9yc4/master",
        "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImdjbXMtbWFpbi1wcm9kdWN0aW9uIn0.eyJ2ZXJzaW9uIjozLCJpYXQiOjE2MjI1NjIzMzMsImF1ZCI6WyJodHRwczovL2FwaS1ldS1jZW50cmFsLTEuZ3JhcGhjbXMuY29tL3YyL2NrbGw0YTgzbmk3b2cwMXl6ZnIzazl5YzQvbWFzdGVyIiwiaHR0cHM6Ly9tYW5hZ2VtZW50LW5leHQuZ3JhcGhjbXMuY29tIl0sImlzcyI6Imh0dHBzOi8vbWFuYWdlbWVudC5ncmFwaGNtcy5jb20vIiwic3ViIjoiZjZlMTcyNGYtOTI2NS00OTFjLWEwMzktYzFkNGI2ZDExZDA5IiwianRpIjoiY2twZTdweDVoZGR2bzAxejU1NjNwZjc1cCJ9.MjYP8I7OvwyOkiHiB22LPwOfRzEt_ilvp6jHTVufkQEs6UTxJeuOEDvcojbMAgiEa3lStbc3mOVDezOQhMoLdD-UYoSzGyKmzIBI76vsVv5xbkhKwnLBnmX2ssRHMfOgIuyEpG16SwNiyKuBOZdhC39dapEWwSn2bzWqSi4Y-LvIdsANlHfgdwzVzkJNfNAO-2oOMQC4h-QfBlUVoSEQPYLPmGDOUpcawnHXc60Lyg9rCdxooG9YVzXUeqoi4SIc8feHH4My4s_Eb9mprP6sewezTIb4ldPCVwAlh2xl5BrWYDLLNbhgVMmUVaNZjXSS40egT4xxIWiNPw4axCAKZbgsk78lgHo51t0hz8j6qIfn9G_ZNzMagKQRupx4guuMQXiXg30WjSE09HBv6QjDLQRz9A89eRAKCiGVddKGAvXy_cZrAi2OZ_gtsX993wR-kt6AtNZ7s2U5IZPribvLbiNBMtwh1kRfz_t_bUFLCJs7J332odSDkxL38LqR7oRNStZv6EqAXmelWYqBsUvnwZWI3DYqjysYfjb4JALSTwOa4zfDHDkzlaKOiIZwZkI0GroSed_fmL6cfkpmN63CRY3qNQfwG7cXT0mOuOTJSzRBw1QigfCVnM_M2881eBaBdpdwXw3zF7FlxJL1Y0uMSQ0RZ2l3WC81xH7KqUUlUPw",
        "type": "blogs",
        "fields" : "{ title __typename locale createdAt active id metaDescription metaTitle publishedAt seoLink updatedAt content {  html text } headerImage { url id width height fileName} stage background { css hex } brands { id name locale } createdBy { id name } history { createdAt } publishedBy { id name } updatedBy { id name } localizations { id locale } }",
        "locales": ["de_CH", "fr_CH"]
      }
    },
    "document" : {
      "type" : "content"
    },
    "mapping": {
      "title": "title",
      "description": "content.text",
      "images": "headerImage.url",
      "link": "seoLink",
      "tags": {
        "brands":"brands[*].name"
      },
      "status": "stage",
      "string_attributes": {
        "background_hex": "background.hex",
        "background_css": "background.css",
        "brand_ids" : "brands[*].id",
        "brands" : "brands[*].name"
      },
      "localized_numeric_attributes": {
        "active" : "active"
      },
      "localized_string_attributes": {
        "meta_title": "metaTitle",
        "meta_description": "metaDescription",
        "content":"content.html"
      },
      "raw": {
          "localized_string_attributes": [
            "content",
            "background",
            "brands",
            "headerImage"
          ]
        }
    },
    "languages": {
      "de": "de_CH",
      "fr": "fr_CH"
    }
  }
]

  • No labels