NAV
json

Introduction

Welcome to the Feedback API! You can use our API to access Feedback API endpoints, which can get information on various feedback in our database.

Authentication

/authenticate

Json exemple

{
  "email": "test@mail.com",
  "password": "myPassword"
}

API entrypoint to authenticate to Feedback

HTTP Request

POST https://api-feedback.satisfactory.fr/authenticate

Return of /authenticate :

{
  "data": [
    {
      "id": "0742b33c-11ac-11e8-b925-0242ac150000",
      "createdAt": "2018-02-14T22:17:40+00:00",
      "email": "test@mail.com",
      "accessToken": "6040468eb98e8faf7b8f634d27b5a30e"
    }
  ],
  "status": 200
}

Import

/import/client

API entrypoint to insert client

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

Json exemple

{
    "id": "myid",
    "email": "placeholder@mail.net",
    "lastname": "Lastname",
    "name": "Name",
    "tel": "0123456789",
    "experience": {
        "id": "azerty",
        "dateAnalyse": "1999-08-21T00:00:00-05:00",
        "source": "social network",
        "channel": "Google",
        "url": "https://google.com",
        "feedback": {
            "date": "2018-09-18T15:16:55+00:00",
            "answers": {
                "keyOfAnswer": 5
            }
        },
        "metadata": {
            "metadataName": "metadataValue"
        }
    }
}

Return of /import/client :

{
    "data": {
        "client": {
            "email": "placeholder@mail.net",
            "lastname": "Lastname",
            "name": "Name",
            "tel": "01234567_9",
            "uid": "23e68a06-bb55-11e8-96d1-0242ac130002",
            "id": "myid"
        },
        "experience": {
            "uid": "23e6a74c-bb55-11e8-96d1-0242ac130002",
            "id": "azerty",
            "dateAnalyse": "1999-08-21T00:00:00+00:00",
            "source": "social network",
            "channel": "Google",
            "url": "https://google.com"
        },
        "feedback": {
            "id": "e0eb4748-bb55-11e8-96d1-0242ac130002",
            "date": "2018-09-18T15:16:55+00:00",
            "answers": [
                {
                    "id": "e11a1cca-bb55-11e8-96d1-0242ac130002",
                    "container": {
                        "id": "248f4bb2-8f40-11e8-8abf-525400008877",
                        "name": "keyOfAnswer",
                        "type": "string"
                    },
                    "value": 5
                }
            ]
        },
        "metadata": {
            "metadataName": "metadataValue"
        }
    },
    "status": 201,
    "message": ""
}

HTTP Request

POST https://api-feedback.satisfactory.fr/import/client

Json explanation

In experience:

In feedback:

Mandatory information:

/urlisation

API entrypoint to get unique url for new client

HTTP Request

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

POST https://api-feedback.satisfactory.fr/urlisation

Json example

[{
    "id": "myid",
    "idSurvey": 1234567890,
    "email": "placeholder@mail.net",
    "lastname": "Lastname",
    "name": "Name",
    "tel": "0123456789",
    "experience": {
        "id": "azerty",
        "dateAnalyse": "1999-08-21T00:00:00-05:00",
        "metadata": {
            "metadataName": "metadataValue"
        }
    }
},
{
    "idSurvey": 1234567890,
    "email": "placeholder2@mail.net",
    "lastname": "Lastname",
    "name": "Name",
    "tel": "0123456789",
    "experience": {
        "id": "azerty",
        "dateAnalyse": "1999-08-21T00:00:00-05:00",
        "metadata": {
            "metadataName": "metadataValue"
        }
    }
}]

Json return example

{
    "data": {
        "error": [
            {
                "json": {
                    "idSurvey": 1234567890,
                    "email": "placeholder2@mail.net",
                    "lastname": "Lastname",
                    "name": "Name",
                    "tel": "0123456789",
                    "experience": {
                        "id": "azerty",
                        "dateAnalyse": "1999-08-21T00:00:00-05:00",
                        "metadata": {
                            "metadataName": "metadataValue"
                        }
                    }
                },
                "message": [
                    "[id] This field is missing.\n"
                ]
            }
        ],
        "success": [
            {
                "id": "myid",
                "link": "https://myurl.com/azerty"
            }
        ]
    },
    "status": 200,
    "message": ""
}

