# Upload User Data POST /v1/user-data/{upload_type} Content-Type: application/json Upload JSON data of a certain type gathered about a specific user. > **Warning**: > * To use this feature, please contact thymia to agree an upload format and type. > * Please do not upload any personally identifiable data. Reference: https://docs.thymia.ai/api-reference/plant-store-api/user-data/upload-user-data-v-1-user-data-upload-type-post ## OpenAPI Specification ```yaml openapi: 3.1.0 info: title: Thymia API version: 1.0.0 paths: /v1/user-data/{upload_type}: post: operationId: upload-user-data-v-1-user-data-upload-type-post summary: Upload User Data description: >- Upload JSON data of a certain type gathered about a specific user. > **Warning**: > * To use this feature, please contact thymia to agree an upload format and type. > * Please do not upload any personally identifiable data. tags: - subpackage_userData parameters: - name: upload_type in: path required: true schema: type: string - name: x-api-key in: header description: Your API Activation Key required: true schema: type: string responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UserDataUploadResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' requestBody: content: application/json: schema: $ref: '#/components/schemas/UserDataUpload' components: schemas: UserDetailsShort: type: object properties: userLabel: type: string description: A unique label identifying a user in your systems required: - userLabel title: UserDetailsShort UserDataUploadData: type: object properties: {} description: User data JSON object as agreed with thymia title: UserDataUploadData UserDataUpload: type: object properties: user: $ref: '#/components/schemas/UserDetailsShort' data: $ref: '#/components/schemas/UserDataUploadData' description: User data JSON object as agreed with thymia required: - user - data title: UserDataUpload UserDataUploadResponse: type: object properties: uploadId: type: string format: uuid description: The id assigned to the uploaded user data required: - uploadId title: UserDataUploadResponse ValidationErrorLocItems: oneOf: - type: string - type: integer title: ValidationErrorLocItems ValidationError: type: object properties: loc: type: array items: $ref: '#/components/schemas/ValidationErrorLocItems' msg: type: string type: type: string required: - loc - msg - type title: ValidationError HTTPValidationError: type: object properties: detail: type: array items: $ref: '#/components/schemas/ValidationError' title: HTTPValidationError securitySchemes: APIKeyHeader: type: apiKey in: header name: x-api-key description: Your API Activation Key ``` ## SDK Code Examples ```python import requests url = "https://api.example.com/v1/user-data/upload_type" payload = { "user": { "userLabel": "user-12345" } } headers = { "x-api-key": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.example.com/v1/user-data/upload_type'; const options = { method: 'POST', headers: {'x-api-key': '', 'Content-Type': 'application/json'}, body: '{"user":{"userLabel":"user-12345"}}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.example.com/v1/user-data/upload_type" payload := strings.NewReader("{\n \"user\": {\n \"userLabel\": \"user-12345\"\n }\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("x-api-key", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.example.com/v1/user-data/upload_type") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["x-api-key"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"user\": {\n \"userLabel\": \"user-12345\"\n }\n}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.example.com/v1/user-data/upload_type") .header("x-api-key", "") .header("Content-Type", "application/json") .body("{\n \"user\": {\n \"userLabel\": \"user-12345\"\n }\n}") .asString(); ``` ```php request('POST', 'https://api.example.com/v1/user-data/upload_type', [ 'body' => '{ "user": { "userLabel": "user-12345" } }', 'headers' => [ 'Content-Type' => 'application/json', 'x-api-key' => '', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.example.com/v1/user-data/upload_type"); var request = new RestRequest(Method.POST); request.AddHeader("x-api-key", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"user\": {\n \"userLabel\": \"user-12345\"\n }\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "x-api-key": "", "Content-Type": "application/json" ] let parameters = ["user": ["userLabel": "user-12345"]] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.example.com/v1/user-data/upload_type")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```