К основному содержанию
правило официальный · GitHub

dataverse-python-api-reference — правило для GitHub Copilot

Правило для GitHub Copilot: у агента под рукой справка по Python SDK Dataverse. Методы клиента, настройка и разбор ошибок в одном файле.

Установить в GitHub Copilot · Вручную: положить файлы Все способы и платформы ↓
.github/instructions/dataverse-python-api-reference.instructions.md
Открыть на GitHub

Что делает dataverse-python-api-reference

Правило передаёт агенту краткую справку по DataverseClient из Python SDK Dataverse: create, get, update, delete и работа со схемой через create_table, create_columns, delete_table. В примерах видно, что create и update принимают и одну запись, и список. Массовая правка при этом двух видов: одинаковые изменения для всех ID или своя запись на каждый ID.

Отдельный блок отведён DataverseConfig: http_timeout, http_retries, http_backoff и language_code. Ошибки ловятся через DataverseError, у исключения есть code, message и is_transient — по последнему признаку решают, повторять ли запрос.

В шапке стоит applyTo: '**', поэтому правило подключается ко всем файлам проекта, включая те, где Dataverse нет. Клиент инициализируют базовым URL и учётными данными Azure. Удаление таблицы через delete_table необратимо.

Какие задачи решает

  • создать таблицу с колонками и enum-статусом из Python
  • обновить пачку записей одним набором полей
  • понять, повторять ли запрос после DataverseError
  • задать таймаут и число повторов клиента
  • выгрузить записи страницами с фильтром OData

Примеры запросов агенту

  • Напиши на Python скрипт, который через create_table создаёт таблицу new_MyTable с колонками new_Title и new_Status.
  • Добавь в new_MyTable колонку new_Notes, а new_Count удали.
  • Перебери записи account с statecode eq 0, выбирая только name и telephone1, страницами по 50.

Как установить dataverse-python-api-reference

Вручную: положить файлы

.github/instructions/dataverse-python-api-reference.instructions.md

Поле applyTo задаёт, к каким файлам применять

По шагам, с командами для каждой платформы: AGENTS.md и CLAUDE.md: что это, кто читает и какой выбрать

Вопросы о dataverse-python-api-reference

Как установить dataverse-python-api-reference в GitHub Copilot?

Положите файл по пути .github/instructions/dataverse-python-api-reference.instructions.md.

Что делает dataverse-python-api-reference?

Даёт агенту справку по Python SDK Dataverse: сигнатуры методов клиента, поля конфига и тип исключений. Код пишется по реальному API, а не по памяти модели.

Что нужно, чтобы клиент Dataverse заработал?

Базовый URL и учётные данные Azure, которыми инициализируют DataverseClient. Дальше все вызовы идут через этот экземпляр.

Исходный текст

dataverse-python-api-reference.instructions.md · MIT
---
applyTo: '**'
---
# Dataverse SDK for Python — API Reference Guide

## DataverseClient Class
Main client for interacting with Dataverse. Initialize with base URL and Azure credentials.

### Key Methods

#### create(table_schema_name, records)
Create single or bulk records. Returns list of GUIDs.

```python
# Single record
ids = client.create("account", {"name": "Acme"})
print(ids[0])  # First GUID

# Bulk create
ids = client.create("account", [{"name": "Contoso"}, {"name": "Fabrikam"}])
```

#### get(table_schema_name, record_id=None, select, filter, orderby, top, expand, page_size)
Fetch single record or query multiple with OData options.

```python
# Single record
record = client.get("account", record_id="guid-here")

# Query with filter and paging
for batch in client.get(
    "account",
    filter="statecode eq 0",
    select=["name", "telephone1"],
    orderby=["createdon desc"],
    top=100,
    page_size=50
):
    for record in batch:
        print(record["name"])
```

#### update(table_schema_name, ids, changes)
Update single or bulk records.

```python
# Single update
client.update("account", "guid-here", {"telephone1": "555-0100"})

# Broadcast: apply same changes to many IDs
client.update("account", [id1, id2, id3], {"statecode": 1})

# Paired: one-to-one mapping
client.update("account", [id1, id2], [{"name": "A"}, {"name": "B"}])
```

#### delete(table_schema_name, ids, use_bulk_delete=True)
Delete single or bulk records.

```python
# Single delete
client.delete("account", "guid-here")

# Bulk delete (async)
job_id = client.delete("account", [id1, id2, id3])
```

#### create_table(table_schema_name, columns, solution_unique_name=None, primary_column_schema_name=None)
Create custom table.

