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 23 Current »

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

test / stage

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

2

Action

/sync

3

Method

POST

4

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)

5

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

6

 

Content-Type

application/json

7

 

client

account name

8

 

mode

data sync mode: F for full, D for delta

9

 

type

product, user, content, user_content, order.

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

10

 

tm

(optional) time , in format: YmdHis

technical: used to identify the documents version

11

 

ts

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

12

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\")]"]
    }
  }

The filter by document.type is required

The data is loaded for each locale.
In Prismic, each document has a different ID for every language.

The relationship between documents is made based on the alternate_languages property. In the output data, the connection between different language documents can be accessed via the linked_ids (list of ids) or alternate_languages (JSON) properties.

With the use of the _bx_locale_status property (generated automatically) it can be identified if there is any localization available for other locales.

GraphCMS Connector Properties

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

The fields and filters must be escaped (copy-paste the graphQL section into an escape/unescape online tool)


Review this sample from Boxalino`s public GraphCMS repository:

{
  "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"
      ],
      "filters": "active: true"
    }
  }
}

The filters are optional.
We recommend to push the available content types without filters and use the API request to set filters.

Strapi Connector Properties

 Strapi Connector Properties
"connector": {
  "type": "strapi",
  "options": {
      "token": "",
      "url": "",
      "query": "",
      "locales": []
  }
}


Review this sample from Strapi`s live demo repository:

{
  "connector": {
    "type": "graphql",
    "options": {
      "url": "https://api-0r3lf.strapidemo.com/api/articles",
      "token": "aa9e9646aba66edb7553d523d293cfd4239647d15c32c23de887ceb63dde23b5404f7d73bfbf2055141f93c1bffca5928477cfcc3e53072e796bce7adbf9e94dd1d2b12011fa9fe8f293fb8c3aa5dce191d354bc30d2caa691c30096df165771c0357acb2de6b8af081a23345bdb4b03f3f5d89011b85d36595a4a3e9e0a7861",
      "locales": ["en", "fr-FR"]
    }
  }
}

The query is optional. The query/filters must be escaped (copy-paste the query section into an escape/unescape online tool).

Additional, to the url are added the following default parameters: populate=*&pagination[pageSize]=100

We recommend to sync each collection type (no query/filters) and use the API request to set filters.

The data is loaded for each locale.
In Strapi, each document has an ID for every language.

The relationship between documents is made based on the localizations property. In the output data, the connection between different language documents can be accessed via the bx_locale_ids (JSON) property.

With the use of the _bx_locale_status property (generated automatically) it can be identified if there is any localization available for other locales.

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” or that have a single value: only one mapping is allowed (ex: description, link, images, title, short_description, etc)

(ex: "persona_id": "author.data.id", "persona_type": "author.data.attributes.email", "images": "image.data.attributes.url")

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)

(ex: "numeric_attributes": { "place_id":"place.data.id"} , "localized_string_attributes" : {"seo_meta_title": "seo.metaTitle","img_thumbnail":"image.data.attributes.formats.thumbnail.url"})

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

(ex: "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"}

c. In the case of Strapi integrations, the following mappings are added by default:

"id": "id",
"type": "<last section of the url value>",
"creation": "createdAt",
"last_update": "updatedAt",
"string_attributes": ["bx_locale_ids"],
"localized_string_attributes" : ["publicationState"],
"localized_datetime_attributes" : {"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)

  3. it does not allow wildcards/paths (export the API response node as is)

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"}}"

(ex: "contents": { "data.author_link": { "content_type": "type", "content_id": "id" }, "data.categories[*].category": {"content_type": "type", "content_id": "id" }} will access the property type & id from the data.author_link & from the data.categories[*].category to create the https://boxalino.atlassian.net/wiki/spaces/BPKB/pages/254050518/Referenced+Schema+Types#CONTENT contents data structure)

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"
        ]
    }
  }

Strapi Mapping Sample (doc_content)

 Strapi Mapping Sample (/api/articles)
