Использование API для работы с отчетами

Клиент, содержащийся в пакете, позволяет работать с шаблонами и сформированными отчетами, используя описанные ниже методы.

Методы API разделены на следующие группы:

Описания и примеры приведены для TypeScript и Python.

Подготовка клиента для работы с отчетами

Чтобы работать с отчетами с помощью пакета SDK, импортируйте его и инициализируйте клиент:

Синтаксис импорта в TypeScript
import * as sdk from '@playbooks/sdk'
...
export async function main() {
  const v = await sdk.report.<method_name>({ <arg_1>, <arg_2>, ... })
  console.log(v)
}
Синтаксис импорта в Python
from playbooks.report import ReportClient
...
def main():
    client = ReportClient.initialize()
    v = client.<method_name>(<arg_1>, <arg_2>, ...)
    print(v)

Здесь:

  • <method_name>: имя используемого метода;

  • <arg_N>: параметры метода.

Методы для работы с шаблонами отчетов

Методы для работы с шаблонами отчетов включают:

Возвращаемые данные шаблона

Методы, возвращающие данные шаблона, предоставляют объект со следующими полями:

  • id: идентификатор шаблона;

  • name: название шаблона;

  • description: описание шаблона;

  • tags: список тегов;

  • created_at: дата и время создания шаблона;

  • created_by: идентификатор пользователя, создавшего шаблон;

  • updated_at: дата и времени последнего изменения;

  • updated_by: идентификатор пользователя, изменившего шаблон;

  • tenant_id: идентификатор тенанта, к которому относится шаблон;

  • organization_id: идентификатор организации, к которой принадлежит шаблон;

  • is_convert_to_pdf: индикатор формирования отчета в PDF (логическое значение).

Создание шаблона из схемы (create_template_from_schema)

Метод create_template_from_schema используется для создания нового шаблона отчета на основе существующей схемы шаблона.

Синтаксис create_template_from_schema в TypeScript
create_template_from_schema({
  expertise_id: <expertise_id> // string
})
Синтаксис create_template_from_schema в Python
create_template_from_schema(
   expertise_id=<expertise_id> # str
)

В методе используется параметр <expertise_id> — идентификатор схемы шаблона в формате UUID (строка).

Метод возвращает объект созданного шаблона.

Примеры создания шаблона

Пример скрипта с create_template_from_schema в TypeScript
id: create_template_from_schema_ts
name: create_template_from_schema_ts
description: Создание шаблона отчета из схемы
version: 0.0.1
type: script
source: !deno |

  import * as sdk from "@playbooks/sdk"

  const EXPERTISE_ID = "7c69d6dd-ce5e-4ffa-b27d-edbf1ccbfb23";

  export async function main() {
    try {
      console.log(" Создание шаблона из схемы...\n");

      const template = await sdk.report.create_template_from_schema({
        expertise_id: EXPERTISE_ID,
      });

      console.log(" Шаблон создан:");
      console.log(`   ID: ${template.id}`);
      console.log(`   Название: ${template.name}`);
      console.log(`   Дата создания: ${template.created_at}`);
      console.log(`   Создал: ${template.created_by}`);
      console.log(`   Tenant ID: ${template.tenant_id}`);
      console.log(`   Теги: ${JSON.stringify(template.tags)}`);

    } catch (e) {
      console.error(' Ошибка:', e);
    }
  }
Пример скрипта с create_template_from_schema в Python
id: create_template_from_schema_py
name: create_template_from_schema_py
description: Создание шаблона отчета из схемы экспертизы (Python)
version: 0.0.1
type: script
source: !py |

    from playbooks.report import ReportClient

    EXPERTISE_ID = "7c69d6dd-ce5e-4ffa-b27d-edbf1ccbfb23"

    def main():
        print("Создание шаблона из схемы (Python)...\n")

        client = ReportClient.initialize()

        try:
            template = client.create_template_from_schema(expertise_id=EXPERTISE_ID)

            print("Шаблон создан:")
            print(f"   ID: {template.id}")
            print(f"   Название: {template.name}")
            print(f"   Дата создания: {template.created_at}")
            print(f"   Создал: {template.created_by}")
            print(f"   Tenant ID: {template.tenant_id}")
            print(f"   Теги: {template.tags}")

        except Exception as e:
            print(f"Ошибка: {e}")

