Получить ссылки (API v2)

Это экспериментальный запрос, который может измениться в будущих версиях системы.

Запрос, который возвращает ссылки в системе. Ответ на этот запрос можно фильтровать и настраивать параметрами, которые передаются в теле запроса.

Запрос

HTTP Запрос

POST /node/api/v2/getRefs

Права

referencePermissions

Параметры тела запроса

Параметр Тип Описание

filter

Object

Фильтр, применяемый к списку ссылок. Узнать больше можно на странице Поиск (API v2).

filter.owner_ids

Array<String>

Список ID пользователей. Этот запрос вернёт все ссылки, которые ведут на объекты, принадлежащие указанным пользователям.

filter.target_ids

Array<String>

Список ID объектов. Этот запрос вернёт все ссылки, которые ведут на указанные объекты.

filter.ids

Array<String>

Список ID ссылок, которые должны быть включены в ответ.

limit

Integer

Максимальное количество ссылок, возвращаемых запросом.

offset

Integer

Количество пропущенных ссылок.

Тело запроса

Тело запроса позволяет настраивать ответ этого запроса. В теле можно указать фильтры и сортировку возвращаемых ссылок, указать какие поля возвращаются и применять пагинацию с помощью параметров limit и offset.

Тело запроса указывать не обязательно. Если его не указать, то запрос вернёт все ссылки в системе и включит в записи следующие поля:

  • target,

  • owner,

  • client_data,

  • id,

  • entityType.

{
    "filter": {
        "owner_ids": [
            "66c05eec7e8a9b00113f341f",
            "66a8972a71ca890012634a03"
        ],
        "target_ids": [
            "66cba96a8bce1b00111a8bb3",
            "66cbb1268bce1b00111a8bc0"
        ],
        "ids": [
            1,
            3,
            "58ff5f454815650157a6a62f"
        ],
    },
    "limit": 5,
    "offset": 5
}

Ответ

Ответ содержит список ссылок в поле items и количество ссылок в поле count.

Список ссылок зависит от фильтров и настроек, указанных в теле запроса.

Примеры

Запрос

  • Bash

  • JavaScript

  • NodeJS

  • Python

login=<...>
password=<...>
saymon_hostname=<...>
url=https://$saymon_hostname/node/api/v2/getRefs

curl -X POST $url -u $login:$password \
    -H "Content-Type: application/json" \
    -d @- <<EOF
{
    "filter": {
        "owner_ids": [
            "66c05eec7e8a9b00113f341f",
            "66a8972a71ca890012634a03"
        ],
        "target_ids": [
            "66cba96a8bce1b00111a8bb3",
            "66cbb1268bce1b00111a8bc0"
        ],
        "ids": [
            1,
            3,
            "58ff5f454815650157a6a62f"
        ],
    },
    "limit": 5,
    "offset": 5
}
EOF
let login = <...>
let password = <...>
let saymonHostname = <...>
let path = "/node/api/v2/getRefs";
let auth = "Basic " + btoa(login + ":" + password);

let headers = new Headers();
headers.append("Content-Type", "application/json");
headers.append("Authorization", auth);

let data = JSON.stringify({
    "filter": {
        "owner_ids": [
            "66c05eec7e8a9b00113f341f",
            "66a8972a71ca890012634a03"
        ],
        "target_ids": [
            "66cba96a8bce1b00111a8bb3",
            "66cbb1268bce1b00111a8bc0"
        ],
        "ids": [
            1,
            3,
            "58ff5f454815650157a6a62f"
        ],
    },
    "limit": 5,
    "offset": 5
});

let requestOptions = {
    method: "POST",
    headers: headers,
    body: data
};

fetch(saymonHostname + path, requestOptions)
    .then(response => response.text())
    .then(result => console.log(result))
    .catch(error => console.log("error", error));
const http = require("http");

let login = <...>
let password = <...>
let saymonHostname = <...>
let path = "/node/api/v2/getRefs";
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "POST",
    "hostname": saymonHostname,
    "headers": {
        "Authorization": auth,
        "Content-Type": "application/json"
    },
    "path": path
};

let req = http.request(options, function (res) {
    let chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        let body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

let data = JSON.stringify({
    "filter": {
        "owner_ids": [
            "66c05eec7e8a9b00113f341f",
            "66a8972a71ca890012634a03"
        ],
        "target_ids": [
            "66cba96a8bce1b00111a8bb3",
            "66cbb1268bce1b00111a8bc0"
        ],
        "ids": [
            1,
            3,
            "58ff5f454815650157a6a62f"
        ],
    },
    "limit": 5,
    "offset": 5
});

req.write(data);
req.end();
import requests

login = <...>
password = <...>
saymon_hostname = <...>
url = "https://" + saymon_hostname + "/node/api/v2/getRefs"

body = {
    "filter": {
        "owner_ids": [
            "66c05eec7e8a9b00113f341f",
            "66a8972a71ca890012634a03"
        ],
        "target_ids": [
            "66cba96a8bce1b00111a8bb3",
            "66cbb1268bce1b00111a8bc0"
        ],
        "ids": [
            1,
            3,
            "58ff5f454815650157a6a62f"
        ],
    },
    "limit": 5,
    "offset": 5
}

response = requests.request("POST", url, json=body, auth=(login, password))
print(response.text)

Ответ

{
    "count": 1264,
    "items": [
        {
            "target": "67ffac13bc35cc002f11e11d",
            "owner": "62d7e58056d203149a08001b",
            "client_data": "{\"headlinePropIds\":[],\"custom_style\":{\"zIndex\":176,\"left\":\"514px\",\"top\":\"42px\",\"width\":\"300px\",\"height\":\"200px\"}}",
            "id": "67ffac1fbc35cc002f11e126",
            "entityType": 9
        }
        ...
    ]
}