"mapping": {
      "title": "title",
      "link": "slug",
      "description": "ckeditor_content",
      "images": "image.data.attributes.url",
      "parent_content_ids": "category.data.id",
      "localized_string_attributes" : {
        "img_thumbnail":"image.data.attributes.formats.thumbnail.url",
        "img_medium":"image.data.attributes.formats.medium.url",
        "img_small":"image.data.attributes.formats.small.url",
        "seo_meta_title": "seo.metaTitle",
        "seo_meta_description": "seo.metaDescription",
        "seo_keywords": "seo.keywords",
        "seo_canonical_url": "seo.canonicalURL",
        "category_id": "category.data.id",
        "category_name": "category.data.attributes.name",
        "category_slug": "category.data.attributes.slug"
      },
      "raw": {
        "string_attributes": [
          "image",
          "blocks"
        ]
      }
    }
 Strapi Mapping Sample (/api/categories)
"mapping": {
    "title": "name",
    "link": "slug",
    "numeric_attributes": {
      "restaurant_ids":"restaurants.data[*].id",
      "article_ids":"articles.data[*].id"
    }
  }

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 (prismic) 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"
        }
      }
    ]
  }
}
 Strapi response object
{
  "data": [
    {
      "id": 1,
      "attributes": {
        "title": "Here's why you have to try basque cuisine, according to a basque chef",
        "slug": "here-s-why-you-have-to-try-basque-cuisine-according-to-a-basque-chef",
        "createdAt": "2021-11-09T13:33:19.948Z",
        "updatedAt": "2022-11-16T09:32:50.734Z",
        "publishedAt": "2022-09-22T09:30:00.208Z",
        "locale": "en",
        "publicationState": "Publication scheduled",
        "publicationStages": {
          "stages": [
            {
              "name": "In review",
              "message": "author@strapidemo.com marked this content as ready to be reviewed.",
              "date": "2022-09-22T09:09:41.266Z"
            },
            {
              "name": "Changes requested",
              "message": "editor@strapidemo.com requested some changes.",
              "date": "2022-10-22T09:10:02.906Z"
            },
            {
              "name": "In review",
              "message": "author@strapidemo.com made the requested changes.",
              "date": "2022-10-22T09:10:10.064Z"
            },
            {
              "name": "Publication scheduled",
              "message": "editor@strapidemo.com scheduled the publication of the entry.",
              "date": "2022-11-22T10:00:00.002Z"
            }
          ]
        },
        "ckeditor_content": "<p>Thanks to <a href=\"https://www.huffpost.com/entry/how-to-measure-the-restau_b_5475536\">Ferran Adrià</a>, tapas, and a fascination with all things pork -- from chorizo to chicharrones -- Spanish cuisine has been a star in the food world in recent years. But a less familiar part of Spanish cuisine is Basque -- considerably unique and different from the broader Spanish cuisine that has been exported across the globe. Basque cuisine is worth getting to know, however, and with an influx of Basque-inspired restaurants in food-forward cities like New York, it appears that this culinary tradition is gaining the foothold it deserves.</p><p>Basque country lies in the North of Spain near the Bay of Biscay and in South Western France. With fertile ground for grains and vineyards in an area called Álava, and good land for livestock breeding in Vizcaya and Guipúzcoa, Basque country has a rich culinary heritage. It's no wonder then that today the region boasts <a href=\"http://www.euskoguide.com/food-drink-basque-country/michelin-star-restaurants.html\">almost 40 Michelin-starred restaurants</a>.</p><p>I spoke to the executive chef and owner of the new Basque-inspired restaurant <a href=\"http://huertasnyc.com/t\">Huertas</a> in New York City to learn more about the unique cuisine. Ten years ago, after working in some of New York's most prominent restaurants, chef Jonah Miller took off for Northern Spain to learn more. In April of this year, he opened his first restaurant, dedicated to the food he studied and fell in love with.</p><p><strong>I asked Jonah to describe some quintessential Basque dishes, and the overarching themes were salt cod and peppers.</strong></p><p><i>Salt Cod (in many forms), including:</i><br>- Kokotxas al Pil-Pil - Fish cheeks and throats in a \"pil-pil\" sauce, which refers to the sound made when shaking a cazuela to activate the natural gelatin in the fish cheeks.<br>- Tortilla de Bacalao - A salt cod omelet.<br>- Porrusalda - Potato, leek, salt cod soup.<br>Piperrada - Sauteed peppers (they use lots of peppers), onions, garlic and tomato, often served with a fried egg.<br>Stuffed Piquillo Peppers.<br>Marmitako - Tuna with potato and pepper stew.</p><p><strong>I also asked what some quintessential Basque beverages might be.</strong></p><blockquote><p>Sidra (cider), which is much dryer and funkier than ciders we are familiar with, and Txakoli, slightly effervescent white wine. Both are low in alcohol and highly acidic -- perfect to drink with pintxos.</p></blockquote><p><strong>So what are pintxos?</strong></p><blockquote><p>\"Pintxos are small, composed bites that unlike tapas, aren't meant to be shared,\" explained Miller. Fans of tapas but not always down to share every bite, we like the sound of pintxos. Basque restaurants are best known for pintxos, and at his restaurant, Miller naturally serves a variety.&nbsp;</p></blockquote><p>Among his favorites are:<br><i>Gildas - White anchovy, olive, and pickled pepper skewer (named after the 1946 Rita Hayworth role).</i><br><i>Soft Boiled Quail Egg with Black Anchovy and Piquillo Peppers.</i><br><i>Fried Eggplant with Honey and Goat Cheese (local eggplant just started).</i><br><i>Wood-Fired Chorizo with Pickled Carrots.</i></p><p><img src=\"/uploads/55_3a3cb7ffba_cf157a700b.jpg\" alt=\"Pintxos\">)</p><p><strong>Other than Pintxos, what are more distinguishing features of Basque cuisine that you won't find anywhere else?</strong></p><blockquote><p>Lots of salt cod. As far back at the 15th century Basques were the best ship builders in Europe and dominated the whaling trade. When the whaling trade dried up, they began going further into the north Atlantic to fish for cod, which they salted aboard the ship as a means of preservation and then brought home. So even though cod is not present in the waters around Spain, it is the fish most commonly used in the Basque country (though almost always dried). They use more Foie Gras than other areas of Spain.</p></blockquote><p><strong>Miller serves a lot of egg dishes at Huertas, so I wondered too how important eggs were in Basque cuisine.</strong></p><blockquote><p>In the Basque country, they enjoy eggs at all times of day throughout Spain... Eggs are often the canvas for beautiful seafood, produce, or charcuterie, such as wild mushrooms, local asparagus, Jamon...</p></blockquote><p><strong>I asked what brought him to Northern Spain in the first place and what drew him to the cuisine.</strong></p><blockquote><p>Ten years ago when I was growing up working in kitchens, Spain was at the forefront of influencing modern cooking techniques. So that was largely what attracted me to studying abroad in Madrid (as well as honing my Spanish speaking, which is helpful in NYC kitchens), as well as not knowing much about Spanish cuisine and looking forward to learning something new. When in Spain, I came to appreciate not the modern cooking, but how great the old-school pintxo and tapas bars were, how fun they were to dine in, and felt that we didn't have much representation for that experience in New York. Being a native New Yorker, I think we should have the best of everything available here, and wanted to bring more great Spanish food to our city.</p></blockquote><blockquote><p>The food and culture of the north of Spain translate better than the south of Spain to New York. For one thing, being closer to the rest of Europe, the north is more cosmopolitan and a bit more diverse. Also, the climate in the north (and accordingly produce) is not far off from that of New York.</p></blockquote><p><strong>Now I'm hungry. I asked what a typical way to start and end a Basque meal is.</strong></p><blockquote><p>To start, Txakolina and simply cooked seafood. [To finish,] there are some delicious Basque vermouths, which are a bit sweet and are had after dinner or often in the afternoon (some of which we offer, as well as making our own). They do make caramels and toffees, as well as Turron, an almond nougat. All traditional ends to a meal. There are also many cakes and tarts that are traditional.</p></blockquote><p><strong>So now that I'm ready to dive headfirst into Basque cuisine, what would be an approachable dish to try making at home?</strong></p><blockquote><p>Pintxos!! Go to Despana (a Spanish specialty foods store), pick up one or two cheeses, one or two cured meats, anchovies, a tin of seafood; the greenmarket for some seasonal produce and local honey; get some good bread, toothpicks, and start trying out different combinations. Try this cheese with honey and shaved carrots, those anchovies with tomato on toast.<br>&nbsp;</p></blockquote>",
        "image": {
          "data": {
            "id": 12,
            "attributes": {
              "name": "Basque dish",
              "alternativeText": "Basque dish",
              "caption": "Basque dish",
              "width": 758,
              "height": 506,
              "formats": {
                "thumbnail": {
                  "name": "thumbnail_https://4d40-2a01-cb00-c8b-1800-7cbb-7da-ea9d-2011.ngrok.io/uploads/basque_cuisine_17fa4567e0.jpeg",
                  "hash": "thumbnail_basque_cuisine_17fa4567e0_f033424240",
                  "ext": ".jpeg",
                  "mime": "image/jpeg",
                  "width": 234,
                  "height": 156,
                  "size": 11.31,
                  "path": null,
                  "url": "/uploads/thumbnail_basque_cuisine_17fa4567e0_f033424240.jpeg"
                },
                "medium": {
                  "name": "medium_https://4d40-2a01-cb00-c8b-1800-7cbb-7da-ea9d-2011.ngrok.io/uploads/basque_cuisine_17fa4567e0.jpeg",
                  "hash": "medium_basque_cuisine_17fa4567e0_f033424240",
                  "ext": ".jpeg",
                  "mime": "image/jpeg",
                  "width": 750,
                  "height": 501,
                  "size": 82.09,
                  "path": null,
                  "url": "/uploads/medium_basque_cuisine_17fa4567e0_f033424240.jpeg"
                },
                "small": {
                  "name": "small_https://4d40-2a01-cb00-c8b-1800-7cbb-7da-ea9d-2011.ngrok.io/uploads/basque_cuisine_17fa4567e0.jpeg",
                  "hash": "small_basque_cuisine_17fa4567e0_f033424240",
                  "ext": ".jpeg",
                  "mime": "image/jpeg",
                  "width": 500,
                  "height": 334,
                  "size": 41.03,
                  "path": null,
                  "url": "/uploads/small_basque_cuisine_17fa4567e0_f033424240.jpeg"
                }
              },
              "hash": "basque_cuisine_17fa4567e0_f033424240",
              "ext": ".jpeg",
              "mime": "image/jpeg",
              "size": 58.209999999999994,
              "url": "/uploads/basque_cuisine_17fa4567e0_f033424240.jpeg",
              "previewUrl": null,
              "provider": "local",
              "provider_metadata": null,
              "createdAt": "2021-11-23T14:05:33.460Z",
              "updatedAt": "2021-11-23T14:05:46.084Z"
            }
          }
        },
        "blocks": [
          {
            "id": 2,
            "__component": "blocks.related-articles"
          },
          {
            "id": 2,
            "__component": "blocks.cta-command-line",
            "theme": "primary",
            "title": "Want to give a try to a starter?",
            "text": "Corporate, Blog, E-commerce... 🚀",
            "commandLine": "npx create-strapi-starter my-project"
          }
        ],
        "seo": {
          "id": 1,
          "metaTitle": "Articles - FoodAdvisor",
          "metaDescription": "Discover our articles about food, restaurants, bars and more! - FoodAdvisor",
          "keywords": "food",
          "metaRobots": null,
          "structuredData": null,
          "metaViewport": null,
          "canonicalURL": null
        },
        "category": {
          "data": {
            "id": 4,
            "attributes": {
              "name": "European",
              "slug": "european",
              "createdAt": "2021-11-09T13:33:20.123Z",
              "updatedAt": "2021-11-09T13:33:20.123Z"
            }
          }
        },
        "editors": {
          "data": [
            {
              "id": 2,
              "attributes": {
                "firstname": "Editor",
                "lastname": "",
                "username": null,
                "preferedLanguage": null,
                "createdAt": "2022-09-22T08:20:44.042Z",
                "updatedAt": "2022-10-19T09:02:29.334Z"
              }
            }
          ]
        },
        "localizations": {
          "data": [
            {
              "id": 10,
              "attributes": {
                "title": "Voici pourquoi il faut essayer la cuisine basque, selon un chef basque",
                "slug": "voici-pourquoi-il-faut-essayer-la-cuisine-basque-selon-un-chef-basque",
                "createdAt": "2021-11-18T13:33:19.948Z",
                "updatedAt": "2022-11-16T09:32:50.712Z",
                "publishedAt": "2022-09-22T13:00:00.069Z",
                "locale": "fr-FR",
                "publicationState": "Publication scheduled",
                "publicationStages": {
                  "stages": [
                    {
                      "name": "In review",
                      "message": "author@strapidemo.com marked this content as ready to be reviewed.",
                      "date": "2022-09-22T09:09:41.266Z"
                    },
                    {
                      "name": "Changes requested",
                      "message": "editor@strapidemo.com requested some changes.",
                      "date": "2022-10-22T09:10:02.906Z"
                    },
                    {
                      "name": "In review",
                      "message": "author@strapidemo.com made the requested changes.",
                      "date": "2022-10-22T09:10:10.064Z"
                    },
                    {
                      "name": "Publication scheduled",
                      "message": "editor@strapidemo.com scheduled the publication of the entry.",
                      "date": "2022-11-22T10:00:00.002Z"
                    }
                  ]
                },
                "ckeditor_content": "<p>Grâce à <a href=\"https://www.huffpost.com/entry/how-to-measure-the-restau_b_5475536\">Ferran Adrià</a>, des tapas et une fascination pour tout ce qui concerne le porc - du chorizo ​​aux chicharrones - la cuisine espagnole a été une star dans le monde de l'alimentation ces dernières années. Mais une partie moins familière de la cuisine espagnole est basque - considérablement unique et différente de la cuisine espagnole plus large qui a été exportée à travers le monde. Cependant, la cuisine basque vaut la peine d'être connue, et avec un afflux de restaurants d'inspiration basque dans des villes gourmandes comme New York, il semble que cette tradition culinaire prenne la place qu'elle mérite.</p><p>Le Pays Basque se situe au nord de l'Espagne près du golfe de Gascogne et dans le sud-ouest de la France. Avec un sol fertile pour les céréales et les vignobles dans une région appelée Álava, et de bonnes terres pour l'élevage en Biscaye et Guipúzcoa, le pays basque possède un riche patrimoine culinaire. Il n'est donc pas étonnant qu'aujourd'hui la région compte <a href=\"http://www.euskoguide.com/food-drink-basque-country/michelin-star-restaurants.html\">presque 40 restaurants étoilés Michelin</a>.</p><p>J'ai parlé au chef exécutif et propriétaire du nouveau restaurant d'inspiration basque <a href=\"http://huertasnyc.com/t\">Huertas</a> à New York pour en savoir plus sur la cuisine unique. Il y a dix ans, après avoir travaillé dans certains des restaurants les plus en vue de New York, le chef Jonah Miller s'est envolé pour le nord de l'Espagne pour en savoir plus. En avril de cette année, il a ouvert son premier restaurant, dédié à la nourriture qu'il a étudiée et dont il est tombé amoureux.</p><p><strong>J'ai demandé à Jonah de décrire certains plats basques par excellence, et les thèmes dominants étaient la morue salée et les poivrons.</strong></p><p><i>Morue salée (sous de nombreuses formes), y compris</i>:<br>- Kokotxas al Pil-Pil - Joues et gorges de poisson dans une sauce \"pil-pil\", qui fait référence au son émis en secouant une cazuela pour activer la gélatine naturelle dans les joues de poisson.<br>- Tortilla de Bacalao - Une omelette à la morue salée.<br>- Porrusalda - Soupe de pommes de terre, poireaux, morue salée.<br>Piperrada - Poivrons sautés (ils utilisent beaucoup de poivrons), oignons, ail et tomate, souvent servis avec un œuf au plat.<br>Poivrons de Piquillo farcis.<br>Marmitako - Thon avec ragoût de pommes de terre et poivrons.</p><p><strong>J'ai également demandé quelles pourraient être les boissons basques par excellence.</strong></p><blockquote><p>Sidra (cidre), beaucoup plus sec et funky que les cidres que nous connaissons, et Txakoli, vin blanc légèrement effervescent. Les deux sont faibles en alcool et très acides - parfaits à boire avec des pintxos.</p></blockquote><p><strong>Alors, que sont les pintxos ?</strong></p><blockquote><p>\"Les pintxos sont de petites bouchées composées qui, contrairement aux tapas, ne sont pas destinées à être partagées\", a expliqué Miller. Amateurs de tapas mais pas toujours prêts à partager chaque bouchée, on aime le son des pintxos. Les restaurants basques sont surtout connus pour les pintxos, et dans son restaurant, Miller sert naturellement une variété. Parmi ses favoris figurent :<br><i>Gildas - Brochette d'anchois blancs, d'olives et de poivrons marinés (nommée d'après le rôle de Rita Hayworth en 1946).</i><br><i>Egguf de caille mollet aux anchois noirs et piments piquillos.</i><br><i>Aubergine frite au miel et au fromage de chèvre (l'aubergine locale vient de commencer).</i><br><i>Chorizo ​​au feu de bois avec carottes marinées.</i></p></blockquote><p><img src=\"/uploads/55_3a3cb7ffba_cf157a700b.jpg\" alt=\"Pintxos\"></p><p><strong>Au-delà des pintxos, quelles sont les caractéristiques les plus distinctives de la cuisine basque que vous ne trouverez nulle part ailleurs ?</strong></p><blockquote><p>Beaucoup de morue salée. Dès le XVe siècle, les Basques étaient les meilleurs constructeurs de navires d'Europe et dominaient le commerce de la chasse à la baleine. Lorsque le commerce de la chasse à la baleine s'est tari, ils ont commencé à aller plus loin dans l'Atlantique Nord pour pêcher la morue, qu'ils ont salée à bord du navire comme moyen de conservation et qu'ils ont ensuite ramenée chez eux. Ainsi, même si la morue n'est pas présente dans les eaux autour de l'Espagne, c'est le poisson le plus couramment utilisé au Pays basque (bien que presque toujours séché). Ils utilisent plus de Foie Gras que d'autres régions d'Espagne.</p></blockquote><p><strong>Miller sert beaucoup de plats aux œufs à Huertas, alors je me suis demandé aussi quelle était l'importance des œufs dans la cuisine basque.</strong></p><blockquote><p>[Au Pays basque] on se régale d'œufs à toute heure de la journée dans toute l'Espagne... Les œufs sont souvent la toile de beaux fruits de mer, produits frais ou charcuterie, comme les champignons sauvages, les asperges locales, le jambon...</p></blockquote><p><strong>J'ai demandé ce qui l'avait amené dans le nord de l'Espagne en premier lieu et ce qui l'avait attiré vers la cuisine.</strong></p><blockquote><p>Il y a dix ans, lorsque j'ai grandi dans la cuisine, l'Espagne était à l'avant-garde pour influencer les techniques de cuisson modernes. C'est donc en grande partie ce qui m'a attiré à étudier à l'étranger à Madrid (ainsi qu'à perfectionner mon espagnol, ce qui est utile dans les cuisines de New York), ainsi qu'à ne pas trop connaître la cuisine espagnole et à avoir hâte d'apprendre quelque chose de nouveau. Quand en Espagne, j'ai appris à apprécier non pas la cuisine moderne, mais à quel point les bars à pintxo et à tapas à l'ancienne étaient formidables, à quel point ils étaient amusants à dîner et j'ai senti que nous n'avions pas beaucoup de représentation pour cette expérience à New York. Étant originaire de New York, je pense que nous devrions avoir le meilleur de tout ce qui est disponible ici et que nous voulions apporter plus de bonne cuisine espagnole dans notre ville.</p></blockquote>"
              }
            }
          ]
        }
      }
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "pageSize": 1,
      "pageCount": 4,
      "total": 4
    }
  }
}

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-stage-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": "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",
        "filters": "active:true"
      }
    },
    "document": {
      "type": "content"
    },
    "mapping": {},
    "languages": {}
  },
  {
    "connector": {
      "type": "strapi",
      "options": {
        "url": "https://api-0r3lf.strapidemo.com/api/articles",
        "token": "aa9e9646aba66edb7553d523d293cfd4239647d15c32c23de887ceb63dde23b5404f7d73bfbf2055141f93c1bffca5928477cfcc3e53072e796bce7adbf9e94dd1d2b12011fa9fe8f293fb8c3aa5dce191d354bc30d2caa691c30096df165771c0357acb2de6b8af081a23345bdb4b03f3f5d89011b85d36595a4a3e9e0a7861",
        "locales": ["en", "fr-FR"]
      }
    },
    "document": {
      "type": "content"
    },
    "mapping": {},
    "languages": {}
  }
]

