Добавить документ к потоку

Добавить документ к потоку

Добавить документ к потоку ​

Добавляет документ к потоку с заданным ID. Список поддерживаемых форматов для загружаемых файлов перечислен в статье Свойства.

Запрос ​

HTTP Запрос ​

text
POST /node/api/flows/:id/docs

Права ​

text
upload-documents | create-documents | manage-documents | manage-flows

Параметры пути ​

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

обязательный | ID потока, для которого нужно создать документ. |

Тело запроса ​

Чтобы добавить веб страницу как документ, нужно добавить ссылку на неё в параметр value:

json
{
    "name": "Dataflow",
    "type_id": 6,
    "value": "https://en.wikipedia.org/wiki/Dataflow"
}

Чтобы загрузить файл, тело запроса должно содержать бинарный файл:

json
{
    "file": (
        "Dataflow.pdf",
        open("/path/to/Dataflow.pdf", "rb"),
        "application/pdf"
    )
}

Ответ ​

При привязке веб страницы, ответ будет содержать ID загруженного документа:

json
{
    "id":"62ed29a618baa649c1d25a18"
}

При загрузке файла, ответ будет содержать информацию о загруженном документе:

json
{
"id":"62ed2bdb18baa649c1d25a1a"
"type_id":7,
"name":"Dataflow.pdf",
"value":"upload_29c7ddcbcd2de76e4b938d9845eeaaba",
}

Ответ может содержать следующие поля:

ПараметрТипОписание
idStringID документа.
type_idIntegerТип загруженного документа. 6 для ссылок, 7 для загруженных файлов.
nameStringИмя документа.
valueStringВнутренняя ссылка на документ. Хранит адреса для веб страниц и upload_<...> для загруженных файлов.

Примеры ​

Добавить ссылку на веб страницу ​

Запрос ​

  • Bash
  • JavaScript
  • NodeJS
  • Python
bash
login=<...>
password=<...>
saymon_hostname=<...>
flow_id=<...>
url=https://$saymon_hostname/node/api/flows/$flow_id/docs

curl -X POST $url -u $login:$password \
    -H "Content-Type: application/json" \
    -d @- <<EOF
{
    "name": "Dataflow",
    "type_id": 6,
    "value": "https://en.wikipedia.org/wiki/Dataflow"
}
EOF
javascript
let login = <...>
let password = <...>
let saymonHostname = <...>
let flowId = <...>
let path = "/node/api/flows/" + flowId + "/docs";
let auth = "Basic " + btoa(login + ":" + password);

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

let data = JSON.stringify({
    "name": "Dataflow",
    "type_id": 6,
    "value": "https://en.wikipedia.org/wiki/Dataflow"
});

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));
javascript
const request = require("request");
const fs = require("fs");

let login = <...>
let password = <...>
let saymon_hostname = <...>
let flow_id = <...>
let url = "https://" + saymon_hostname + "/node/api/flows/" +
    flow_id + "/docs";

let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");
let body = JSON.stringify({
    "name": "Dataflow",
    "type_id": 6,
    "value": "https://en.wikipedia.org/wiki/Dataflow"
});

let options = {
    method: "POST",
    url: url,
    headers: {
        Authorization: auth
    },
    json : body
};

request(options, function (error, response, body) {
    if (error) throw new Error(error);
});
python
import requests
import json

login = <...>
password = <...>
saymon_hostname = <...>
flow_id = <...>
url = "https://" + saymon_hostname + "/node/api/flows/" + \
    flow_id + "/docs"

body = {
    "name": "Dataflow",
    "type_id": 6,
    "value": "https://en.wikipedia.org/wiki/Dataflow"
}

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

Ответ ​

json
{
"id":"62ed29a618baa649c1d25a18"
}

Загрузить документ ​

Запрос ​

  • Bash
  • JavaScript
  • NodeJS
  • Python
bash
login=<...>
password=<...>
saymon_hostname=<...>
flow_id=<...>
url=https://$saymon_hostname/node/api/flows/$flow_id/docs

curl -u $login:$password \
    -F "file=@/path/to/Dataflow.pdf;type=application/pdf" $url

The file can be selected with an HTML <input type="file" /> input element

javascript
let login = <...>
let password = <...>
let saymon_hostname = <...>
let flowId = <...>
let path = "https://" + saymon_hostname + "/node/api/flows/" +
    flowId + "/docs";
let auth = "Basic " + btoa(login + ":" + password);

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

let formData = new FormData();
let fileField = document.querySelector('input[type="file"]');

formData.append('file', fileField.files[0]);

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

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

let login = <...>
let password = <...>
let saymon_hostname = <...>
let flow_id = <...>
let url = "https://" + saymon_hostname + "/node/api/flows/" +
    flow_id + "/docs";

let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    method: "POST",
    url: url,
    headers: {
        Authorization: auth
    },
    formData: {
        file: fs.createReadStream("/path/to/Dataflow.pdf"),
        filetype: "pdf",
        filename: "Dataflow.pdf"
    }
};

request(options, function (error, response, body) {
    if (error) throw new Error(error);
    console.log(body);
});
python
import requests
import json

login = <...>
password = <...>
saymon_hostname = <...>
flow_id = <...>
url = "https://" + saymon_hostname + "/node/api/flows/" + \
    flow_id + "/docs";

files = {
    "file": (
        "Dataflow.pdf",
        open("/path/to/Dataflow.pdf", "rb"),
        "application/pdf"
    )
}

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

Ответ ​

json
{
    "name":"Dataflow.pdf",
    "value":"upload_29c7ddcbcd2de76e4b938d9845eeaaba",
    "type_id":7,
    "id":"62ed2bdb18baa649c1d25a1a"
}

Смотрите также ​