Описание Web API (JSON)


Получение LINQ-запросов может выполняться от имени любого пользователя с учетом его прав. Нужно использовать CookieContainer для сохранения cookies и уже с ним делать последующие запросы к API.

LINQ вызывается через стандартный интерфейс Web-API. Для этого, например в .NET, можно использовать класс HttpClient. Тело POST запросов передается в формате JSON в фигурных скобках.

МетодНазваниеОписаниеНачиная с версии
api/auth/loginАвторизацияМетод авторизации4.00
api/queries/getЗапросЗапрос непосредственно к LINQ4.00

Пример вызова LINQ-запроса в PowerShell

$baseAddress = New-Object -TypeName Uri -ArgumentList $urlA2
$cookieContainer = New-Object -TypeName System.Net.CookieContainer
 
$handler = New-Object -TypeName System.Net.Http.HttpClientHandler
$handler.CookieContainer = $cookieContainer
 
$client = New-Object -TypeName System.Net.Http.HttpClient -ArgumentList $handler
$client.BaseAddress = $baseAddress
$encoding = [System.Text.Encoding]::GetEncoding("utf-8")
 
# Авторизация
$auth = @{ 'Login' = $login; 'Password' = $password) } | ConvertTo-Json
$authResponse = $client.PostAsync(
			[string]::Join('/', $urlA2, "api/auth/login"),
			(New-Object -TypeName System.Net.Http.StringContent -ArgumentList $auth, $encoding,"application/json"))
 
# Запрос
$query = @{
  'DataSourceId' = $DataSourceId
  'PageSize' = 1000
} | ConvertTo-Json
$queryResponse = $client.PostAsync(
			 [string]::Join('/', $urlA2, "api/queries/get"), 
                         (New-Object -TypeName System.Net.Http.StringContent -ArgumentList $query, $encoding,"application/json"))
 
$queryResponseResult = $queryResponse.Result.Content.ReadAsStringAsync()
 
# Результат Linq запроса
$result = $queryResponseResult.Result | ConvertFrom-Json

Пример вызова LINQ-запроса в Python

import requests
 
# укажите свои параметры авторизации и адрес размещения системы
LOGIN = 'xxxxx'
PASSWORD = 'xxxxx'
# используйте либо логин-пароль, либо токен
# TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
 
# при необходимости, указывайте протокол https в строке с реальным адресом домена системы. 
# после адреса домена может быть указан еще и каталог размещения системы на домене (например, https://domain.example.ru/Master )
DOMAIN = 'http://xxxxx' 
 
session = requests.Session()
 
# авторизация
response = session.post(
    url = DOMAIN + '/api/auth/login', 
    json = {
        'Login': LOGIN, 
        'Password': PASSWORD,
    },
)
 
# либо авторизуйтесь, используя токен доступа
# response = session.post(
#     url = DOMAIN + '/api/auth/login', 
#     json = {
#         'tokenValue': TOKEN, 
#     },
# )
 
# сохранение полученных после авторизации cookies для последующих запросов  
cookies = session.cookies.get_dict()
 
# параметры для обращения к LINQ-запросу (может быть больше, см. выше)
LINQ = {
    'DataSourceId': "6b7c0388-a249-4d39-9cb6-xxxxxxxxxxx", # id LINQ-запроса в системе ADVANTA
    'PageSize': 100, # максимальное количество возвращаемых записей
}
 
# получение данных из LINQ-запроса
response = session.post(
    url = DOMAIN + '/api/queries/get', 
    cookies = cookies, 
    json = LINQ,
)
 
data = response.json()