```python
from enum import IntEnum

class ItemStatus(IntEnum):
    ACTIVE = 1
    INACTIVE = 2
    __labels__ = {
        1033: {"ACTIVE": "Active", "INACTIVE": "Inactive"}
    }

info = client.create_table("new_MyTable", {
    "new_Title": "string",
    "new_Quantity": "int",
    "new_Price": "decimal",
    "new_Active": "bool",
    "new_Status": ItemStatus
})
print(info["entity_logical_name"])
```

#### create_columns(table_schema_name, columns)
Add columns to existing table.

```python
created = client.create_columns("new_MyTable", {
    "new_Notes": "string",
    "new_Count": "int"
})
```

#### delete_columns(table_schema_name, columns)
Remove columns from table.

```python
removed = client.delete_columns("new_MyTable", ["new_Notes", "new_Count"])
```

#### delete_table(table_schema_name)
Delete custom table (irreversible).

```python
client.delete_table("new_MyTable")
```

#### get_table_info(table_schema_name)
Retrieve table metadata.

```python
info = client.get_table_info("new_MyTable")
if info:
    print(info["table_logical_name"])
    print(info["entity_set_name"])
```

#### list_tables()
List all custom tables.

```python
tables = client.list_tables()
for table in tables:
    print(table)
```

#### flush_cache(kind)
Clear SDK caches (e.g., picklist labels).

```python
removed = client.flush_cache("picklist")
```

## DataverseConfig Class
Configure client behavior (timeouts, retries, language).

```python
from PowerPlatform.Dataverse.core.config import DataverseConfig

cfg = DataverseConfig()
cfg.http_retries = 3
cfg.http_backoff = 1.0
cfg.http_timeout = 30
cfg.language_code = 1033  # English

client = DataverseClient(base_url=url, credential=cred, config=cfg)
```

## Error Handling
Catch `DataverseError` for SDK-specific exceptions. Check `is_transient` to decide retry.

```python
from PowerPlatform.Dataverse.core.errors import DataverseError

try:
    client.create("account", {"name": "Test"})
except DataverseError as e:
    print(f"Code: {e.code}")
    print(f"Message: {e.message}")
    print(f"Transient: {e.is_transient}")
    print(f"Details: {e.to_dict()}")
```

## OData Filter Tips
- Use exact logical names (lowercase) in filter expressions
- Column names in `select` are auto-lowercased
- Navigation property names in `expand` are case-sensitive

## References
- API docs: https://learn.microsoft.com/en-us/python/api/powerplatform-dataverse-client/powerplatform.dataverse.client.dataverseclient
- Config docs: https://learn.microsoft.com/en-us/python/api/powerplatform-dataverse-client/powerplatform.dataverse.core.config.dataverseconfig
- Errors: https://learn.microsoft.com/en-us/python/api/powerplatform-dataverse-client/powerplatform.dataverse.core.errors

© github · MIT · github/awesome-copilot

Темы и платформы

Все правила IDE по теме «Облака: AWS, Azure, GCP» →

Из того же набора770

Весь набор →
dataverse-python-file-operations Задаёт инструкции по загрузке файлов в Microsoft Dataverse через Python SDK. Помогает настроить чанкование для объектов больше 128 МБ и повтор запросов при сетевых сбоях. ★ 40 418звёзд репо dataverse-python-error-handling Правило подсказывает, как обрабатывать ошибки Dataverse SDK for Python: разбирать коды ответа и решать, когда повторять запрос. ★ 40 418звёзд репо dataverse-python-best-practices Правило для GitHub Copilot с рабочими шаблонами работы с Dataverse SDK для Python: авторизация, клиент, CRUD-операции. ★ 40 418звёзд репо dataverse-python-authentication-security Правило задаёт стандарты безопасной аутентификации для Dataverse SDK в Python. Помогает настроить токены через Azure Identity вместо небезопасных строк подключения. ★ 40 418звёзд репо dataverse-python-agentic-workflows Правило для GitHub Copilot с концепциями агентных сценариев на Dataverse SDK для Python: автономные агенты, MCP, A2A и проверка качества данных. ★ 40 418звёзд репо dataverse-python-advanced-features Задаёт правила работы с Dataverse SDK для Python в GitHub Copilot. Помогает писать выборки с OData-фильтрами, метаданные таблиц и обработку перечислений через IntEnum. ★ 40 418звёзд репо dart-n-flutter Правило задаёт рекомендации для Dart и Flutter в файлах .dart: стиль, документацию, использование языковых возможностей и дизайн API. ★ 40 418звёзд репо csharp Правило задаёт Copilot стиль C#-кода: именование, nullable-типы, форматирование и работу с ASP.NET Core. Пригодится, если агент пишет по-разному в каждом файле. ★ 40 418звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой