Скачать документ

Чтобы скачать документ, прикреплённый к сущности, нужно знать внутренний ID этого документа. Внутренний ID хранится в поле value свойств документа. Чтобы узнать внутренний ID документа, используйте запрос Получить документ объекта.

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

Запросы Получить свойства и Получить документ разные для каждого типа сущностей. Для получения ID документа нужно отправить следующие запросы:

Используйте внутренний ID чтобы получить ссылку на документ следующим образом:

http://<saymon-hostname>/node-resources/docs/uid/<внутренний-ID>/pdf/1.pdf

Скачать документ с указанным ID

Этот пример показывает как скачать документ, используя его id. Для этого, в этом примере мы получаем внутренний ID запросом Получить документ объекта, а потом используем библиотеку urllib.request для скачивания файла.

import requests
import urllib.request
import json

saymon_hostname = <saymon_hostname>
api_token = <api_token>
object_id = <object_id>
document_id = <document_id>

# Get the document's properties
url = "http://" + saymon_hostname + "/node/api/objects/" + object_id + "/docs/" + document_id
params = {
    "api-token": api_token
}
response = requests.request("GET", url, params=params)

# Get document's internal ID and its name
doc = json.loads(response.text)

pdf_id = doc['value']
pdf_name = doc['name']

# Download the PDF file
urllib.request.urlretrieve("http://"+ saymon_hostname +"/node-resources/docs/uid/" + pdf_id + "/pdf/1.pdf?api-token=" + api_token, pdf_name)

Скачать все документы указанного объекта

Этот пример показывает как скачать все документы указанного объекта. Сначала, мы получаем все свойства объекта запросом Получить свойства объекта. Потом, для всех полученных свойств мы скачиваем файлы, указанные в свойствах с Типом = 7 (Uploaded Document) с помощью библиотеки urllib.request.

import requests
import urllib.request
import json

saymon_hostname = <saymon_hostname>
api_token = <api_token>
object_id = <object_id>

# Get all properties of an object
url = "http://" + saymon_hostname + "/node/api/objects/" + object_id + "/props"
params = {
    "api-token": api_token
}
response = requests.request("GET", url, params=params)

props = json.loads(response.text)

# Filter properties of type PDF document (type_id = 7)
for prop in props:
    if prop['type_id'] == 7:
        # Get document's internal ID and its name
        pdf_id = prop['value']
        pdf_name = prop['name']

        # Download the PDF file
        urllib.request.urlretrieve("http://"+ saymon_hostname +"/node-resources/docs/uid/" + pdf_id + "/pdf/1.pdf?api-token=" + api_token, pdf_name)