# Sign Metadata **POST /wallets/{walletId}/signatures/{role}/{index}**
status: experimental
**⚠️ WARNING ⚠️** This endpoint is experimental and for internal use in the Catalyst project. This functionality will be refined in the forthcoming future and the interface is likely to change in **NON-BACKWARD COMPATIBLE WAYS**. Note: Only `Soft` indexes are supported by this endpoint. ## Servers - https://localhost:8090/v2: https://localhost:8090/v2 () ## Parameters #### Path parameters - **walletId** (string(hex)) - **role** (string) - **index** (string) An individual segment within a derivation path. The `H` suffix indicates a _Hardened_ child private key, which means that children of this key cannot be derived from the public key. Indices without a `H` suffix are called _Soft_. ## Body parameters Content-type: application/json - **passphrase** (string) A master passphrase to lock and protect the wallet for sensitive operation (e.g. sending funds) - **metadata** (object | null) **⚠️ WARNING ⚠️** _Please note that metadata provided in a transaction will be stored on the blockchain forever. Make sure not to include any sensitive data, in particular personally identifiable information (PII)._ Extra application data attached to the transaction. Cardano allows users and developers to embed their own authenticated metadata when submitting transactions. Metadata can be expressed as a JSON object with some restrictions: 1. All top-level keys must be integers between `0` and `2^64 - 1`. 2. Each metadata value is tagged with its type. 3. Strings must be at most 64 bytes when UTF-8 encoded. 4. Bytestrings are hex-encoded, with a maximum length of 64 bytes. Metadata aren't stored as JSON on the Cardano blockchain but are instead stored using a compact binary encoding (CBOR). The binary encoding of metadata values supports three simple types: * Integers in the range `-(2^64 - 1)` to `2^64 - 1` * Strings (UTF-8 encoded) * Bytestrings And two compound types: * Lists of metadata values * Mappings from metadata values to metadata values It is possible to transform any JSON object into this schema. However, if your application uses floating point values, they will need to be converted somehow, according to your requirements. Likewise for `null` or `bool` values. When reading metadata from chain, be aware that integers may exceed the javascript numeric range, and may need special "bigint" parsing. ## Responses ### 415: Unsupported Media Type #### Body Parameters: application/json (object) - **message** (string) A descriptive error message. - **code** (string) A specific error code for this error, more precise than HTTP ones. ### 406: Not Acceptable #### Body Parameters: application/json (object) - **message** (string) May occur when providing an invalid 'Accept' header. - **code** (string) ### 400: Bad Request #### Body Parameters: application/json (object) - **message** (string) May occur when a request is not well-formed; that is, it fails to parse successfully. This could be the case when some required parameters are missing or, when malformed values are provided. - **code** (string) ### 200: OK #### Body Parameters: application/octet-stream (string(binary)) string(binary) [Powered by Bump.sh](https://bump.sh)