Input json explanation

In experience:

Mandatory information:

Output json explanation

You have an array of id and link un success in data['success'] and the list of error in data['error'] with the error message and the failed json.

/import/semantics

API entrypoint to insert semantic codifications

HTTP Request

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

POST https://api-feedback.satisfactory.fr/v1/import/semantics

Json example

[
    {
        "experienceId": "2_1485820",
        "semantics": [
            {
                "parentCode": "azerty",
                "childCode": "qwerty",
                "tonality": "-",
                "originalAnswerId": "1b6c14f1-7bee-11e9-8abf-525400008877"
            },
            {
                "parentCode": "bépo",
                "childCode": "fr",
                "tonality": "+",
                "originalAnswerId": "1b6c14f1-7bee-11e9-8abf-525400008877"
            }
        ]
    }
]

Input json explanation

Json return example

{
    "data": [
        {
            "client": {
                "email": "yoyo@toto.fr",
                "lastname": "Client",
                "name": "Name",
                "tel": "0123456789",
                "uid": "0000e588-7bbe-11e9-8abf-525400008877",
                "id": "yoyo@toto.fr"
            },
            "experience": {
                "uid": "0001acef-7bbe-11e9-8abf-525400008877",
                "id": "experience_id",
                "dateAnalyse": "2019-05-19T13:17:00+00:00",
                "createdAt": "2019-05-21T13:45:00+00:00"
            },
            "feedback": {
                "id": "0002d8da-7bbe-11e9-8abf-525400008877",
                "date": "2019-05-21T13:45:00+00:00",
                "answers": [
                    ...
                    {
                        "id": "1b6c14f1-7bee-11e9-8abf-525400008877",
                        "container": {
                            "id": "f1124659-4a93-11e9-8abf-525400008877",
                            "name": "Ce que vous avez aimé",
                            "wsName": "keyOfAnswer",
                            "type": "string",
                            "min": null,
                            "max": null
                        },
                        "value": "Le personnel"
                    },
                    ...
                    {
                        "id": "a2a4d9c5-28b8-11eb-a121-0242ac130002",
                        "container": {
                            "id": "73b0ee00-9367-11e9-8abf-525400008877",
                            "name": "Ce que vous avez aimé",
                            "wsName": "keyOfSemanticAnswer",
                            "type": "semantic",
                            "min": null,
                            "max": null
                        },
                        "parentCode": "azerty",
                        "childCode": "qwerty",
                        "tonality": "-",
                        "start": null,
                        "length": null
                    },
                    {
                        "id": "a2a511a0-28b8-11eb-a121-0242ac130002",
                        "container": {
                            "id": "73b0ee00-9367-11e9-8abf-525400008877",
                            "name": "Ce que vous avez aimé",
                            "wsName": "keyOfSemanticAnswer",
                            "type": "semantic",
                            "min": null,
                            "max": null
                        },
                        "parentCode": "bépo",
                        "childCode": "fr",
                        "tonality": "+",
                        "start": null,
                        "length": null
                    }
                ],
                "alert": null
            }
        }
    ],
    "status": 200,
    "message": ""
}

Output Json explanation

In experience:

In feedback:

Experience

GET /experiences (V2)

API entrypoint to get the list of experience

HTTP Request

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

GET https://api-feedback.satisfactory.fr/experiences?version=2

Json filters example

{
    "date": {
        "start": "2019-03-04T00:00:00%252b01:00",
        "end": "2019-03-08T23:59:59%252b01:00"
    },
    "metadata": {
        "metadata1": ["value1", "value2"],
        "metadata2": ["value3"]
    }
}

Json search example

{
    "metadata": "test"
}

Query string

Complete url examples:

Get 50 experiences from the number 1000 in alert from 2019-03-04 to 2019-03-08 with metadata1 = value1 or value 2 and metadata2 = value3 and with test in their metadata value or client information

GET https://api-feedback.satisfactory.fr/experiences?version=2&from=1000&size=50&alert=1&filters={"date":{"start":"2019-03-04T00:00:00%252b01:00","end":"2019-03-08T23:59:59%252b01:00"},"metadata":{"metadata1":["value1","value2"],"metadata2":["value3"]}}&search={"metadata":"test"}

Get 100 experiences from the begining, it can be in alert or not with no filters or search value.

GET https://api-feedback.satisfactory.fr/experiences?version=2&from=0&size=100

Json return example

{
    "data": {
        "items": [{
            "experience": {
                "id": "idExperience",
                "dateBegin": null,
                "dateEnd": null,
                "source": "social network",
                "channel": "Facebook",
                "client": {
                    "email": "noreply@mail.net",
                    "lastname": "lastname",
                    "name": "name",
                    "tel": null,
                    "uid": "17c81a46-3ecd-11e9-8abf-525400008877",
                    "id": "idClient"
                },
                "metadata": [{
                    "valueString": "value1",
                    "name": "meta1",
                    "id": "17c96de7-3ecd-11e9-8abf-525400008877",
                    "valueDate": null,
                    "valueInt": null,
                    "category": "site"
                }, {
                    "valueString": null,
                    "name": "meta2",
                    "id": "17c9898f-3ecd-11e9-8abf-525400008877",
                    "valueDate": null,
                    "valueInt": 2,
                    "category": "customer"
                }],
                "feedback": [{
                    "date": "2019-03-04T22:29:09+00:00",
                    "treatment": null,
                    "alert": null,
                    "answers": [{
                            "valueString": {
                                "semantics": [
                                    {
                                        "parentCode": "Parent code",
                                        "childCode": "Child code",
                                        "length": null,
                                        "start": null,
                                        "tonality": "+"
                                    },
                                    {
                                        "parentCode": "Parent code 1",
                                        "childCode": "Child code 1",
                                        "length": null,
                                        "start": null,
                                        "tonality": "-"
                                    }
                                ],
                                "value": "Value String with semantics"
                            },
                            "name": "name",
                            "id": "08b445b1-44d0-11e9-8abf-525400008877",
                            "type": "string",
                            "valueInt": null,
                            "wsName": "wsName"
                        },
                        {
                            "valueString": {
                                "value": "value String",
                                "semantics": []
                            },
                            "name": "name semantic",
                            "id": "16f22572-457e-11e9-8abf-525400008877",
                            "type": "string",
                            "valueInt": null,
                            "wsName": "name_string"
                        },
                        {
                            "valueString": null,
                            "name": "name valueInt",
                            "id": "16f22571-457e-11e9-8abf-525400008877",
                            "type": "int",
                            "valueInt": 4,
                            "wsName": "name_int"
                        }
                    ],
                    "id": "17cd9293-3ecd-11e9-8abf-525400008877",
                    "interactions": []
                }]
            },
            "id": "id"
        }, {
            "experience": {
                "id": "idExperience2",
                "dateBegin": null,
                "dateEnd": null,
                "source": "social network",
                "channel": "Twitter",
                "client": {
                    "email": "test@mail.com",
                    "lastname": "Lastname2",
                    "name": "name2",
                    "tel": null,
                    "uid": "17c81a46-3ecd-11e9-8abf-525400008877",
                    "id": "idClient2"
                },
                "metadata": [{
                    "valueString": "value3",
                    "name": "meta1",
                    "id": "17c96de7-3ecd-11e9-8abf-525400008877",
                    "valueDate": null,
                    "valueInt": null,
                    "category": "site"
                }, {
                    "valueString": null,
                    "name": "meta2",
                    "id": "17c9898f-3ecd-11e9-8abf-525400008877",
                    "valueDate": null,
                    "valueInt": 10,
                    "category": "customer"
                }],
                "feedback": [{
                    "date": "2019-03-04T22:29:09+00:00",
                    "treatment": {
                        "id": "1fc35034-2ea9-11e9-525400008877",
                        "status": "treated",
                        "createdAt": "2019-03-05T10:00:00+00:00",
                        "updatedAt": "2019-03-05T10:00:00+00:00"
                    },
                    "alert": "f965e163-4a4b-8abf-525400008877",
                    "answers": [{
                        "valueString": {
                            "value": "value2",
                            "semantics": []
                        },
                        "name": "name",
                        "id": "08b445b1-44d0-11e9-8abf-525400008877",
                        "type": "string",
                        "valueInt": null,
                        "wsName": "wsName"
                    }],
                    "id": "17cd9293-3ecd-11e9-8abf-525400008877",
                    "interactions": [{
                        "user": {"name": "Customer Service"},
                        "type": "note",
                        "date": "2019-03-05T10:00:00+00:00",
                        "comment": "interaction with client"
                    }]
                }]
            },
            "id": "id"
        }],
        "total": 50
    },
    "status": 200,
    "message": ""
}

