This service is used to approve several operations within the system.

POST: 
     `URL_BASE + /ws/firma.py/firmar`

## Receives:

All the parameters that the service receives must be indicated in the body
      of the request.

## Returns:

Depending on the result of the operation, this service can return two
      different JSON:

### Answer JSON OK:

```javascript
{
         "status"
        :{' '}
        true
        ,
         "signed"
        : <boolean>
        ,
         "invoice"
        : <integer>
        ,
         "currency_data"
        :{' '}
        {
         "abbreviation"
        : <string>
        ,
         "suffix"
        : <string>
        ,
         "format"
        : <string>
        ,
         "symbol"
        : <string>
        ,
         "prefix"
        : <string>
        ,
         "decimals"
        : <decimal>
        ,
         "id"
        : <integer>
         }
        ,
         "elapsed"
        : <float>
        ,
         "raw_amount"
        : <decimal>
        ,
         "currency"
        : <string>
        ,
         "commission_user_card"
        : <decimal>
        ,
         "codtran"
        : <string>
        ,
         "user_commission"
        : <decimal>
        ,
         "amount"
        : <string>
         }
```

## Where:

* `status:` Shows if the call has been successful (true) or not (false).
* `signed:` Shows if the signature has been successfully processed (true) or not (false).
* `invoice:` Invoice number associated to the operation.
* `currency_data:` Contains the different details of the currency used in the operation.
* `abbreviation:` The abbreviated name of the currency (EUR, MXN).
* `suffix:` Indicates the suffix that is applied in the currency format (pesos, euros).
* `format:` The full format that is applied to the currency, it includes the suffix and the prefix.
* `symbol:` The symbol associated to the currency (€, ¢, $).
* `prefix:` The prefix that is applied in the format of the currency.
* `decimals:` The maximum number of decimal places to be included in the currency format.
* `id:` Currency identifier in BBDD.
* `elapsed:` Execution operation time.
* `raw_amount:` Amount of the operation in negative without applying the format.
* `currency:` Short name of the currency used in the operation, it matches the abbreviation.
* `commission_user_card:` Commission that would be applied if the payment is made by card.
* `codtran:` Transaction code that identifies the executed operation.
* `user_commission:` Commission to be charged to the user.
* `amount:` Negative transaction amount with the applied format.

### Answer JSON KO:

```javascript
{
         "status"
        :{' '}
        false
        ,
         "level"
        : <string>
        ,
         "message"
        : <string>
        ,
         "error"
        : <string>
         }
```

## Where:

* `status:` Shows if the call has been successful (true) or not (false).
* `level:` Error importance level.
* `message:` Error message.
* `error:` Sole error coge.

## Example requests:

### Python - Requests:

```javascript
import requests
         url ={' '}
        "URL_BASE/ws/firma.py/firmar"
         payload ={' '}
        {
         'otp'
        :{' '}
        '1234'
        ,
         'phone'
        :{' '}
        '7229063245'
        ,
         'country_code'
        :{' '}
        'MX'
        }
         files ={' '}
        [
        ]
         headers={' '}
        {
        }
         response = requests
        .request
        (
        "POST"
        , url
        , headers
        =headers
        , data{' '}
        = payload
        , files{' '}
        = files
        )
         print
        (response
        .text
        .encode
        (
        'utf8'
        )
        )
```

### NodeJs - Request:

```javascript
var request = require('request');
         var options = {
         'method': 'POST',
         'url': 'URL_BASE/ws/firma.py/firmar',
         'headers': {},
         formData: {
         'otp': '1234',
         'phone_dst': '7229063245',
         'country_code': 'MX'
         }
         };
         request(options, function (error, response) {{' '}
         if (error) throw new Error(error);
         console.log(response.body);
         });
```

### JavaScript - Fetch:

```javascript
var formdata = new FormData();
         formdata.append("otp", "1234");
         formdata.append("phone_dst", "7229063245");
         formdata.append("country_code", "MX");
         var requestOptions = {
         method: 'POST',
         body: formdata,
         redirect: 'follow'
         };
         fetch("URL_BASE/ws/firma.py/firmar", requestOptions)
         .then(response => response.text())
         .then(result => console.log(result))
         .catch(error => console.log('error', error));
```

### CURL:

```javascript
curl --location --request POST{' '}
        'URL_BASE/ws/firma.py/firmar'{' '}
        \
         --form 'otp=1234'{' '}
        \
         --form{' '}
        'phone_dst=7229063245'{' '}
        \
         --form 'country_code=MX'
```

## Business logic:

This service searches for the operations pending signing that the entered
      phone has, and, among the results, accepts the operation through the OTP.
