π¨βπ»For Developers
In this guide, we provide detailed instructions for connecting a Data Holder to MyDataCoin Bridge and receiving requests.
ProfileDisclaimer: The development team is working diligently, and the documentation will be updated with each new release.
Table of contents:
System Requirements
Hardware: CPU: Intel Core i3 or AMD Ryzen 3.
RAM: At least 4GB.
HDD: 20GB free space. 64-bit kernel and CPU support for virtualization.
Overview
This guide provides a comprehensive explanation of how to effectively interact with the MyDataCoin ecosystem. To integrate successfully, you will need to set up an endpoint that can receive POST requests, which will, in turn, return the response described in the sections below.
Install Docker
Please select the appropriate link for your operation system and follow the provided instructions to install Docker:
For Linux: Docker Installation Instructions for Linux
If you use Ubuntu, and have a following error:
E: Package 'docker-ce' has no installation candidate
E: Unable to locate package docker-ce-cli
E: Unable to locate package containerd.io
E: Couldn't find any package by glob 'containerd.io'
E: Couldn't find any package by regex 'containerd.io'
E: Unable to locate package docker-buildx-plugin
E: Unable to locate package docker-compose-plugin
please visit: Link.
For Windows: Docker Installation Instructions for Windows
For macOS: Docker Installation Instructions for macOS
Installing Docker Compose
To make sure you obtain the most updated stable version of Docker Compose, youβll download this software from its official Github repository.
First, confirm the latest version available in their releases page. At the time of this writing, the most current stable version is 1.29.2
.
The following command will download the 1.29.2
release and save the executable file at /usr/local/bin/docker-compose
, which will make this software globally accessible as docker-compose
:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Next, set the correct permissions so that the docker-compose
command is executable:
sudo chmod +x /usr/local/bin/docker-compose
To verify that the installation was successful, you can run:
docker-compose --version
Setup Docker
Before you begin, make sure that you have an Secret Token. You should have received this token after completing the registration process, as described here.
After Docker successfully installed, you need to download docker-compose.yml from our official repository:
git clone https://github.com/MyDataCoin/mdc-docker
Open docker-compose.yml file to make changes;
Get your Secret Token from https://app.mydatacoin.io/settings. You will find it in Settings tab;
Put the token in AUTH_TOKEN env variable.
After you made changes, save the file and run the following command in terminal:
docker-compose up -d
Be sure, that port 8000 is open and ready for inbound connections. To change the settings, run the command: sudo ufw allow 8000/tcp
Upload a DataSet
Please ensure that you create a DataProvider entity in the Marketplace before uploading any datasets. To proceed, please provide your company information here.
Important! The data you upload will not be transferred to us or any third parties; it will be stored in your Docker container.
To prepare the data monetization process, you need to prepare a JSON file with data in the format User Model shown below.
After docker successfully started, you need to open browser and input the following url: http://your_server_address:8000/upload, then you'll see following page:
Put your Secret Token in the Secret Token field and give your dataset a name, choose a dataset you've prepared and press Upload.
Now you ready to go! Please feel free to ask any questions about integration process. Send us email to as@mydatacoin.io
User model sample
Json User Model
[
{
"profile":{
"recordId": "1" or "dd3cc469-096f-4b9e-a8fb-ce5ef32c5642",
"firstName":"John",
"lastName":"Doe",
"dateOfBirth":"1999-09-09T00:00:00Z",
"gender":null,
"email":"sagynbaev6@mail.com",
"phone":"+7(777)222-33-44",
"maritalStatus":0,
"income":0
},
"basicData":{
"interests":null,
"languages":null,
"religionViews":null,
"politicalViews":null
},
"contacts":{
"mobilePhone":null,
"address":null,
"linkedAccounts":null,
"website":null
},
"workAndEducation":{
"placeOfWork":null,
"skills":null,
"university":null,
"faculty":null
},
"placeOfResidence":{
"currentCity":null,
"birthPlace":null,
"otherCities":null
},
"personalInterests":{
"briefDescription":null,
"hobby":null,
"sport":null
},
"deviceInformation":{
"operatingSystem":null,
"displayResolution":null,
"browser":null,
"iSP":null,
"adBlock":false
},
"cookies":{
"sessionState":null,
"language":null,
"region":null,
"recentPages":null,
"shoppingCart":[
{
"productId":null,
"productName":"maxsimus1",
"productPrice":null,
"quantity":null,
"subTotal":null,
"total":null,
"couponCode":null,
"shippingInformation":null,
"taxInformation":null
},
{
"productId":null,
"productName":"maxsimus",
"productPrice":6565,
"quantity":null,
"subTotal":null,
"total":null,
"couponCode":null,
"shippingInformation":null,
"taxInformation":null
}
]
}
},
{
"profile":{
"firstName":"Jason",
"lastName":"Cropp",
"dateOfBirth":"2002-11-09T00:00:00Z",
"gender":null,
"email":[
"amaymon02@mail.ru"
],
"phone":[
"+77443332424",
"+996222334455"
],
"maritalStatus":0,
"income":0
},
"basicData":{
"interests":null,
"languages":null,
"religionViews":null,
"politicalViews":null
},
"contacts":{
"mobilePhone":"IPHONE13",
"address":null,
"linkedAccounts":null,
"website":null
},
"workAndEducation":{
"placeOfWork":null,
"skills":null,
"university":"KNU",
"faculty":null
},
"placeOfResidence":{
"currentCity":null,
"birthPlace":"bishkek",
"otherCities":null
},
"personalInterests":{
"briefDescription":null,
"hobby":[
"biohacking"
],
"sport":[
"boxing"
]
},
"deviceInformation":{
"operatingSystem":null,
"displayResolution":null,
"browser":null,
"iSP":null,
"adBlock":true
},
"cookies":{
"sessionState":null,
"language":null,
"region":"chui area",
"recentPages":null,
},
"shoppingCart":[
{
"productId":1,
"productName":"pen",
"productPrice":12,
"quantity":2,
"subTotal":24,
"total":null,
"couponCode":null,
"shippingInformation":null,
"taxInformation":null
},
{
"productId":2,
"productName":"cup",
"productPrice":30,
"quantity":1,
"subTotal":null,
"total":null,
"couponCode":null,
"shippingInformation":null,
"taxInformation":null
}
]
}
]
Model details:
Profile
BasicData
Contacts
WorkAndEducation
PlaceOfResidence
PersonalInterests
DeviceInformation
Cookies
ShoppingCart
MaritalStatus
Marital status is a characteristic that reflects a person's marital status. Depending on the country and culture, there are different categories of marital statuses. Some of them may include:
Add Records
These two methods serve to update and add users, add user api/v1/insert
serves so that you do not have to form json every time and fill it with the /upload
method, instead you can simply write a function that will be executed when you add a new user to the database, that is, you simply add to yours and simultaneously make a request to our database data, in the future this will free you from the constant updating of data.
Inserts new user profile
POST
https://your-ip-address:your-port/api/v1/insert
All the body parameters described in User Model
Headers
Request Body
{
"success": "profile add successfully"
}
# error occurs only when recordId already exists in the database
{
"error": "this user in already have in database"
}
# Check if the provided token in the 'Authorization' header does not match the expected 'auth_token'.
# If it doesn't match, return an error response indicating "Invalid token".
# The status code is set to 401 (Unauthorized).
{
'error': 'Invalid token',
'details': "The token provided in the 'Authorization' header is invalid"
}
# Check if the 'Content-Type' header of the request is not set to 'application/json'.
# If it's not set correctly, return an error response indicating "Unsupported Media Type".
# The status code is set to 415 (Unsupported Media Type).
{
'error': 'Unsupported Media Type',
'details': "The 'Content-Type' header must be set to 'application/json'"
}
"An error occurred while processing the data: {}" and error in brackets
curl -X PUT "http://your-server-ip:8000/api/v1/insert" \
-H "Authorization: your_auth_token_here" \
-H "Content-Type: application/json" \
-d '{
"profile": {
"recordId": "54",
"firstName": "Alex",
"lastName": "Vishnevski",
"dateOfBirth": "2002-11-09T00:00:00Z",
"gender": 1,
"email": ["amaymon02@mai8.ru"],
"phone": ["+996222116992", "+996555848652"],
"maritalStatus": 0,
"income": 0
},
"basicData": {
"interests": ["hobbyhorsing","boxing"],
"languages": ["english", "indian"],
"religionViews": ["Atheist","Agnostik"],
"politicalViews": ["liberal"]
},
"contacts": {
"mobilePhone": "IPHONE13",
"address": "avenue 13",
"linkedAccounts": ["https://www.tiktok.com/@angiejoliefan?is_from_webapp=1&sender_device=pc"],
"website": "http://flibusta.site/b/668844/read"
},
"workAndEducation": {
"placeOfWork": "MydataCoin",
"skills": ["Attractive"],
"university": "KNU",
"faculty": "Π€ΠΠΈΠΡ"
},
"placeOfResidence": {
"currentCity": "New-York",
"birthPlace": "bishkek",
"otherCities": ["Astana","Peru","Amsterdam"]
},
"personalInterests": {
"briefDescription": "Smart",
"hobby": ["biohacking"],
"sport": ["boxing"]
},
"deviceInformation": {
"deviceName": "Mac m2 pro",
"deviceId": "21313-asdasd-12313",
"operatingSystem": "windows",
"displayResolution": "999X999",
"browser": "internet explorer",
"iSP": "megaCom provider",
"adBlock": true
},
"cookies": {
"sessionState": "Active",
"language": "Russia",
"region": "chui area",
"recentPages": ["https://ru.wikipedia.org/wiki%D0%A5%D0%BE%D0%B1%D0%B1%D0%B8%D1%85%D0%BE%D1%80%D1%81%D0%B8%D0%BD%D0%B3"],
"shoppingCart": [
{
"productId": 123,
"productName": "dragon",
"productPrice": 100000000,
"quantity": 1,
"subTotal": 120000,
"total": 20,
"couponCode": "free-dragondotpy",
"shippingInformation": "st.Avenue 13",
"taxInformation": "12.23"
},
{
"productId": 1233,
"productName": "dragon-wife",
"productPrice": 1,
"quantity": 1,
"subTotal": 1,
"total": 2,
"couponCode": "free-incubator",
"shippingInformation": "st.Avenue 13",
"taxInformation": "0.01"
}
]
}
}'
// this endpoint is designed
// to update the database singly,
// this solves the problem, let's say that you have new users, and
// in order not to form and then load json into the database each time,
// you can simultaneously throw a request to our database at the time of filling
// your database using api/v1/insert method
// this is an example of an object
// that should be sent to our endpoint, api/v1/insert
// data = {
// "profile": {
// "recordId": "54",
// "firstName": "Alex",
// "lastName": "Vishnevski",
// "dateOfBirth": "2002-11-09T00:00:00Z",
// "gender": 1,
// "email": ["amaymon02@mai8.ru"],
// "phone": ["+996222116992", "+996555848652"],
// "maritalStatus": 0,
// "income": 0
// },
// "basicData": {
// "interests": ["hobbyhorsing","boxing"],
// "languages": ["english", "indian"],
// "religionViews": ["Atheist","Agnostik"],
// "politicalViews": ["liberal"]
// },
// "contacts": {
// "mobilePhone": "IPHONE13",
// "address": "avenue 13",
// "linkedAccounts": ["https://www.tiktok.com/@angiejoliefan?is_from_webapp=1&sender_device=pc"],
// "website": "http://flibusta.site/b/668844/read"
// },
// "workAndEducation": {
// "placeOfWork": "MydataCoin",
// "skills": ["Attractive"],
// "university": "KNU",
// "faculty": "Π€ΠΠΈΠΡ"
// },
// "placeOfResidence": {
// "currentCity": "New-York",
// "birthPlace": "bishkek",
// "otherCities": ["Astana","Peru","Amsterdam"]
// },
// "personalInterests": {
// "briefDescription": "Smart",
// "hobby": ["biohacking"],
// "sport": ["boxing"]
// },
// "deviceInformation": {
// "deviceName": "Mac m2 pro",
// "deviceId": "21313-asdasd-12313",
// "operatingSystem": "windows",
// "displayResolution": "999X999",
// "browser": "internet explorer",
// "iSP": "megaCom provider",
// "adBlock": True
// },
// "cookies": {
// "sessionState": "Active",
// "language": "Russia",
// "region": "chui area",
// "recentPages": ["https://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D0%B1%D0%B1%D0%B8%D1%85%D0%BE%D1%80%D1%81%D0%B8%D0%BD%D0%B3"],
// "shoppingCart": [
// {
// "productId": "123-asda-12312",
// "productName": "dragon",
// "productPrice": 100000000,
// "quantity": 1,
// "subTotal": 120000,
// "total": 20,
// "couponCode": "free-dragondotpy",
// "shippingInformation": "st.Avenue 13",
// "taxInformation": "12.23"
// },
// {
// "productId": "123-qwe-123",
// "productName": "dragon-wife",
// "productPrice": 1,
// "quantity": 1,
// "subTotal": 1,
// "total": 2,
// "couponCode": "free-incubator",
// "shippingInformation": "st.Avenue 13",
// "taxInformation": "0.01"
// }
// ]
// }
// }
public class InsertDataExample {
public static void insert(Object data) {
HttpClient httpClient = HttpClient.newHttpClient();
String url = "http://your-server-ip:8000/api/v1/insert";
// here you have to pass your authorization token which you specified
// in docker-compose.yml file in environment variables
String authToken = "your_auth_token_here";
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", authToken);
headers.put("Content-Type", "application/json");
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.headers(headers.entrySet().stream()
.map(entry -> entry.getKey() + ":" + entry.getValue())
.toArray(String[]::new))
.POST(HttpRequest.BodyPublishers.ofString(data))
.build();
try {
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("Data inserted successfully: " + response.body());
} else {
System.out.println("Error inserting data: " + response.body());
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
// this endpoint is designed
// to update the database singly,
// this solves the problem, let's say that you have new users, and
// in order not to form and then load json into the database each time,
// you can simultaneously throw a request to our database at the time of filling
// your database using api/v1/insert method
// this is an example of an object
// that should be sent to our endpoint, api/v1/insert
// data = {
// "profile": {
// "recordId": "54",
// "firstName": "Alex",
// "lastName": "Vishnevski",
// "dateOfBirth": "2002-11-09T00:00:00Z",
// "gender": 1,
// "email": ["amaymon02@mai8.ru"],
// "phone": ["+996222116992", "+996555848652"],
// "maritalStatus": 0,
// "income": 0
// },
// "basicData": {
// "interests": ["hobbyhorsing","boxing"],
// "languages": ["english", "indian"],
// "religionViews": ["Atheist","Agnostik"],
// "politicalViews": ["liberal"]
// },
// "contacts": {
// "mobilePhone": "IPHONE13",
// "address": "avenue 13",
// "linkedAccounts": ["https://www.tiktok.com/@angiejoliefan?is_from_webapp=1&sender_device=pc"],
// "website": "http://flibusta.site/b/668844/read"
// },
// "workAndEducation": {
// "placeOfWork": "MydataCoin",
// "skills": ["Attractive"],
// "university": "KNU",
// "faculty": "Π€ΠΠΈΠΡ"
// },
// "placeOfResidence": {
// "currentCity": "New-York",
// "birthPlace": "bishkek",
// "otherCities": ["Astana","Peru","Amsterdam"]
// },
// "personalInterests": {
// "briefDescription": "Smart",
// "hobby": ["biohacking"],
// "sport": ["boxing"]
// },
// "deviceInformation": {
// "deviceName": "Mac m2 pro",
// "deviceId": "21313-asdasd-12313",
// "operatingSystem": "windows",
// "displayResolution": "999X999",
// "browser": "internet explorer",
// "iSP": "megaCom provider",
// "adBlock": True
// },
// "cookies": {
// "sessionState": "Active",
// "language": "Russia",
// "region": "chui area",
// "recentPages": ["https://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D0%B1%D0%B1%D0%B8%D1%85%D0%BE%D1%80%D1%81%D0%B8%D0%BD%D0%B3"],
// "shoppingCart": [
// {
// "productId": "123-asda-12312",
// "productName": "dragon",
// "productPrice": 100000000,
// "quantity": 1,
// "subTotal": 120000,
// "total": 20,
// "couponCode": "free-dragondotpy",
// "shippingInformation": "st.Avenue 13",
// "taxInformation": "12.23"
// },
// {
// "productId": "123-qwe-123",
// "productName": "dragon-wife",
// "productPrice": 1,
// "quantity": 1,
// "subTotal": 1,
// "total": 2,
// "couponCode": "free-incubator",
// "shippingInformation": "st.Avenue 13",
// "taxInformation": "0.01"
// }
// ]
// }
// }
function insertData(data) {
const url = 'http://your-server-ip:8000/api/v1/insert';
// here you have to pass your authorization token which you specified
// in docker-compose.yml file in environment variables
const headers = {
'Authorization': 'your_auth_token_here',
'Content-Type': 'application/json'
};
axios.post(url, data, { headers })
.then(response => {
const responseData = response.data;
if (response.status === 200) {
console.log('Data inserted successfully:', responseData);
} else {
console.log('Error inserting data:', responseData);
}
})
.catch(error => {
console.error('Request error:', error);
});
}
# this endpoint is designed
# to update the database singly,
# this solves the problem, let's say that you have new users, and
# in order not to form and then load json into the database each time,
# you can simultaneously throw a request to our database at the time of filling
# your database using api/v1/insert method
# this is an example of an object
# that should be sent to our endpoint, api/v1/insert
# data = {
# "profile": {
# "recordId": "54",
# "firstName": "Alex",
# "lastName": "Vishnevski",
# "dateOfBirth": "2002-11-09T00:00:00Z",
# "gender": 1,
# "email": ["amaymon02@mai8.ru"],
# "phone": ["+996222116992", "+996555848652"],
# "maritalStatus": 0,
# "income": 0
# },
# "basicData": {
# "interests": ["hobbyhorsing","boxing"],
# "languages": ["english", "indian"],
# "religionViews": ["Atheist","Agnostik"],
# "politicalViews": ["liberal"]
# },
# "contacts": {
# "mobilePhone": "IPHONE13",
# "address": "avenue 13",
# "linkedAccounts": ["https://www.tiktok.com/@angiejoliefan?is_from_webapp=1&sender_device=pc"],
# "website": "http://flibusta.site/b/668844/read"
# },
# "workAndEducation": {
# "placeOfWork": "MydataCoin",
# "skills": ["Attractive"],
# "university": "KNU",
# "faculty": "Π€ΠΠΈΠΡ"
# },
# "placeOfResidence": {
# "currentCity": "New-York",
# "birthPlace": "bishkek",
# "otherCities": ["Astana","Peru","Amsterdam"]
# },
# "personalInterests": {
# "briefDescription": "Smart",
# "hobby": ["biohacking"],
# "sport": ["boxing"]
# },
# "deviceInformation": {
# "deviceName": "Mac m2 pro",
# "deviceId": "21313-asdasd-12313",
# "operatingSystem": "windows",
# "displayResolution": "999X999",
# "browser": "internet explorer",
# "iSP": "megaCom provider",
# "adBlock": True
# },
# "cookies": {
# "sessionState": "Active",
# "language": "Russia",
# "region": "chui area",
# "recentPages": ["https://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D0%B1%D0%B1%D0%B8%D1%85%D0%BE%D1%80%D1%81%D0%B8%D0%BD%D0%B3"],
# "shoppingCart": [
# {
# "productId": "123-asda-12312",
# "productName": "dragon",
# "productPrice": 100000000,
# "quantity": 1,
# "subTotal": 120000,
# "total": 20,
# "couponCode": "free-dragondotpy",
# "shippingInformation": "st.Avenue 13",
# "taxInformation": "12.23"
# },
# {
# "productId": "123-qwe-123",
# "productName": "dragon-wife",
# "productPrice": 1,
# "quantity": 1,
# "subTotal": 1,
# "total": 2,
# "couponCode": "free-incubator",
# "shippingInformation": "st.Avenue 13",
# "taxInformation": "0.01"
# }
# ]
# }
# }
def insert_data(data):
url = 'http://your-server-ip:8000/api/v1/insert'
# here you have to pass your authorization token which you specified
# in docker-compose.yml file in environment variables
headers = {
'Authorization': 'your_auth_token_here',
'Content-Type': 'application/json'
}
try:
response = requests.post(url, json=data, headers=headers)
response_data = response.json()
if response.status_code == 200:
print("Data inserted successfully:", response_data)
else:
print("Error inserting data:", response_data)
except requests.exceptions.RequestException as e:
print("Request error:", e)
// this endpoint is designed
// to update the database singly,
// this solves the problem, let's say that you have new users, and
// in order not to form and then load json into the database each time,
// you can simultaneously throw a request to our database at the time of filling
// your database using api/v1/insert method
// this is an example of an object
// that should be sent to our endpoint, api/v1/insert
// data = {
// "profile": {
// "recordId": "54",
// "firstName": "Alex",
// "lastName": "Vishnevski",
// "dateOfBirth": "2002-11-09T00:00:00Z",
// "gender": 1,
// "email": ["amaymon02@mai8.ru"],
// "phone": ["+996222116992", "+996555848652"],
// "maritalStatus": 0,
// "income": 0
// },
// "basicData": {
// "interests": ["hobbyhorsing","boxing"],
// "languages": ["english", "indian"],
// "religionViews": ["Atheist","Agnostik"],
// "politicalViews": ["liberal"]
// },
// "contacts": {
// "mobilePhone": "IPHONE13",
// "address": "avenue 13",
// "linkedAccounts": ["https://www.tiktok.com/@angiejoliefan?is_from_webapp=1&sender_device=pc"],
// "website": "http://flibusta.site/b/668844/read"
// },
// "workAndEducation": {
// "placeOfWork": "MydataCoin",
// "skills": ["Attractive"],
// "university": "KNU",
// "faculty": "Π€ΠΠΈΠΡ"
// },
// "placeOfResidence": {
// "currentCity": "New-York",
// "birthPlace": "bishkek",
// "otherCities": ["Astana","Peru","Amsterdam"]
// },
// "personalInterests": {
// "briefDescription": "Smart",
// "hobby": ["biohacking"],
// "sport": ["boxing"]
// },
// "deviceInformation": {
// "deviceName": "Mac m2 pro",
// "deviceId": "21313-asdasd-12313",
// "operatingSystem": "windows",
// "displayResolution": "999X999",
// "browser": "internet explorer",
// "iSP": "megaCom provider",
// "adBlock": True
// },
// "cookies": {
// "sessionState": "Active",
// "language": "Russia",
// "region": "chui area",
// "recentPages": ["https://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D0%B1%D0%B1%D0%B8%D1%85%D0%BE%D1%80%D1%81%D0%B8%D0%BD%D0%B3"],
// "shoppingCart": [
// {
// "productId": "123-asda-12312",
// "productName": "dragon",
// "productPrice": 100000000,
// "quantity": 1,
// "subTotal": 120000,
// "total": 20,
// "couponCode": "free-dragondotpy",
// "shippingInformation": "st.Avenue 13",
// "taxInformation": "12.23"
// },
// {
// "productId": "123-qwe-123",
// "productName": "dragon-wife",
// "productPrice": 1,
// "quantity": 1,
// "subTotal": 1,
// "total": 2,
// "couponCode": "free-incubator",
// "shippingInformation": "st.Avenue 13",
// "taxInformation": "0.01"
// }
// ]
// }
// }
namespace InsertDataExample
{
class Program
{
static async Task Main(string[] args)
{
string url = "http://your-server-ip:8000/api/v1/insert";
string authToken = "your_auth_token_here";
# here you have to pass your authorization token which you specified
# in docker-compose.yml file in environment variables
HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Authorization", authToken);
httpClient.DefaultRequestHeaders.Add("Content-Type", "application/json");
string requestBody = "{\"profile\": {...}}"; // Replace with your JSON data
try
{
HttpResponseMessage response = await httpClient.PostAsync(url, new StringContent(requestBody, Encoding.UTF8, "application/json"));
string responseData = await response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Data inserted successfully: " + responseData);
}
else
{
Console.WriteLine("Error inserting data: " + responseData);
}
}
catch (Exception e)
{
Console.WriteLine("Request error: " + e.Message);
}
}
}
}
Update Records
The update method serves to synchronize your database with ours, so that the data is always up to date, you just need to write a function that, when updating your user's data, it simultaneously updates the user in our database to keep personal data up to date
updating an existing user
PUT
https://your-ip-address:your-port/api/v1/update?recordId=55
This method is used to update the data of an existing user, please note that identification occurs by recordId which is located separately outside the data to update
Query Parameters
Headers
Request Body
# with id profile in brecets
{
"message":"profile {} successfully updated!"
}
#with record Id in brecets
{
"error": "Profile with recordId: {} not found."
}
#with details in brecets
{
"error": "Error updating data.", "details": {}
}
# Check if the 'recordId' parameter is missing.
# If it is, return an error response indicating that the record ID must not be null.
# The status code is set to 400 (Bad Request).
{
'error': "recordID is must be not null",
'details': "Please provide a valid 'recordId' parameter."
}
# Check if the 'Content-Type' header of the request is not set to 'application/json'.
# If it's not set correctly, return an error response indicating "Unsupported Media Type".
# The status code is set to 415 (Unsupported Media Type).
{
'error': 'Unsupported Media Type',
'details': "The 'Content-Type' header must be set to 'application/json'."
}
# Check if the provided token in the 'Authorization' header does not match the expected 'auth_token'.
# If it doesn't match, return an error response indicating "Invalid token".
# The status code is set to 401 (Unauthorized).
{
'error': 'Invalid token',
'details': "The token provided in the 'Authorization' header is invalid. Please provide a valid token."
}
curl -X PUT "http://your-server-ip:8000/api/v1/update?recordId=55" \
-H "Authorization: your_auth_token_here" \
-H "Content-Type: application/json" \
-d '{
"profile": {
"recordId": "54",
"firstName": "Alex",
"lastName": "Vishnevski",
"dateOfBirth": "2002-11-09T00:00:00Z",
"gender": 1,
"email": ["amaymon02@mai8.ru"],
"phone": ["+996222116992", "+996555848652"],
"maritalStatus": 0,
"income": 0
},
"basicData": {
"interests": ["hobbyhorsing","boxing"],
"languages": ["english", "indian"],
"religionViews": ["Atheist","Agnostik"],
"politicalViews": ["liberal"]
},
"contacts": {
"mobilePhone": "IPHONE13",
"address": "avenue 13",
"linkedAccounts": ["https://www.tiktok.com/@angiejoliefan?is_from_webapp=1&sender_device=pc"],
"website": "http://flibusta.site/b/668844/read"
},
"workAndEducation": {
"placeOfWork": "MydataCoin",
"skills": ["Attractive"],
"university": "KNU",
"faculty": "Π€ΠΠΈΠΡ"
},
"placeOfResidence": {
"currentCity": "New-York",
"birthPlace": "bishkek",
"otherCities": ["Astana","Peru","Amsterdam"]
},
"personalInterests": {
"briefDescription": "Smart",
"hobby": ["biohacking"],
"sport": ["boxing"]
},
"deviceInformation": {
"deviceName": "Mac m2 pro",
"deviceId": "21313-asdasd-12313",
"operatingSystem": "windows",
"displayResolution": "999X999",
"browser": "internet explorer",
"iSP": "megaCom provider",
"adBlock": true
},
"cookies": {
"sessionState": "Active",
"language": "Russia",
"region": "chui area",
"recentPages": ["https://ru.wikipedia.org/wiki%D0%A5%D0%BE%D0%B1%D0%B1%D0%B8%D1%85%D0%BE%D1%80%D1%81%D0%B8%D0%BD%D0%B3"],
"shoppingCart": [
{
"productId": 123,
"productName": "dragon",
"productPrice": 100000000,
"quantity": 1,
"subTotal": 120000,
"total": 20,
"couponCode": "free-dragondotpy",
"shippingInformation": "st.Avenue 13",
"taxInformation": "12.23"
},
{
"productId": 1233,
"productName": "dragon-wife",
"productPrice": 1,
"quantity": 1,
"subTotal": 1,
"total": 2,
"couponCode": "free-incubator",
"shippingInformation": "st.Avenue 13",
"taxInformation": "0.01"
}
]
}
}'
// this url is designed to synchronize data in the database, that is,
// when updating your user's data, you can simultaneously
// generate json and send it to our url so that the data is always up to date
// data = {
// "profile": {
// "recordId": "54",
// "firstName": "Alex",
// "lastName": "Vishnevski",
// "dateOfBirth": "2002-11-09T00:00:00Z",
// "gender": 1,
// "email": ["amaymon02@mai8.ru"],
// "phone": ["+996222116992", "+996555848652"],
// "maritalStatus": 0,
// "income": 0
// },
// "basicData": {
// "interests": ["hobbyhorsing","boxing"],
// "languages": ["english", "indian"],
// "religionViews": ["Atheist","Agnostik"],
// "politicalViews": ["liberal"]
// },
// "contacts": {
// "mobilePhone": "IPHONE13",
// "address": "avenue 13",
// "linkedAccounts": ["https://www.tiktok.com/@angiejoliefan?is_from_webapp=1&sender_device=pc"],
// "website": "http://flibusta.site/b/668844/read"
// },
// "workAndEducation": {
// "placeOfWork": "MydataCoin",
// "skills": ["Attractive"],
// "university": "KNU",
// "faculty": "Π€ΠΠΈΠΡ"
// },
// "placeOfResidence": {
// "currentCity": "New-York",
// "birthPlace": "bishkek",
// "otherCities": ["Astana","Peru","Amsterdam"]
// },
// "personalInterests": {
// "briefDescription": "Smart",
// "hobby": ["biohacking"],
// "sport": ["boxing"]
// },
// "deviceInformation": {
// "deviceName": "Mac m2 pro",
// "deviceId": "21313-asdasd-12313",
// "operatingSystem": "windows",
// "displayResolution": "999X999",
// "browser": "internet explorer",
// "iSP": "megaCom provider",
// "adBlock": True
// },
// "cookies": {
// "sessionState": "Active",
// "language": "Russia",
// "region": "chui area",
// "recentPages": ["https://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D0%B1%D0%B1%D0%B8%D1%85%D0%BE%D1%80%D1%81%D0%B8%D0%BD%D0%B3"],
// "shoppingCart": [
// {
// "productId": "123-asda-12312",
// "productName": "dragon",
// "productPrice": 100000000,
// "quantity": 1,
// "subTotal": 120000,
// "total": 20,
// "couponCode": "free-dragondotpy",
// "shippingInformation": "st.Avenue 13",
// "taxInformation": "12.23"
// },
// {
// "productId": "123-qwe-123",
// "productName": "dragon-wife",
// "productPrice": 1,
// "quantity": 1,
// "subTotal": 1,
// "total": 2,
// "couponCode": "free-incubator",
// "shippingInformation": "st.Avenue 13",
// "taxInformation": "0.01"
// }
// ]
// }
// }
public class UpdateDataExample {
public static void Update(Object data) {
HttpClient httpClient = HttpClient.newHttpClient();
String url = "http://your-server-ip:8000/api/v1/update?recordId=55";
String authToken = "your_auth_token_here";
Map<String, String> headers = new HashMap<>();
// here you have to pass your authorization token which you specified
// in docker-compose.yml file in environment variables
headers.put("Authorization", authToken);
headers.put("Content-Type", "application/json");
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.headers(headers.entrySet().stream()
.map(entry -> entry.getKey() + ":" + entry.getValue())
.toArray(String[]::new))
.PUT(HttpRequest.BodyPublishers.ofString(data))
.build();
try {
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("Data updated successfully: " + response.body());
} else {
System.out.println("Error updating data: " + response.body());
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
// this url is designed to synchronize data in the database, that is,
// when updating your user's data, you can simultaneously
// generate json and send it to our url so that the data is always up to date
// data = {
// "profile": {
// "recordId": "54",
// "firstName": "Alex",
// "lastName": "Vishnevski",
// "dateOfBirth": "2002-11-09T00:00:00Z",
// "gender": 1,
// "email": ["amaymon02@mai8.ru"],
// "phone": ["+996222116992", "+996555848652"],
// "maritalStatus": 0,
// "income": 0
// },
// "basicData": {
// "interests": ["hobbyhorsing","boxing"],
// "languages": ["english", "indian"],
// "religionViews": ["Atheist","Agnostik"],
// "politicalViews": ["liberal"]
// },
// "contacts": {
// "mobilePhone": "IPHONE13",
// "address": "avenue 13",
// "linkedAccounts": ["https://www.tiktok.com/@angiejoliefan?is_from_webapp=1&sender_device=pc"],
// "website": "http://flibusta.site/b/668844/read"
// },
// "workAndEducation": {
// "placeOfWork": "MydataCoin",
// "skills": ["Attractive"],
// "university": "KNU",
// "faculty": "Π€ΠΠΈΠΡ"
// },
// "placeOfResidence": {
// "currentCity": "New-York",
// "birthPlace": "bishkek",
// "otherCities": ["Astana","Peru","Amsterdam"]
// },
// "personalInterests": {
// "briefDescription": "Smart",
// "hobby": ["biohacking"],
// "sport": ["boxing"]
// },
// "deviceInformation": {
// "deviceName": "Mac m2 pro",
// "deviceId": "21313-asdasd-12313",
// "operatingSystem": "windows",
// "displayResolution": "999X999",
// "browser": "internet explorer",
// "iSP": "megaCom provider",
// "adBlock": True
// },
// "cookies": {
// "sessionState": "Active",
// "language": "Russia",
// "region": "chui area",
// "recentPages": ["https://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D0%B1%D0%B1%D0%B8%D1%85%D0%BE%D1%80%D1%81%D0%B8%D0%BD%D0%B3"],
// "shoppingCart": [
// {
// "productId": "123-asda-12312",
// "productName": "dragon",
// "productPrice": 100000000,
// "quantity": 1,
// "subTotal": 120000,
// "total": 20,
// "couponCode": "free-dragondotpy",
// "shippingInformation": "st.Avenue 13",
// "taxInformation": "12.23"
// },
// {
// "productId": "123-qwe-123",
// "productName": "dragon-wife",
// "productPrice": 1,
// "quantity": 1,
// "subTotal": 1,
// "total": 2,
// "couponCode": "free-incubator",
// "shippingInformation": "st.Avenue 13",
// "taxInformation": "0.01"
// }
// ]
// }
// }
const axios = require('axios');
function updateData(data) {
const url = 'http://your-server-ip:8000/api/v1/update?recordId=55';
// here you have to pass your authorization token which you specified
// in docker-compose.yml file in environment variables
const authToken = 'your_auth_token_here';
const headers = {
'Authorization': authToken,
'Content-Type': 'application/json'
};
axios.put(url, data, { headers })
.then(response => {
const responseData = response.data;
if (response.status === 200) {
console.log('Data updated successfully:', responseData);
} else {
console.log('Error updating data:', responseData);
}
})
.catch(error => {
console.error('Request error:', error);
});
}
# this url is designed to synchronize data in the database, that is,
# when updating your user's data, you can simultaneously
# generate json and send it to our url so that the data is always up to date
# data = {
# "profile": {
# "recordId": "54",
# "firstName": "Alex",
# "lastName": "Vishnevski",
# "dateOfBirth": "2002-11-09T00:00:00Z",
# "gender": 1,
# "email": ["amaymon02@mai8.ru"],
# "phone": ["+996222116992", "+996555848652"],
# "maritalStatus": 0,
# "income": 0
# },
# "basicData": {
# "interests": ["hobbyhorsing","boxing"],
# "languages": ["english", "indian"],
# "religionViews": ["Atheist","Agnostik"],
# "politicalViews": ["liberal"]
# },
# "contacts": {
# "mobilePhone": "IPHONE13",
# "address": "avenue 13",
# "linkedAccounts": ["https://www.tiktok.com/@angiejoliefan?is_from_webapp=1&sender_device=pc"],
# "website": "http://flibusta.site/b/668844/read"
# },
# "workAndEducation": {
# "placeOfWork": "MydataCoin",
# "skills": ["Attractive"],
# "university": "KNU",
# "faculty": "Π€ΠΠΈΠΡ"
# },
# "placeOfResidence": {
# "currentCity": "New-York",
# "birthPlace": "bishkek",
# "otherCities": ["Astana","Peru","Amsterdam"]
# },
# "personalInterests": {
# "briefDescription": "Smart",
# "hobby": ["biohacking"],
# "sport": ["boxing"]
# },
# "deviceInformation": {
# "deviceName": "Mac m2 pro",
# "deviceId": "21313-asdasd-12313",
# "operatingSystem": "windows",
# "displayResolution": "999X999",
# "browser": "internet explorer",
# "iSP": "megaCom provider",
# "adBlock": True
# },
# "cookies": {
# "sessionState": "Active",
# "language": "Russia",
# "region": "chui area",
# "recentPages": ["https://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D0%B1%D0%B1%D0%B8%D1%85%D0%BE%D1%80%D1%81%D0%B8%D0%BD%D0%B3"],
# "shoppingCart": [
# {
# "productId": "123-asda-12312",
# "productName": "dragon",
# "productPrice": 100000000,
# "quantity": 1,
# "subTotal": 120000,
# "total": 20,
# "couponCode": "free-dragondotpy",
# "shippingInformation": "st.Avenue 13",
# "taxInformation": "12.23"
# },
# {
# "productId": "123-qwe-123",
# "productName": "dragon-wife",
# "productPrice": 1,
# "quantity": 1,
# "subTotal": 1,
# "total": 2,
# "couponCode": "free-incubator",
# "shippingInformation": "st.Avenue 13",
# "taxInformation": "0.01"
# }
# ]
# }
# }
def update_data(data):
url = 'http://your-server-ip:8000/api/v1/update?recordId=55'
# here you have to pass your authorization token which you specified
# in docker-compose.yml file in environment variables
auth_token = 'your_auth_token_here'
headers = {
'Authorization': auth_token,
'Content-Type': 'application/json'
}
try:
response = requests.put(url, json=data, headers=headers)
response_data = response.json()
if response.status_code == 200:
print('Data updated successfully:', response_data)
else:
print('Error updating data:', response_data)
except requests.exceptions.RequestException as e:
print('Request error:', e)
// this url is designed to synchronize data in the database, that is,
// when updating your user's data, you can simultaneously
// generate json and send it to our url so that the data is always up to date
// data = {
// "profile": {
// "recordId": "54",
// "firstName": "Alex",
// "lastName": "Vishnevski",
// "dateOfBirth": "2002-11-09T00:00:00Z",
// "gender": 1,
// "email": ["amaymon02@mai8.ru"],
// "phone": ["+996222116992", "+996555848652"],
// "maritalStatus": 0,
// "income": 0
// },
// "basicData": {
// "interests": ["hobbyhorsing","boxing"],
// "languages": ["english", "indian"],
// "religionViews": ["Atheist","Agnostik"],
// "politicalViews": ["liberal"]
// },
// "contacts": {
// "mobilePhone": "IPHONE13",
// "address": "avenue 13",
// "linkedAccounts": ["https://www.tiktok.com/@angiejoliefan?is_from_webapp=1&sender_device=pc"],
// "website": "http://flibusta.site/b/668844/read"
// },
// "workAndEducation": {
// "placeOfWork": "MydataCoin",
// "skills": ["Attractive"],
// "university": "KNU",
// "faculty": "Π€ΠΠΈΠΡ"
// },
// "placeOfResidence": {
// "currentCity": "New-York",
// "birthPlace": "bishkek",
// "otherCities": ["Astana","Peru","Amsterdam"]
// },
// "personalInterests": {
// "briefDescription": "Smart",
// "hobby": ["biohacking"],
// "sport": ["boxing"]
// },
// "deviceInformation": {
// "deviceName": "Mac m2 pro",
// "deviceId": "21313-asdasd-12313",
// "operatingSystem": "windows",
// "displayResolution": "999X999",
// "browser": "internet explorer",
// "iSP": "megaCom provider",
// "adBlock": True
// },
// "cookies": {
// "sessionState": "Active",
// "language": "Russia",
// "region": "chui area",
// "recentPages": ["https://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D0%B1%D0%B1%D0%B8%D1%85%D0%BE%D1%80%D1%81%D0%B8%D0%BD%D0%B3"],
// "shoppingCart": [
// {
// "productId": "123-asda-12312",
// "productName": "dragon",
// "productPrice": 100000000,
// "quantity": 1,
// "subTotal": 120000,
// "total": 20,
// "couponCode": "free-dragondotpy",
// "shippingInformation": "st.Avenue 13",
// "taxInformation": "12.23"
// },
// {
// "productId": "123-qwe-123",
// "productName": "dragon-wife",
// "productPrice": 1,
// "quantity": 1,
// "subTotal": 1,
// "total": 2,
// "couponCode": "free-incubator",
// "shippingInformation": "st.Avenue 13",
// "taxInformation": "0.01"
// }
// ]
// }
// }
namespace UpdateDataExample
{
class Program
{
static async Task Update(Object data)
{
string url = "http://your-server-ip:8000/api/v1/update?recordId=55";
string authToken = "your_auth_token_here";
HttpClient httpClient = new HttpClient();
// here you have to pass your authorization token which you specified
// in docker-compose.yml file in environment variables
httpClient.DefaultRequestHeaders.Add("Authorization", authToken);
httpClient.DefaultRequestHeaders.Add("Content-Type", "application/json");
try
{
HttpResponseMessage response = await httpClient.PutAsync(url, new StringContent(data, Encoding.UTF8, "application/json"));
string responseData = await response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Data updated successfully: " + responseData);
}
else
{
Console.WriteLine("Error updating data: " + responseData);
}
}
catch (Exception e)
{
Console.WriteLine("Request error: " + e.Message);
}
}
}
}
Last updated