The sample CURL request does not include the STRAPI connector details because the STRAPI connector is accessing a demo setup.

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-stage-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"
    }
  },
  {
    "connector": {
      "type": "strapi",
      "options": {
        "url": "https://api-0r3lf.strapidemo.com/api/articles",
        "token": "aa9e9646aba66edb7553d523d293cfd4239647d15c32c23de887ceb63dde23b5404f7d73bfbf2055141f93c1bffca5928477cfcc3e53072e796bce7adbf9e94dd1d2b12011fa9fe8f293fb8c3aa5dce191d354bc30d2caa691c30096df165771c0357acb2de6b8af081a23345bdb4b03f3f5d89011b85d36595a4a3e9e0a7861",
        "locales": ["en", "fr-FR"]
      }
    },
    "document" : {
      "type" : "content"
    },
    "mapping": {
      "title": "title",
      "link": "slug",
      "description": "ckeditor_content",
      "images": "image.data.attributes.url",
      "parent_content_ids": "category.data.id",
      "localized_string_attributes" : {
        "img_thumbnail":"image.data.attributes.formats.thumbnail.url",
        "img_medium":"image.data.attributes.formats.medium.url",
        "img_small":"image.data.attributes.formats.small.url",
        "seo_meta_title": "seo.metaTitle",
        "seo_meta_description": "seo.metaDescription",
        "seo_keywords": "seo.keywords",
        "seo_canonical_url": "seo.canonicalURL",
        "category_id": "category.data.id",
        "category_name": "category.data.attributes.name",
        "category_slug": "category.data.attributes.slug"
      },
      "raw": {
        "string_attributes": [
          "image",
          "blocks"
        ]
      }
    },
    "languages":{
      "de":"en",
      "fr":"fr-FR"
    }
  },
  {
    "connector": {
      "type": "strapi",
      "options": {
        "url": "https://api-0r3lf.strapidemo.com/api/reviews",
        "token": "aa9e9646aba66edb7553d523d293cfd4239647d15c32c23de887ceb63dde23b5404f7d73bfbf2055141f93c1bffca5928477cfcc3e53072e796bce7adbf9e94dd1d2b12011fa9fe8f293fb8c3aa5dce191d354bc30d2caa691c30096df165771c0357acb2de6b8af081a23345bdb4b03f3f5d89011b85d36595a4a3e9e0a7861",
        "locales": ["en", "fr-FR"]
      }
    },
    "document" : {
      "type" : "content"
    },
    "mapping": {
      "description": "content",
      "persona_id": "author.data.id",
      "persona_type": "author.data.attributes.email",
      "parent_content_ids": "restaurant.data.id",
      "string_attributes" : {
        "author_name": "author.data.attributes.username",
        "author_job": "author.data.attributes.job"
      },
      "localized_string_attributes" : {
        "restaurant_name": "restaurant.data.attributes.name",
        "restaurant_slug": "restaurant.data.attributes.slug"
      },
      "numeric_attributes": {
        "author_confirmed": "author.data.attributes.confirmed",
        "author_blocked": "author.data.attributes.blocked",
        "note": "note"
      }
    },
    "languages":{
      "de":"en",
      "fr":"fr-FR"
    }
  },
  {
    "connector": {
      "type": "strapi",
      "options": {
        "url": "https://api-0r3lf.strapidemo.com/api/restaurants",
        "token": "aa9e9646aba66edb7553d523d293cfd4239647d15c32c23de887ceb63dde23b5404f7d73bfbf2055141f93c1bffca5928477cfcc3e53072e796bce7adbf9e94dd1d2b12011fa9fe8f293fb8c3aa5dce191d354bc30d2caa691c30096df165771c0357acb2de6b8af081a23345bdb4b03f3f5d89011b85d36595a4a3e9e0a7861",
        "locales": ["en", "fr-FR"]
      }
    },
    "document" : {
      "type" : "content"
    },
    "mapping": {
      "title": "name",
      "link": "slug",
      "images": "image.data.attributes.url",
      "parent_content_ids": "category.data.id",
      "string_attributes" : {
        "price": "price",
        "place": "place.data.attributes.name",
      },
      "localized_string_attributes" : {
        "information": "information.description",
        "category_name": "category.data.attributes.name",
        "category_slug": "category.data.attributes.slug",
        "img_thumbnail":"image.data.attributes.formats.thumbnail.url",
        "img_medium":"image.data.attributes.formats.medium.url",
        "img_small":"image.data.attributes.formats.small.url",
        "seo_meta_title": "seo.metaTitle",
        "seo_meta_description": "seo.metaDescription",
        "seo_keywords": "seo.keywords",
        "seo_canonical_url": "seo.canonicalURL"
      },
      "numeric_attributes": {
        "place_id":"place.data.id"
      },
      "raw": {
        "string_attributes": [
          "information",
          "blocks",
          "seo"
        ]
      }
    },
    "languages":{
      "de":"en",
      "fr":"fr-FR"
    }
  },
  {
    "connector": {
      "type": "strapi",
      "options": {
        "url": "https://api-0r3lf.strapidemo.com/api/categories",
        "token": "aa9e9646aba66edb7553d523d293cfd4239647d15c32c23de887ceb63dde23b5404f7d73bfbf2055141f93c1bffca5928477cfcc3e53072e796bce7adbf9e94dd1d2b12011fa9fe8f293fb8c3aa5dce191d354bc30d2caa691c30096df165771c0357acb2de6b8af081a23345bdb4b03f3f5d89011b85d36595a4a3e9e0a7861",
        "locales": ["en", "fr-FR"]
      }
    },
    "document" : {
      "type" : "content"
    },
    "mapping": {
      "title": "name",
      "link": "slug",
      "numeric_attributes": {
        "restaurant_ids":"restaurants.data[*].id",
        "article_ids":"articles.data[*].id"
      }
    },
    "languages":{
      "de":"en",
      "fr":"fr-FR"
    }
  }
]

The sample CURL request does not include the STRAPI connector details because the STRAPI connector is accessing a demo setup. As an integrator, you can create your own demo setup (https://strapi.io/demo ) in order to check their available data.

  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.