Output json

You have the data requested in the key data.

The data key contains:

The experience key contains:

A Feedback contains:

GET /experiences (V1) /experiences?version=1

API entrypoint to get the list of experience

HTTP Request

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

GET https://api-feedback.satisfactory.fr/experiences Or GET https://api-feedback.satisfactory.fr/experiences?version=1

Json filters example

{
    "date": {
        "start": "2019-03-04T00:00:00%252b01:00",
        "end": "2019-03-08T23:59:59%252b01:00"
    },
    "metadata": {
        "metadata1": ["value1", "value2"],
        "metadata2": ["value3"]
    }
}

Json search example

{
    "metadata": "test"
}

Query string

Complete url examples:

Get 50 experiences from the number 1000 in alert from 2019-03-04 to 2019-03-08 with metadata1 = value1 or value 2 and metadata2 = value3 and with test in their metadata value or client information

GET https://api-feedback.satisfactory.fr/experiences?from=1000&size=50&alert=1&filters={"date":{"start":"2019-03-04T00:00:00%252b01:00","end":"2019-03-08T23:59:59%252b01:00"},"metadata":{"metadata1":["value1","value2"],"metadata2":["value3"]}}&search={"metadata":"test"} Or GET https://api-feedback.satisfactory.fr/experiences?version=1&from=1000&size=50&alert=1&filters={"date":{"start":"2019-03-04T00:00:00%252b01:00","end":"2019-03-08T23:59:59%252b01:00"},"metadata":{"metadata1":["value1","value2"],"metadata2":["value3"]}}&search={"metadata":"test"}

Get 100 experiences from the begining, it can be in alert or not with no filters or search value.

GET https://api-feedback.satisfactory.fr/experiences?from=0&size=100 Or GET https://api-feedback.satisfactory.fr/experiences?version=1&from=0&size=100

Json return example