Получение шаблона (get_template)

Метод get_template возвращает данные о конкретном шаблоне по его идентификатору.

Синтаксис get_template в TypeScript
get_template({
  id: <template_id> // string
})
Синтаксис get_template в Python
get_template(
    id=<template_id> # str
)

В методе используется параметр <template_id> — идентификатор шаблона (строка).

Метод возвращает объект запрошенного шаблона.

Примеры получения шаблона

Пример скрипта с get_template в TypeScript
id: get_template_ts
name: get_template_ts
description: Получение шаблона по идентификатору
version: 0.0.1
type: script
source: !deno |

  import * as sdk from "@playbooks/sdk"

  const TEMPLATE_ID = "736c11db-4706-4c0c-98ae-da43cdaaccba";

  export async function main() {
    try {
      console.log(" Получение шаблона по ID...\n");

      const template = await sdk.report.get_template({
        id: TEMPLATE_ID,
      });

      console.log(" Шаблон найден:");
      console.log(`   ID: ${template.id}`);
      console.log(`   Название: ${template.name}`);
      console.log(`   Дата создания: ${template.created_at}`);
      console.log(`   Создал: ${template.created_by}`);
      console.log(`   Tenant ID: ${template.tenant_id}`);
      console.log(`   Теги: ${JSON.stringify(template.tags)}`);

    } catch (e) {
      console.error(' Ошибка:', e);
    }
  }
Пример скрипта с get_template в Python
id: get_template_py
name: get_template_py
description: Получение шаблона по ID (Python)
version: 0.0.1
type: script
source: !py |

    from playbooks.report import ReportClient

    TEMPLATE_ID = "736c11db-4706-4c0c-98ae-da43cdaaccba"

    def main():
        print("Получение шаблона по ID (Python)...\n")

        client = ReportClient.initialize()

        try:
            template = client.get_template(id=TEMPLATE_ID)

            print("Шаблон найден:")
            print(f"   ID: {template.id}")
            print(f"   Название: {template.name}")
            print(f"   Дата создания: {template.created_at}")
            print(f"   Создал: {template.created_by}")
            print(f"   Tenant ID: {template.tenant_id}")
            print(f"   Теги: {template.tags}")

        except Exception as e:
            print(f"Ошибка: {e}")

Получение списка шаблонов (get_templates)

Метод get_templates позволяет получить отфильтрованный и отсортированный список шаблонов. Фильтры для уточнения запроса, порядок сортировки и количество выводимых результатов задаются с помощью параметров.

Синтаксис get_templates в TypeScript
get_templates({
  filter: {
    query: <query>, // string | undefined
    tags: <tags>, // string[] | undefined
    is_schedule_enabled: <schedule_enabled_flag> // boolean | undefined
  },
  sorting: {
    order: <order_dir>, // 'asc' | 'desc'
    order_by: <order_field>, // 'name' | 'created_at' | 'updated_at'
  },
  pagination: {
    limit: <limit>, // number
    offset: <offset>, // number | undefined
  },
  organization_ids: <organization_ids> // string[]
})
Синтаксис get_templates в Python
get_templates(
    filter=TemplateFilter(
        query=<query>, # str | None
        tags=<tags>, # List[str] | None
        is_schedule_enabled=<schedule_enabled_flag> # bool | None
    ),
    sorting=TemplateSorting(
        order=<order_dir>, # 'asc' | 'desc'
        order_by=<order_field> # 'name' | 'created_at' | 'updated_at'
    ),
    pagination=Pagination(
        limit=<limit>, # int
        offset=<offset> # int | None
    ),
    organization_ids=<organization_ids> # List[str] | None
)

Параметры метода включают в себя:

  • настройки фильтрации списка (необязательный блок):

    • <query> (необязательный): запрос для поиска (строка);

    • <tags> (необязательный): список тегов, связанных с шаблонами (массив строк);

    • <schedule_enabled_flag> (необязательный): индикатор автоматического создания отчетов на основе шаблонов по расписанию (логическое значение);

  • настройки сортировки списка (необязательный блок):

    • <order_dir>: порядок сортировки ('asc'/Asc — по возрастанию или 'desc'/Desc — по убыванию);

    • <order_field>: поле для сортировки:

      • 'name' — название шаблона;

      • 'created_at' — время создания шаблона;

      • 'updated_at' — время обновления шаблона.

  • ограничение количества выводимых результатов (необязательный блок):

    • <limit> (обязателен, если ограничение указано): максимальное количество записей в ответе (число);

    • <offset> (необязательный): порядковый номер первой записи, начиная с которой выводится ответ (число);

  • <organization_ids> (необязательный): организации, к которым принадлежит шаблон отчета (массив строк).

Метод возвращает массив объектов шаблонов.

Примеры получения списка шаблонов

Пример скрипта с get_templates в TypeScript
id: get_templates_ts
name: get_templates_ts
description: Получение списка шаблонов с фильтрами
version: 0.0.1
type: script
source: !deno |

  import * as sdk from "@playbooks/sdk"

  const ORG_IDS = ["00000000-0000-0000-0000-000000000000"];
  const FILTER_QUERY = "Demo report";
  const FILTER_TAGS = [];
  const FILTER_SCHEDULE_ENABLED = true;

  export async function main() {
    try {
      console.log("Получение списка шаблонов...\n");

      const templates = await sdk.report.get_templates({
        organization_ids: ORG_IDS,
        filter: {
          query: FILTER_QUERY,
          tags: FILTER_TAGS,
          is_schedule_enabled: FILTER_SCHEDULE_ENABLED,
        },
        pagination: { limit: 10, offset: 0 },
        sorting: { order: "desc", order_by: "created_at" },
      });

      console.log(`Найдено шаблонов: ${templates.length}`);
      templates.forEach((t, i) => {
        console.log(`   ${i + 1}. ID: ${t.id}, Название: ${t.name}, Создан: ${t.created_at}`);
      });

    } catch (e) {
      console.error('Ошибка:', e);
    }
  }
Пример скрипта с get_templates в Python
id: get_templates_py
name: get_templates_py
description: Получение списка шаблонов с фильтрами (Python)
version: 0.0.10
type: script
source: !py |

    from playbooks.report import ReportClient, TemplateFilter, TemplateSorting, Pagination

    ORG_IDS = ["00000000-0000-0000-0000-000000000000"]
    FILTER_QUERY = "PB-984"
    FILTER_TAGS = []
    FILTER_SCHEDULE_ENABLED = True

    def main():
        print("Получение списка шаблонов (Python)...\n")

        client = ReportClient.initialize()

        try:
            templates = client.get_templates(
                organization_ids=ORG_IDS,
                filter=TemplateFilter(
                    query=FILTER_QUERY,
                    tags=FILTER_TAGS,
                    is_schedule_enabled=FILTER_SCHEDULE_ENABLED,
                ),
                sorting=TemplateSorting(order="desc", order_by="created_at"),
                pagination=Pagination(limit=10, offset=0),
            )

            print(f"Найдено шаблонов: {len(templates)}")
            for i, t in enumerate(templates):
                print(f"   {i+1}. ID: {t.id}, Название: {t.name}, Создан: {t.created_at}")

        except Exception as e:
            print(f"Ошибка: {e}")

Обновление шаблона (update_template)

Метод update_template используется для изменения полей шаблона.

Синтаксис update_template в TypeScript
update_template({
  id: <template_id>, // string
  name: <name>, // string | undefined
  description: <description>, // string | undefined
  tags: <tags> // string[] | undefined
})
Синтаксис update_template в Python
update_template(
    id=<template_id>, # str
    name=<name>, # str | None
    description=<description>, # str | None
    tags=<tags> # List[str] | None
)

Параметры метода включают в себя:

  • <template_id> — идентификатор шаблона (строка);

  • <name> (необязательный): название шаблона (строка);

  • <description> (необязательный): описание шаблона (строка);

  • <tags> (необязательный): список тегов (массив строка).

Поля, не переданные в запросе, изменены не будут.

Метод возвращает объект измененного шаблона.

Примеры изменения шаблона

