> ## Documentation Index
> Fetch the complete documentation index at: https://help.cryptolens.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload Values

> This method will extract content from a Cryptolens log (used in offline licensing) and update existing data objects (either by incrementing or decrementing them). To call this method, you either need an "Increment Int...

This method will extract content from a Cryptolens log (used in offline licensing) and update existing data objects (either by incrementing or decrementing them).
To call this method, you either need an "Increment Int Value" and/or "Decrement Int Value" permission, depending on if the log that you submit increases or decreases an
int value of a data object. **Note:** for the time being, the limit of the number of entries in the log is 1000.

This method is accessed in several ways. Each way works in the same way and requires the same permission.
The only difference is the type of parameters. Both cases are listed below:

### Parameters

**Method 2 (key specific):** [https://api.cryptolens.io/api/data/UploadValuesToKey](https://api.cryptolens.io/api/data/UploadValuesToKey)

There are two ways to call this method:

| **Parameter** | **Description** | **Remarks** |
| - | - | - |
| ProductId | the product id (=\*\*\[ProductId] \*\*) | required |
| Key | the serial key string | required |
| Id | The unique object id for the data object. | required |
| Data | The file (in base 64) created by a Cryptolens SDK that has recorded data object usage. | required |
| v | Method version. | optional. by default, it's 1. |

### Results

| **Parameter** | **Description** | **Remarks** |
| - | - | - |
| Result | This is either **0**(=success) or **1**(=error). | always returned |
| Message | The message that provides additional information about the result. If it's a successful result, **null** will be returned. Otherwise, in case of an error, a short message will be returned describing the error. | always returned. |

### Example results

```text theme={null}
{"result":0,"message":null}
```

### Remarks

* Integer overflows are not allowed. If you attempt to increment by constant that would result in an integer overflow, an error will be thrown and no changes are going to be made.
* **Feature lock** in [Access Token](/api-reference/generated/Auth) can be used as a way to specify the upper bound for the **IntValue** (incrementing constant). If **Feature lock** is **not 0**, the value of the **Feature lock** will function as an upper bound. So, if you only want to allow incrementing by **1**, please set **Feature lock** to **1**
* When accessing the key specific methods (using productId and the key string), you need to either disable key lock (set it to zero) or set it to a negative number, in the same way you would have done if you would have used [KeyLock](/api-reference/generated/KeyLock). We recommend to set the **KeyLock** to **-1** when creating the access token.

### Errors

| **Error** |
| - |
| Access denied. |
| The input parameters were incorrect. |
| Not enough permission. |
| Not enough permission and/or product not found. |
| Not enough permission and/or key not found. |
| Data parameter was empty. |
| Data parameter was corrupted. |
| Incorrect 'ReferencerType'. It can either be 0 (for a User), 1 (for a Product) and 2 (for a Key). |
| The increment/decrement value not allowed by security settings. |
| Cannot increment/decrement value since the limit was reached for an int32. |