{
    "data": {
        "items": [{
            "experience": {
                "id": "idExperience",
                "dateBegin": null,
                "dateEnd": null,
                "source": "social network",
                "channel": "Google",
                "client": {
                    "email": "noreply@mail.net",
                    "lastname": "lastname",
                    "name": "name",
                    "tel": null,
                    "uid": "17c81a46-3ecd-11e9-8abf-525400008877",
                    "id": "idClient"
                },
                "metadata": [{
                    "valueString": "value1",
                    "name": "meta1",
                    "id": "17c96de7-3ecd-11e9-8abf-525400008877",
                    "valueDate": null,
                    "valueInt": null,
                    "category": "site"
                }, {
                    "valueString": null,
                    "name": "meta2",
                    "id": "17c9898f-3ecd-11e9-8abf-525400008877",
                    "valueDate": null,
                    "valueInt": 2,
                    "category": "customer"
                }],
                "feedback": [{
                    "date": "2019-03-04T22:29:09+00:00",
                    "treatment": null,
                    "alert": null,
                    "answers": [{
                            "valueString": "value1",
                            "valueSemantic": null,
                            "name": "name",
                            "id": "08b445b1-44d0-11e9-8abf-525400008877",
                            "type": "string",
                            "valueInt": null,
                            "wsName": "wsName"
                        },
                        {
                            "valueString": null,
                            "valueSemantic": {
                                "originalAnswer": "08b445b1-44d0-11e9-_ABF-525400008877",
                                "parentCode": "Code parent",
                                "childCode": "Code enfant",
                                "length": null,
                                "start": null,
                                "tonality": "+"
                            },
                            "name": "name semantic",
                            "id": "16f22570-457e-11e9-8abf-525400008877",
                            "type": "semantic",
                            "valueInt": null,
                            "wsName": "name_semantic"
                        }
                    ],
                    "id": "17cd9293-3ecd-11e9-8abf-525400008877",
                    "interactions": []
                }]
            },
            "id": "id"
        }, {
            "experience": {
                "id": "idExperience2",
                "dateBegin": null,
                "dateEnd": null,
                "source": "social network",
                "channel": "TripAdvisor",
                "client": {
                    "email": "test@mail.com",
                    "lastname": "Lastname2",
                    "name": "name2",
                    "tel": null,
                    "uid": "17c81a46-3ecd-11e9-8abf-525400008877",
                    "id": "idClient2"
                },
                "metadata": [{
                    "valueString": "value3",
                    "name": "meta1",
                    "id": "17c96de7-3ecd-11e9-8abf-525400008877",
                    "valueDate": null,
                    "valueInt": null,
                    "category": "site"
                }, {
                    "valueString": null,
                    "name": "meta2",
                    "id": "17c9898f-3ecd-11e9-8abf-525400008877",
                    "valueDate": null,
                    "valueInt": 10,
                    "category": "customer"
                }],
                "feedback": [{
                    "date": "2019-03-04T22:29:09+00:00",
                    "treatment": {
                        "id": "1fc35034-2ea9-11e9-525400008877",
                        "status": "treated",
                        "createdAt": "2019-03-05T10:00:00+00:00",
                        "updatedAt": "2019-03-05T10:00:00+00:00"
                    },
                    "alert": "f965e163-4a4b-8abf-525400008877",
                    "answers": [{
                        "valueString": "value2",
                        "valueSemantic": null,
                        "name": "name",
                        "id": "08b445b1-44d0-11e9-8abf-525400008877",
                        "type": "string",
                        "valueInt": null,
                        "wsName": "wsName"
                    }],
                    "id": "17cd9293-3ecd-11e9-8abf-525400008877",
                    "interactions": [{
                        "user": {"name": "Customer Service"},
                        "type": "note",
                        "date": "2019-03-05T10:00:00+00:00",
                        "comment": "interaction with client"
                    }]
                }]
            },
            "id": "id"
        }],
        "total": 50
    },
    "status": 200,
    "message": ""
}

Output json

You have the data requested in the key data.

The data key contains:

The experience key contains:

A Feedback contains:

Structure of answer type string V1 vs V2

{
    "valueString": null,
    "valueSemantic": {
        "originalAnswer": "08b445b1-44d0-11e9-_ABF-525400008877",
        "parentCode": "Code parent",
        "childCode": "Code enfant",
        "length": null,
        "start": null,
        "tonality": "+"
    },
    "name": "name semantic",
    "id": "16f22570-457e-11e9-8abf-525400008877",
    "type": "semantic",
    "valueInt": null,
    "wsName": "name_semantic"
}

Becomes:

{
    "valueString": {
        "value": "toto",
        "semantics": [
            {
                "parentCode": "Code parent",
                "childCode": "Code enfant",
                "length": null,
                "start": null,
                "tonality": "+"
            }
        ]
    },
    "name": "name semantic",
    "id": "16f22570-457e-11e9-8abf-525400008877",
    "type": "semantic",
    "valueInt": null,
    "wsName": "name_semantic"
}

DELETE /experiences/{experienceId}

API entrypoint to delete an experience by his Id

HTTP Request

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