Пример скрипта с update_template в TypeScript
id: update_template_ts
name: update_template_ts
description: Обновление шаблона
version: 0.0.1
type: script
source: !deno |

  import * as sdk from "@playbooks/sdk"

  const TEMPLATE_ID = "736c11db-4706-4c0c-98ae-da43cdaaccba";
  const NEW_NAME = "Обновленный шаблон SDK";
  const NEW_DESCRIPTION = "Новое описание шаблона";
  const NEW_TAGS = ["updated", "sdk"];

  export async function main() {
    try {
      console.log("Обновление шаблона...\n");

      const result = await sdk.report.update_template({
        id: TEMPLATE_ID,
        name: NEW_NAME,
        description: NEW_DESCRIPTION,
        tags: NEW_TAGS,
      });

      console.log("Шаблон обновлен:");
      console.log(`   ID: ${result.id}`);
      console.log(`   Новое название: ${result.name}`);
      console.log(`   Новое описание: ${result.description}`);
      console.log(`   Новые теги: ${JSON.stringify(result.tags)}`);

      const updated = await sdk.report.get_template({ id: TEMPLATE_ID });
      console.log(`   Проверка - название: ${updated.name}`);
      console.log(`   Проверка - описание: ${updated.description}`);
      console.log(`   Проверка - теги: ${JSON.stringify(updated.tags)}`);

    } catch (e) {
      console.error('Ошибка:', e);
    }
  }
Пример скрипта с update_template в Python
id: update_template_py
name: update_template_py
description: Обновление шаблона
version: 0.0.1
type: script
source: !py |

    from playbooks.report import ReportClient

    TEMPLATE_ID = "736c11db-4706-4c0c-98ae-da43cdaaccba"
    NEW_NAME = "Обновленный шаблон SDK"
    NEW_DESCRIPTION = "Новое описание шаблона"
    NEW_TAGS = ["updated", "sdk"]

    def main():
        print("Обновление шаблона ...\n")

        client = ReportClient.initialize()

        try:
            result = client.update_template(id=TEMPLATE_ID, name=NEW_NAME, description=NEW_DESCRIPTION, tags=NEW_TAGS)

            print("Шаблон обновлен:")
            print(f"   ID: {result.id}")
            print(f"   Новое название: {result.name}")
            print(f"   Новое описание: {result.description}")
            print(f"   Новые теги: {result.tags}")

            updated = client.get_template(id=TEMPLATE_ID)
            print(f"   Проверка - название: {updated.name}")
            print(f"   Проверка - описание: {updated.description}")
            print(f"   Проверка - теги: {updated.tags}")

        except Exception as e:
            print(f"Ошибка: {e}")

Удаление шаблона (delete_template)

Метод delete_template удаляет шаблон отчета.

Синтаксис delete_template в TypeScript
delete_template({
  id: <template_id>, // string
  with_reports: <with_reports> // boolean
})
Синтаксис delete_template в Python
delete_template(
    id=<template_id>, # str
    with_reports=<with_reports> # bool | None
)

Параметры метода включают в себя:

  • <template_id>: идентификатор шаблона (строка);

  • <with_reports>: переключатель удаления всех связанных с шаблоном отчетов (логическое значение).

Метод возвращает идентификатор удаленного шаблона.

Примеры удаления шаблона

Пример скрипта с delete_template в TypeScript
id: delete_template_ts
name: delete_template_ts
description: Удаление шаблона
version: 0.0.4
type: script
source: !deno |

  import * as sdk from "@playbooks/sdk"

  const TEMPLATE_ID = "736c11db-4706-4c0c-98ae-da43cdaaccba";

  export async function main() {
    try {
      console.log(" Удаление шаблона...\n");

      const deletedId = await sdk.report.delete_template({
        id: TEMPLATE_ID,
        with_reports: false,
      });

      console.log(` Шаблон удален, ID: ${deletedId}`);

      // Проверим, что удалился
      try {
        await sdk.report.get_template({ id: TEMPLATE_ID });
        console.log(" Шаблон все еще существует!");
      } catch {
        console.log(" Подтверждено: шаблон не найден (удален)");
      }

    } catch (e) {
      console.error(' Ошибка:', e);
    }
  }
