blob: b4602288e3e006ea4f7102c83275c0cca9177c3c [file] [log] [blame]
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
=== Graphql request examples
You can use embedded GraphiQL interface available at http://localhost:8181/graphql-ui or use any other GraphQL client using that url for requests.
==== Retrieving your first profile
Profile can be retrieved using `getProfile` query
[source,graphql]
----
query($profileID: CDP_ProfileIDInput!, $createIfMissing: Boolean) {
cdp {
getProfile(profileID: $profileID, createIfMissing: $createIfMissing) {
firstName
lastName
gender
cdp_profileIDs {
client {
ID
title
}
id
}
}
}
}
----
This query accepts two variables that need to be provided in the `Query variables` section:
[source,json]
----
{
"profileID": {
"client":{
"id": "defaultClientId"
},
"id": 1001
},
"createIfMissing": true
}
----
NOTE: If you don't want profile to be created if missing, set `createIfMissing` to `false`.
The response will look like this:
[source,json]
----
{
"data": {
"cdp": {
"getProfile": {
"firstName": null,
"lastName": null,
"gender": null,
"cdp_profileIDs": [
{
"client": {
"ID": "defaultClientId",
"title": "Default Client"
},
"id": "1001"
}
]
}
}
}
}
----
==== Updating profile
Now let's update our profile with some data.
It can be done using `processEvents` mutation:
[source,graphql]
----
mutation($events: [CDP_EventInput]!) {
cdp {
processEvents(events: $events)
}
}
----
This mutation accepts one variable that needs to be provided in the `Query variables` section:
[source,json]
----
{
"events": [
{
"cdp_objectID": 1001,
"cdp_profileID": {
"client": {
"id": "defaultClientId"
},
"id": 1001
},
"cdp_profileUpdateEvent": {
"firstName": "John",
"lastName": "Doe",
"gender": "Male"
}
}
]
}
----
The response will have the number of processed events:
[source,json]
----
{
"data": {
"cdp": {
"processEvents": 1
}
}
}
----
NOTE: `processEvents` accepts a number of other event types that are listed on `CDP_EventInput` type.
If you run the `getProfile` query again, you will see that the profile has been updated.
==== Restricted methods
Some methods are restricted to authenticated users only.
One example is `findProfiles` query:
[source,graphql]
----
query {
cdp {
findProfiles {
totalCount
edges {
node {
cdp_profileIDs {
client{
title
ID
}
id
}
}
}
}
}
}
----
And if you run it now, you will get an error.
To make this query work you need to supply authorization token in the `HTTP headers` section:
[source,json]
----
{
"authorization": "Basic a2FyYWY6a2FyYWY="
}
----
The above header adds `Basic` authorization scheme with base64 encoded `karaf:karaf` value to the request.
The result will now show the list of profiles:
[source,json]
----
{
"data": {
"cdp": {
"findProfiles": {
"totalCount": 1,
"edges": [
{
"node": {
"cdp_profileIDs": [
{
"client": {
"title": "Default Client",
"ID": "defaultClientId"
},
"id": "1001"
}
]
}
}
]
}
}
}
}
----
==== Deleting profile
Profile can be deleted using `deleteProfile` mutation:
[source,graphql]
----
mutation($profileID: CDP_ProfileIDInput!) {
cdp {
deleteProfile(profileID: $profileID)
}
}
----
This mutation accepts one variable that needs to be provided in the `Query variables` section:
[source,json]
----
{
"profileID": {
"client":{
"id": "defaultClientId"
},
"id": 1001
}
}
----
The response will show the result of the operation:
[source,json]
----
{
"data": {
"cdp": {
"deleteProfile": true
}
}
}
----
==== Where to go from here
* You can find more <<Useful Apache Unomi URLs,useful Apache Unomi URLs>> that can be used in the same way as the above examples.
* Read https://graphql.org/learn/[GraphQL documentation] to learn more about GraphQL syntax.