Skip to main content

Activated users and legal documents?

Thread solved
Regular Poster
Posts: 92
Comments: 201

Howdy,

A user is created, set and activated using API. Will this user still be presented the legal documents at first connection to the plattorm?

Thanks.

0 Users found this helpful
Forum Member
Posts: 3
Comments: 82

Yes, this user still needs to agree to the legal documents. However, there are API which provides possibilities to agree on legal documents on behalf of them.

Regular Poster
Posts: 92
Comments: 201

Ah ah, I missed the terms_accepted parameter. Suffice to set it to true then?

Thanks!

Forum Member
Posts: 3
Comments: 82

Unfortunately, no.

1. You need to impersonate themselves as this user.
POST /api/2/idp/ott
POST/api/2/idp/ott/login -> here you receive authorization cookie, and you need to use it for following requests
2. Take a list of legal documents.
GET /api/2/users/{{user_id}}/legal_documents
3.  Sing them.
POST /api/2/users/{{user_id}}/legal_documents
4. Logout from user
GET /api/2/idp/logout

Regular Poster
Posts: 92
Comments: 201

Clear, thanks for the details!

Beginner
Posts: 5
Comments: 9

Hi Stanislav,

When I'm trying to do that I succeeded to have my OTT but when I'm trying to login I have this error : 

Invoke-RestMethod : {"error":{"code":500,"message":"Internal Server Error","details":{},"domain":"PlatformAccountServer","context":{}}}

Here how I proceeded : 

$paramott = @"

{
     "login": "$UserLogin",
     "purpose": "user_login"
}

"@

$ott = Invoke-RestMethod -Method "POST" -Uri "${baseUrl}api/2/idp/ott" -Headers $headers -ContentType "application/json" -Body $paramott

$paramott2 = @"

{
     "ott": "$ott",

}

"@

$ott2 = Invoke-RestMethod -Method "POST" -Uri "${baseUrl}api/2/idp/ott/login" -Headers $headers -ContentType "application/json" -Body $paramott2

My main goal is to sign Legal document as you mentionned on this topic.

Forum Member
Posts: 3
Comments: 82

You have non-needed "," in your second JSON

Beginner
Posts: 5
Comments: 9

I did the change but still the same error message :/

Beginner
Posts: 5
Comments: 9

Ok I find out seems to work only if I put the data in plain text and doesn't works with a variable like :

$paramott2 = @"

{
     "ott": "T1RUAQAAAPpHBQAAAAAAp8_RSsA6SWGg9GzppjtWGg=="

}

"@

To you have a trick to make it work with the variable that was define under into my main script ?

Beginner
Posts: 5
Comments: 9

Also even if I succeeded to do the ott login I still having error message when I want to get the legal documents : 

Command :

$Get_legal_documents = Invoke-RestMethod -Method "GET" -Uri "${baseUrl}api/2/users/$UserId/legal_documents" -Headers $headers -ContentType "application/json"

Error :

Invoke-RestMethod : {"error":{"code":401,"message":"OK","details":{},"domain":"PlatformAccountServer","context":{}}}

 

 

Forum Member
Posts: 3
Comments: 82

Adrien VANACKERE wrote:

Ok I find out seems to work only if I put the data in plain text and doesn't works with a variable like :

$paramott2 = @"

{
     "ott": "T1RUAQAAAPpHBQAAAAAAp8_RSsA6SWGg9GzppjtWGg=="

}

"@

To you have a trick to make it work with the variable that was define under into my main script ?

ott text value is NOT the result of the rest call. ott value is  $ott.ott in your variables

 

$ott = Invoke-RestMethod -Method "POST" -Uri "${baseUrl}api/2/idp/ott" -Headers $headers -ContentType "application/json" -Body $paramott

$paramott2 = @"

{
     "ott": "$ott.ott"

}

"@

Forum Member
Posts: 3
Comments: 82