Пример скрипта с delete_template в Python
id: delete_template_py
name: delete_template_py
description: Удаление шаблона (Python)
version: 0.0.8
type: script
source: !py |

    from playbooks.report import ReportClient

    TEMPLATE_ID = "736c11db-4706-4c0c-98ae-da43cdaaccba"

    def main():
        print("Удаление шаблона (Python)...\n")

        client = ReportClient.initialize()

        try:
            deleted_id = client.delete_template(id=TEMPLATE_ID, with_reports=False)

            print(f"Шаблон удален, ID: {deleted_id}")

            try:
                client.get_template(id=TEMPLATE_ID)
                print("Шаблон все еще существует!")
            except:
                print("Подтверждено: шаблон не найден (удален)")

        except Exception as e:
            print(f"Ошибка: {e}")

Методы для работы с отчетами

Методы для работы с отчетами включают:

Возвращаемые данные отчета

Методы, возвращающие данные отчета, предоставляют объект со следующими полями:

  • id: идентификатор отчета;

  • name: имя отчета;

  • tags: список тегов, связанных с отчетом;

  • created_at: дата и время публикации отчета;

  • created_by: имя пользователя, сформировавшего отчет;

  • updated_at: дата и времени последнего изменения;

  • updated_by: идентификатор пользователя, изменившего отчет;

  • tenant_id: идентификатор тенанта, к которому относится отчет;

  • organization_id: идентификатор организации, к которой принадлежит отчет;

  • generate_method: способ формирования отчета:

    • auto — автоматически;

    • manual — вручную.

  • template_id — идентификатор шаблона, по которому был создан отчет.

Создание отчета (generate_report)

Метод generate_report запускает формирование отчета на основе указанного шаблона для заданных организаций.

Синтаксис generate_report в TypeScript
generate_report({
  template_id: <template_id>, // string
  organization_ids: <organization_ids> // string[]
})
Синтаксис generate_report в Python
generate_report(
    template_id=<template_id>, # str
    organization_ids=<organization_ids> # List[str]
)

Параметры метода включают в себя:

  • <template_id>: идентификатор шаблона, на основе которого будет сформирован отчет (строка);

  • <organization_ids>: организации, к которым принадлежит отчет (массив строк).

Метод возвращает объект сформированного отчета.

Примеры формирования отчета

Пример скрипта с generate_report в TypeScript
id: generate_report_ts
name: generate_report_ts
description: Формирование отчета из шаблона
version: 0.0.1
type: script
source: !deno |

  import * as sdk from "@playbooks/sdk"

  const TEMPLATE_ID = "736c11db-4706-4c0c-98ae-da43cdaaccba";
  const ORG_IDS = ["00000000-0000-0000-0000-000000000000"];

  export async function main() {
    try {
      console.log(" Формирование отчета...\n");

      const report = await sdk.report.generate_report({
        template_id: TEMPLATE_ID,
        organization_ids: ORG_IDS,
      });

      console.log(" Отчет создан:");
      console.log(`   ID отчета: ${report.id}`);
      console.log(`   Название: ${report.name}`);
      console.log(`   Template ID: ${report.template_id}`);
      console.log(`   Метод формирования: ${report.generate_method}`);
      console.log(`   Дата создания: ${report.created_at}`);
      console.log(`   Теги: ${JSON.stringify(report.tags)}`);

    } catch (e) {
      console.error(' Ошибка:', e);
    }
  }
Пример скрипта с generate_report в Python
id: generate_report_py
name: generate_report_py
description: Формирование отчета из шаблона
version: 0.0.1
type: script
source: !py |

    from playbooks.report import ReportClient

    TEMPLATE_ID = "736c11db-4706-4c0c-98ae-da43cdaaccba"
    ORG_IDS = ["00000000-0000-0000-0000-000000000000"]

    def main():
        print("Формирование отчета (Python)...\n")

        client = ReportClient.initialize()

        try:
            report = client.generate_report(template_id=TEMPLATE_ID, organization_ids=ORG_IDS)

            print("Отчет создан:")
            print(f"   ID отчета: {report.id}")
            print(f"   Название: {report.name}")
            print(f"   Template ID: {report.template_id}")
            print(f"   Метод формирования: {report.generate_method}")
            print(f"   Дата создания: {report.created_at}")
            print(f"   Теги: {report.tags}")

        except Exception as e:
            print(f"Ошибка: {e}")

Получение данных об отчете (get_report)

Метод get_report используется для получения информации о сформированном отчете по его идентификатору.

Синтаксис get_report в TypeScript
get_report({
  id: <report_id> // string
})
Синтаксис get_report в Python
get_report(
    id=<report_id> # str
)

