This document will deal with the different types of accesses that exist on the platform. To identify the user who owns the account where the operation is going to be carried out, it is necessary to indicate a session identifier ( session_id parameter) or sign the call with its private key ( signature parameter). In this way, these two calls to service are equivalent for all intents and purposes. For those cases in which there is no pademobile user as executor of the operation, the call with private key must be used: * With session ID ```javascript user_id=457&country_code=MX&comando=listado&idioma=en-us&id_canal=1&session_id=9bb19a6c0a607cb8f1791207395366d6 ``` Session sample The session_id parameter is obtained from the call to the login service: ```javascript http://desarrollo.pademobile.com:5007/ws/users.py/login?country_code=MX&nick=test_user&pin=0000 ``` ```javascript { {' '} "status" :{' '} true , "e_mail" :{' '} "" , "elapsed" :{' '} 0.2370758056640625 , "certification_data" : , "session_id" :{' '} "97c4abb925c9b2046ac7432762ad1417" , "user_type" :{' '} "User b\u00e1sico" , "profile_id" :{' '} 1 , "profile_code" :{' '} "USER" , "user_id" :{' '} 225 , "state" :{' '} "Distrito Federal" , "phone_longitude" :{' '} 10 , "menu" : , "affiliate_user_id" :{' '} 412 , "currency" :{' '} "MXN" , "name" :{' '} "Test User" , "certification" :{' '} false , "phone" :{' '} "5012385006" } ``` * With signature ```javascript user_id=457&country_code=MX&comando=listado&idioma=en-us&id_canal=1&signature=cc30e3efc7159bb10b910512ca441664c1578a4d ``` Signed sample In this case an extra parameter is added to the entire original query string. This parameter will be a hash (HMAC) of the previous string, so any alteration in the parameters will cause the signed login process to fail. This process follows these steps: * The private key of the user identified by the user_id parameter is obtained. * The querystringis separated from the signature parameter. * The hash is calculated using the strings obtained in steps 1 and 2. * If the hash obtained in the previous step and the one reported in the signature parameter are the same, the login with signature is successful and the service code is executed. Otherwise an exception is thrown. The following Python code snippet returns the querystringprovided in the string parameter of the calculate_signature function with the signature parameter appended to the end.{' '} This process follows the these steps: * The private key of the user identified by the user_id parameter is obtained. * The querystringis separated from the signature parameter. * The hash is calculated using the strings obtained in steps 1 and 2. * If the hash obtained in the previous step and the one reported in the signature parameter are the same, the login with signature is successful and the service code is executed. Otherwise an exception is thrown. ```javascript import hashlib import hashlib import hmac def{' '} calcular_firma (Private key , chain ) : signature = hmac .new (Private key , chain , hashlib .sha1 ) .hexdigest ( ) return chain{' '} +{' '} '&signature='{' '} + signature ```