DELETE https://api-feedback.satisfactory.fr/experiences/{experienceId}

Json return example

{
  "data":[],
  "status":200,
  "message":""
}

Output json explanation

Interaction

POST /feedback/{id}/interaction

API entrypoint to post an interaction to a feedback

HTTP Request

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

POST https://api-feedback.satisfactory.fr/feedback/{id}/interaction

Json example

{
  "status": "inprogress",
  "type": "note",
  "comment": "my comment"
}
{
  "status": "treated",
  "type": "email",
  "subject": "The subject of the mail",
  "message": "The content of the mail",
  "receiver": "client@mail.com"
}

Json return example

{
    "data": [{
        "id": "218f7271-7272-11e9-999d-0242ac130004",
        "date": "2019-05-09T15:51:20+00:00",
        "type": "note",
        "user": {
            "name": null
        },
        "comment": "my comment"
    }],
    "status": 200,
    "message": ""
}
{
    "data": [{
        "id": "24c3fc4b-7271-11e9-999d-0242ac130004",
        "date": "2019-05-09T15:44:16+00:00",
        "type": "email",
        "user": {
            "name": null
        },
        "subject": "The subject of the mail",
        "message": "The content of the mail",
        "sender": {
            "name": "SatisFactory",
            "email": "noreply@satisfactory.fr"
        },
        "receiver": "client@mail.com",
        "replyTo": "feedback-belambra@satisfactory.fr"
    }],
    "status": 200,
    "message": ""
}

Input json explanation

Output json explanation

You will receive a summary of the interaction you put in the json returned.

POST /api/experience/{experienceId}/interaction

API V2 entrypoint to post a social network interaction in an experience

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

POST https://api-feedback.satisfactory.fr/v2/api/experience/{id}/interaction

Json example

{
  "message": "azerty" 
}

Json return example json { "data": "", "status": 201, "message": "" }

Output json explanation

User

GET /users

API entrypoint to get the list of users

HTTP Request

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

GET https://api-feedback.satisfactory.fr/users/

Query string

Complete url examples :

Get 2 users from the number 100 :

GET https://api-feedback.satisfactory.fr/user?from=100&size=2

Get a user with the name johnDoe:

GET https://api-feedback.satisfactory.fr/users?search={"search":"johnDoe"}?size=1

Json return example

{
  "data": [
      {
          "id": "6831f318-e467-11e9-be1c-0242ac130004",
          "name": "XXXX Xxx",
          "createdAt": "2019-10-02T08:02:29+00:00",
          "email": "xxx1.xx@xx.fr",
          "apiKey": "45521bca17fa34857671f5f36493b94",
          "accessToken": "cfdqsc189a793244ad8668ziujb765e0e",
          "initialPage": "",
          "perimeter": [
              "id": "69a655f8-e680-11e9-a8c2-5251229818877",
              "value": "DEA",
              "metadata": {
                  "id": "52cccefe-b792-11e9-8666-521229818877",
                  "name": "meta_name",
                  "type": "string",
                  "createdAt": "2019-08-05T17:04:29+00:00",
                  "isFilterable": false,
                  "isMandatory": false,
                  "isPrivate": false,
                  "category": "site"
              }
          ],
          "profile": {
              "id": "f8814c20-12b5-11e9-8abf-52541118877",
              "name": "admin",
              "profileRule": {
                "semantic_getSemantic": 1,
                "user_logout": 1
              }
          },
          "comparisonPerimeter": {
                "id": "69ac97d8-e680-11e9-a8c2-525400008877",
                "comparisonPerimeterMetadata": [
                    {
                        "id": "69156ee8-e680-11e9-a8c2-525400118877",
                        "value": "TRO",
                        "metadata": "meta_name"
                    },
                    {
                        "id": "69cln99ee-e680-11e9-a8c2-52541108877",
                        "value": "BDT",
                        "metadata": "meta_name"
                    }
                ],
                "name": "Casino"
            },
          "perimeterDefinition": "Portugal009#country=Portugal&store_id=009",
          "comparisonPerimeter": "Portugal#country=Portugal",
          "notificationAlert": false
      },
      {
          "id": "6831f318-e467-11e9-be1c-0242ac130004",
          "name": "User test",
          "createdAt": "2019-10-02T08:02:29+00:00",
          "email": "user1@anonym.fr",
          "apiKey": "45521bca17fa34857671f5f36493b94",
          "accessToken": "cfdqsc189a793244ad8668ziujb765e0e",
          "initialPage": "",
          "perimeter": [],
          "profile": {
              "id": "6831f318-e467-11e9-be1c-0242ac130004",
              "name": "admin",
              "profileRule": {
                 "metadata_putMetadata": 1,
                 "datascience_notification_list": 1,
                 "user_import_get": 1,
                 "metadata_management": 1,
                 "semantic_getSemantic": 1,
                 ...
              }
          },
        "perimeterDefinition": "Portugal009#country=Portugal&store_id=009",
        "comparisonPerimeter": "Portugal#country=Portugal",
        "notificationAlert": true
      }
  ],
  "status":200,
  "message":""
}

Output json explanation

You have the data requested in the key data.

The data key contains:

The user key contains:

The profile data contains:

POST /users/manage

API entrypoint to create / update users

HTTP Request

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

POST https://api-feedback.satisfactory.fr/users/manage

Json example

[
    {
        "email": "xxx1.xx@xx.fr",
        "name": "XXXX Xxx",
        "profile": "admin",
        "perimeterDefinition": "admin",
        "comparisonPerimeter": ""
    },
    {
        "email": "user1@anonym.fr",
        "name": "User test",
        "profile": "admin",
        "perimeterDefinition": "admin",
        "comparisonPerimeter": ""
    },
    {
        "email": "user2@anonym.fr",
        "name": "User2 test",
        "profile": "",
        "perimeterDefinition": "Portugal009#country=Portugal&store_id=009",
        "comparisonPerimeter": "Portugal#country=Portugal"
    }
]

Json return example

{
    "data": [
        {
            "profile": "admin",
            "perimeter": "admin",
            "email": "xxx1.xx@xx.fr",
            "perimeterComparson": null,
            "name": "XXXX Xxx",
            "info": "Created"
        },
        {
            "profile": "admin",
            "perimeter": "admin",
            "email": "user1@anonym.fr",
            "perimeterComparson": null,
            "name": "User test",
            "info": "Updated"
        },
        {
            "email": "user2@anonym.fr",
            "name": "User2 test",
            "profile": "",
            "perimeterDefinition": "Portugal009#country=Portugal&store_id=009",
            "comparisonPerimeter": "Portugal#country=Portugal",
            "errors": [
                "Profile is missing",
                "Profile does not exist",
                "Metadata wrong_metadata does not exist"
            ]
        }
    ],
    "status": 200,
    "message": ""
}

Input json explanation

Output json explanation

DELETE /users/{userId}

API entrypoint to delete a user by Id

HTTP Request

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

DELETE https://api-feedback.satisfactory.fr/users/{userId}

Json return example

{
  "data":[],
  "status":200,
  "message":""
}

Output json explanation

Clients

GET /clients

API entrypoint to get the list of clients

HTTP Request

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

GET https://api-feedback.satisfactory.fr/clients

Json filters example

{
    "date": {
        "start": "2019-03-04T00:00:00%252b01:00",
        "end": "2019-03-08T23:59:59%252b01:00"
    },
    "metadata": {
        "metadata1": ["value1", "value2"],
        "metadata2": ["value3"]
    }
}

Query string

Complete url examples:

Get 50 clients from the number 1000 in alert from 2019-03-04 to 2019-03-08 with metadata1 = value1 or value 2 and metadata2 = value3 and with test in their metadata value or client information

GET https://api-feedback.satisfactory.fr/clients?from=1000&size=50&filters={"date":{"start":"2019-03-04T00:00:00%252b01:00","end":"2019-03-08T23:59:59%252b01:00"},"metadata":{"metadata1":["value1","value2"],"metadata2":["value3"]}}