В методе используется параметр <report_id> — идентификатор отчета (строка).

Метод возвращает объект запрошенного отчета.

Примеры получения данных об отчете

Пример скрипта с get_report в TypeScript
id: get_report_ts
name: get_report_ts
description: Получение отчета по ID
version: 0.0.1
type: script
source: !deno |

  import * as sdk from "@playbooks/sdk"

  const REPORT_ID = "eba99fcb-6895-42dd-8347-c4453979a7fb";

  export async function main() {
    try {
      console.log(" Получение отчета по ID...\n");

      const report = await sdk.report.get_report({
        id: REPORT_ID,
      });

      console.log(" Отчет найден:");
      console.log(`   ID: ${report.id}`);
      console.log(`   Название: ${report.name}`);
      console.log(`   Template ID: ${report.template_id}`);
      console.log(`   Метод генерации: ${report.generate_method}`);
      console.log(`   Дата создания: ${report.created_at}`);
      console.log(`   Теги: ${JSON.stringify(report.tags)}`);

    } catch (e) {
      console.error(' Ошибка:', e);
    }
  }
Пример скрипта с get_report в Python
id: get_report_py
name: get_report_py
description: Получение отчета по ID (Python)
version: 0.0.1
type: script
source: !py |

    from playbooks.report import ReportClient

    REPORT_ID = "eba99fcb-6895-42dd-8347-c4453979a7fb"

    def main():
        print("Получение отчета по ID (Python)...\n")

        client = ReportClient.initialize()

        try:
            report = client.get_report(id=REPORT_ID)

            print("Отчет найден:")
            print(f"   ID: {report.id}")
            print(f"   Название: {report.name}")
            print(f"   Template ID: {report.template_id}")
            print(f"   Метод генерации: {report.generate_method}")
            print(f"   Дата создания: {report.created_at}")
            print(f"   Теги: {report.tags}")

        except Exception as e:
            print(f"Ошибка: {e}")

Получение списка отчетов (get_reports)

Метод get_reports используется для получения отчетов, соответствующих заданным критериям фильтрации.

Синтаксис get_reports в TypeScript
get_reports({
  filter: {
    query: <query>, // string | undefined
    tags: <tags>, // string[] | undefined
  },
  sorting: {
    order: <order_dir>, // 'asc' | 'desc'
    order_by: <order_field>, // 'name' | 'created_at' | 'updated_at'
  },
  pagination: {
    limit: <limit>, // number
    offset: <offset>, // number | undefined
  },
  organization_ids: <organization_ids> // string[]
})
Синтаксис get_reports в Python
get_reports(
    filter=ReportFilter(
        query=<query>, # str | None
        tags=<tags>, # List[str] | None
    ),
    sorting=ReportSorting(
        order=<order_dir>, # 'asc' | 'desc'
        order_by=<order_field> # 'name' | 'created_at' | 'updated_at'
    ),
    pagination=Pagination(
        limit=<limit>, # int
        offset=<offset> # int | None
    ),
    organization_ids=<organization_ids> # List[str] | None
)

Параметры метода включают в себя:

  • настройки фильтрации списка (необязательный блок):

    • <query> (необязательный): запрос для поиска (строка);

    • <tags> (необязательный): список тегов, связанных с отчетами (массив строк);

  • настройки сортировки списка (необязательный блок):

    • <order_dir>: порядок сортировки ('asc'/Asc — по возрастанию или 'desc'/Desc — по убыванию);

    • <order_field>: поле для сортировки:

      • 'name' — название отчета;

      • 'created_at' — время создания отчета;

      • 'updated_at' — время изменения отчета.

  • ограничение количества выводимых результатов (необязательный блок):

    • <limit> (обязателен, если ограничение указано): максимальное количество записей в ответе (число);

    • <offset> (необязательный): порядковый номер первой записи, начиная с которой выводится ответ (число);

  • <organization_ids> (необязательный): организации, к которым принадлежит отчет (массив строк).

Метод возвращает массив объектов отчетов.

Примеры получения списка отчетов