Adrien VANACKERE wrote:

Also even if I succeeded to do the ott login I still having error message when I want to get the legal documents : 

Command :

$Get_legal_documents = Invoke-RestMethod -Method "GET" -Uri "${baseUrl}api/2/users/$UserId/legal_documents" -Headers $headers -ContentType "application/json"

Error :

Invoke-RestMethod : {"error":{"code":401,"message":"OK","details":{},"domain":"PlatformAccountServer","context":{}}}

 

 

You need to save authorization cookie to session from login call and use this session to be authorized for the following calls. A Pythin example below

#!/usr/bin/python

# -*- coding: utf-8 -*-

 

# ************************************************************

# Copyright © 2019-2020 Acronis International GmbH.

# This source code is distributed under MIT software license.

# ************************************************************

 

import requests     # used for sending requests to the API

import json         # used for manipulating JSON data

import pprint       # used for formatting the output of JSON objects received in API responses

 

from base_operations import Config, BearerAuth, User

 

# Initialize config and read all required values form JSON config,

# an API client and a token files

cfg = Config(full=True)

 

user = User("user.json")

 

ott_request = {

  "purpose": "user_login",

  "login": f"{user.login}"

}

 

response = requests.post(

     f'{cfg.base_url}api/2/idp/ott',

     headers={**cfg.header, **{'Content-Type': 'application/json'}},

     auth=BearerAuth(cfg.access_token),

     data=json.dumps(ott_request)

)

 

if response.ok:

 

    session = requests.Session()

 

    response = session.post(

        f'{cfg.base_url}api/2/idp/ott/login',

        headers={**cfg.header, **{'Content-Type': 'application/json'}},

        auth=BearerAuth(cfg.access_token),

        data=response.text

    )

 

    if response.ok:

        response = session.get(

             f'{cfg.base_url}api/2/users/me',

             headers=cfg.header

        )

 

        if response.ok:

            print(f"The user {user.login} was successfully impersonated.")

 

            print(json.dumps(response.json(), indent=2))

 

            response = session.get(

                f'{cfg.base_url}api/2/idp/logout',

                headers=cfg.header

            )

 

            if response.ok:

                print(f"The user {user.login} was successfully logged out.")

            else:

                pprint.pprint(response.json())

        else:

            pprint.pprint(response.json())

    else:

        pprint.pprint(response.json())

else:

    pprint.pprint(response.json())

 

Beginner
Posts: 5
Comments: 9

Ok thanks for the help for that.

So now I have all my user information :

 

image 314

Under your talking about "here you receive authorization cookie, and you need to use it for following requests"

So which one should I use to get my legal document and should I use it in a body or straight into the get legal documents request ? Because I couldn't find the information neither in the RAML and in the developer.acronis.com/doc/account-management/v2/reference/index#/h

 

Forum Member
Posts: 3
Comments: 82

Cookies are part of the HTTP response. They are not in an HTML body. https://en.wikipedia.org/wiki/HTTP_cookie
In most cases, cookies are stored in a session like in my Python example. There is no uniqueness in Acronis API, it's a web-standard.

Thus you need to use the session for Invoke-RestMethod requests.
 

$paramott = @"
{
    "login": "$UserLogin",
    "purpose": "user_login"
}
"@

$ott = Invoke-RestMethod -Method "POST" -Uri "${baseUrl}api/2/idp/ott" -Headers $headers -ContentType "application/json" -Body $paramott 

$paramott2 = @"
{
"ott": "$ott.ott"
}
"@

$user = Invoke-RestMethod -Method "POST" -Uri "${baseUrl}api/2/idp/ott/login" -Headers $headers -ContentType "application/json" -Body $paramott2 -SessionVariable session

$Get_legal_documents = Invoke-RestMethod -Method "GET" -Uri "${baseUrl}api/2/users/$UserId/legal_documents" -Headers $headers -ContentType "application/json" -WebSession $session