Get 100 clients from the first without filters

GET https://api-feedback.satisfactory.fr/clients?from=0&size=100

Json return example

{
    "data": {
        "items": [{
            "experience": {
                "id": "idExperience",
                "dateBegin": null,
                "dateEnd": null,
                "source": "My Source",
                "channel": "Email",
                "client": {
                    "email": "noreply@mail.net",
                    "lastname": "lastname",
                    "name": "name",
                    "tel": null,
                    "uid": "17c81a46-3ecd-11e9-8abf-525400008877",
                    "id": "idClient"
                },
                "metadata": [{
                    "valueString": "value1",
                    "name": "meta1",
                    "id": "17c96de7-3ecd-11e9-8abf-525400008877",
                    "valueDate": null,
                    "valueInt": null,
                    "category": "site"
                }, {
                    "valueString": null,
                    "name": "meta2",
                    "id": "17c9898f-3ecd-11e9-8abf-525400008877",
                    "valueDate": null,
                    "valueInt": 2,
                    "category": "customer"
                }],
                "feedback": [{
                    "date": "2019-03-04T22:29:09+00:00",
                    "treatment": null,
                    "alert": null,
                    "answers": [{
                            "valueString": {
                                "value": "value1",
                                "semantics": [
                                    {
                                        "parentCode": "Code parent",
                                        "childCode": "Code enfant",
                                        "length": null,
                                        "start": null,
                                        "tonality": "+"
                                    }
                                ]
                            },
                            "name": "name",
                            "id": "08b445b1-44d0-11e9-8abf-525400008877",
                            "type": "string",
                            "valueInt": null,
                            "wsName": "wsName"
                        }
                    ],
                    "id": "17cd9293-3ecd-11e9-8abf-525400008877",
                    "interactions": []
                }]
            },
            "id": "id"
        }, {
            "experience": {
                "id": "idExperience2",
                "dateBegin": null,
                "dateEnd": null,
                "source": "My Source",
                "channel": "SMS",
                "client": {
                    "email": "test@mail.com",
                    "lastname": "Lastname2",
                    "name": "name2",
                    "tel": null,
                    "uid": "17c81a46-3ecd-11e9-8abf-525400008877",
                    "id": "idClient2"
                },
                "metadata": [{
                    "valueString": "value3",
                    "name": "meta1",
                    "id": "17c96de7-3ecd-11e9-8abf-525400008877",
                    "valueDate": null,
                    "valueInt": null,
                    "category": "site"
                }, {
                    "valueString": null,
                    "name": "meta2",
                    "id": "17c9898f-3ecd-11e9-8abf-525400008877",
                    "valueDate": null,
                    "valueInt": 10,
                    "category": "customer"
                }],
                "feedback": []
            },
            "id": "id"
        }],
        "total": 50
    },
    "status": 200,
    "message": ""
}

Output json

You have the data requested in the key data.

The data key contains:

The experience key contains:

A Feedback contains:

Client Raw Data

POST /client_raw_datas

API entrypoint to post raw data

HTTP Request

Content-Type: application/json
Authorization: [ACCESS_TOKEN]

POST https://api-feedback.satisfactory.fr/v2/api/client_raw_datas

Json example

{
  "data": {
    "data1": "value1",
    "data2": 1,
    "data3": "value3",
    "data4": "",
    "data5": "value5",
    "data6": "value 6",
    "data7": "2021-07-01T16:07:20Z"
  }
}

Input json explanation

The raw data must be in the data key

Output

If the data is accepted, you will have a 202 ACCEPTED http response.

Errors

The Feedback API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- The document requested is hidden for administrators only.
404 Not Found -- The specified document could not be found.
405 Method Not Allowed -- You tried to access a document with an invalid method.
406 Not Acceptable -- You requested a format that isn't json.
410 Gone -- The document requested has been removed from our servers.
418 I'm a teapot.
429 Too Many Requests -- You're requesting too many documents! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.