Пример скрипта с get_reports в TypeScript
id: get_reports_ts
name: get_reports_ts
description: Получение списка отчетов с фильтрами
version: 0.0.1
type: script
source: !deno |

  import * as sdk from "@playbooks/sdk"

  const ORG_IDS = ["00000000-0000-0000-0000-000000000000"];
  const FILTER_QUERY = "main-reports";
  const FILTER_TAGS = [];

  export async function main() {
    try {
      console.log("Получение списка отчетов...\n");

      const reports = await sdk.report.get_reports({
        organization_ids: ORG_IDS,
        filter: {
          query: FILTER_QUERY,
          tags: FILTER_TAGS,
        },
        pagination: { limit: 10, offset: 0 },
        sorting: { order: "desc", order_by: "created_at" },
      });

      console.log(`Найдено отчетов: ${reports.length}`);
      reports.forEach((r, i) => {
        console.log(`   ${i + 1}. ID: ${r.id}, Название: ${r.name}, Template: ${r.template_id}, Создан: ${r.created_at}`);
      });

    } catch (e) {
      console.error('Ошибка:', e);
    }
  }
Пример скрипта с get_reports в Python
id: get_reports_py
name: get_reports_py
description: Получение списка отчетов с фильтрами (Python)
version: 0.0.1
type: script
source: !py |

    from playbooks.report import ReportClient, ReportFilter, ReportSorting, Pagination

    ORG_IDS = ["00000000-0000-0000-0000-000000000000"]
    FILTER_QUERY = "main-reports"
    FILTER_TAGS = []

    def main():
        print("Получение списка отчетов (Python)...\n")

        client = ReportClient.initialize()

        try:
            reports = client.get_reports(
                organization_ids=ORG_IDS,
                filter=ReportFilter(query=FILTER_QUERY, tags=FILTER_TAGS),
                sorting=ReportSorting(order="desc", order_by="created_at"),
                pagination=Pagination(limit=10, offset=0),
            )

            print(f"Найдено отчетов: {len(reports)}")
            for i, r in enumerate(reports):
                print(f"   {i+1}. ID: {r.id}, Название: {r.name}, Template: {r.template_id}, Создан: {r.created_at}")

        except Exception as e:
            print(f"Ошибка: {e}")

Удаление отчета (delete_report)

Метод delete_report удаляет сформированный отчет.

Синтаксис delete_report в TypeScript
delete_report({
  id: <report_id> // string
})
Синтаксис delete_report в Python
delete_report(
    id=<report_id> # str
)

В методе используется параметр <report_id> — идентификатор отчета (строка).

Метод возвращает идентификатор удаленного отчета.

Примеры удаления отчета

Пример скрипта с delete_report в TypeScript
id: delete_report_ts
name: delete_report_ts
description: Удаление отчета
version: 0.0.1
type: script
source: !deno |

  import * as sdk from "@playbooks/sdk"

  const REPORT_ID = "eba99fcb-6895-42dd-8347-c4453979a7fb";

  export async function main() {
    try {
      console.log(" Удаление отчета...\n");

      const deletedId = await sdk.report.delete_report({
        id: REPORT_ID,
      });

      console.log(` Отчет удален, ID: ${deletedId}`);

      // Проверим, что удалился
      try {
        await sdk.report.get_report({ id: REPORT_ID });
        console.log(" Отчет все еще существует!");
      } catch {
        console.log(" Подтверждено: отчет не найден (удален)");
      }

    } catch (e) {
      console.error(' Ошибка:', e);
    }
  }
Пример скрипта с delete_report в Python
id: delete_report_py
name: delete_report_py
description: Удаление отчета (Python)
tags: [tests, py, sdk, report]
version: 0.0.8
type: script
source: !py |

    from playbooks.report import ReportClient

    REPORT_ID = "eba99fcb-6895-42dd-8347-c4453979a7fb"

    def main():
        print("Удаление отчета (Python)...\n")

        client = ReportClient.initialize()

        try:
            deleted_id = client.delete_report(id=REPORT_ID)
            print(f"Отчет удален, ID: {deleted_id}")

            try:
                client.get_report(id=REPORT_ID)
                print("Отчет все еще существует!")
            except:
                print("Подтверждено: отчет не найден (удален)")

        except Exception as e:
            print(f"Ошибка: {e}")

Метод возвращает идентификатор удаленного отчета.

Была ли полезна эта страница?

Обратная связь