Skip to content

Commit 8f9cdd9

Browse files
Add connectors: Azure Automation, OneNote, Key Vault, and more (#37)
* Add Azure Automation, OneNote, Key Vault, and more * fix mypy * address feedback * fix tests * Address feedback * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
1 parent 7f8df97 commit 8f9cdd9

39 files changed

Lines changed: 21357 additions & 498 deletions

.github/copilot-instructions.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,11 +415,13 @@ When adding a new connector client to the SDK, use the **add-connector** skill (
415415

416416
7. **Update `samples/sample_connector_usage/README.md`** — add the new sample to the samples table
417417

418-
8. **Update the connection setup skill** — add the connector's API name to the supported list in `.github/skills/connection-setup/SKILL.md` (Step 2)
418+
8. **Update `CHANGELOG.md`** — add the new connector to the `[Unreleased]` section under `### Added`
419419

420-
9. **Run all tests**`pytest` must pass with zero failures before committing
420+
9. **Update the connection setup skill**add the connector's API name to the supported list in `.github/skills/connection-setup/SKILL.md` (Step 2)
421421

422-
10. **Create a PR** — reference the GitHub issue (e.g., `Closes #9`)
422+
10. **Run all tests**`pytest` must pass with zero failures before committing
423+
424+
11. **Create a PR** — reference the GitHub issue (e.g., `Closes #9`)
423425

424426
### Validation checklist
425427

@@ -432,3 +434,5 @@ When adding a new connector client to the SDK, use the **add-connector** skill (
432434
- [ ] README.md connector table updated
433435
- [ ] Sample file created and compiles without errors
434436
- [ ] Samples README updated
437+
- [ ] CHANGELOG.md updated
438+
- [ ] Connection setup skill updated

.github/skills/add-connector/SKILL.md

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,36 @@ Add a row to `samples/sample_connector_usage/README.md`:
354354

355355
Insert alphabetically by connector name.
356356

357-
### Step 8: Run Tests
357+
### Step 8: Update CHANGELOG
358+
359+
Add the new connector to the `[Unreleased]` section in `CHANGELOG.md` under `### Added`:
360+
361+
```markdown
362+
## [Unreleased]
363+
364+
### Added
365+
366+
- **{DisplayName}** (`{connector_name}.py`) connector client with unit tests and samples
367+
```
368+
369+
If there are multiple new connectors being added together, combine them in a single bullet point:
370+
371+
```markdown
372+
- **3 new connector clients** with unit tests and samples:
373+
- {DisplayName}, Other Connector, Another Connector
374+
```
375+
376+
### Step 9: Update Connection Setup Skill
377+
378+
Add the connector's API name to the supported SDK connector names list in `.github/skills/connection-setup/SKILL.md` (Step 2).
379+
380+
Find the line that starts with `Supported SDK connector names:` and add `{connector_name}` alphabetically to the list:
381+
382+
```markdown
383+
Supported SDK connector names: `arm`, `azuread`, ..., `{connector_name}`, ... (and any `Microsoft.Web/connections` connector name).
384+
```
385+
386+
### Step 10: Run Tests
358387

359388
Execute the full test suite to validate:
360389

@@ -367,7 +396,7 @@ Execute the full test suite to validate:
367396
- [ ] No import errors
368397
- [ ] Code quality tests pass (imports, structure)
369398

370-
### Step 9: Validate Sample Syntax
399+
### Step 11: Validate Sample Syntax
371400

372401
```powershell
373402
python -m py_compile samples/sample_connector_usage/sample_connector_usage_{connector_name}.py
@@ -384,6 +413,8 @@ Before completing, verify:
384413
- [ ] `tests/test_{connector_name}.py` created with comprehensive tests
385414
- [ ] `samples/sample_connector_usage/sample_connector_usage_{connector_name}.py` created
386415
- [ ] `samples/sample_connector_usage/README.md` updated
416+
- [ ] `CHANGELOG.md` updated with new connector in `[Unreleased]` section
417+
- [ ] `.github/skills/connection-setup/SKILL.md` Step 2 updated with connector API name
387418
- [ ] All tests pass
388419
- [ ] Sample file compiles without errors
389420

@@ -397,6 +428,8 @@ Before completing, verify:
397428
| `tests/test_{connector_name}.py` | New test file |
398429
| `samples/sample_connector_usage/sample_connector_usage_{connector_name}.py` | New sample |
399430
| `samples/sample_connector_usage/README.md` | Add to samples table |
431+
| `CHANGELOG.md` | Add to `[Unreleased]` section |
432+
| `.github/skills/connection-setup/SKILL.md` | Add connector name to Step 2 |
400433

401434
## Common Issues
402435

.github/skills/connection-setup/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ Remove-Item $tempFile -ErrorAction SilentlyContinue
6565
6666
### Step 2: Create Connection
6767
68-
Supported SDK connector names: `arm`, `azuread`, `azureblob`, `azurequeues`, `azuretables`, `commondataservice`, `documentdb`, `eventhubs`, `excelonlinebusiness`, `kusto`, `mq`, `msgraphgroupsanduser`, `office365`, `office365users`, `onedrive`, `outlook`, `servicebus`, `sharepointonline`, `smtp`, `teams`, `wdatp`, `wordonlinebusiness` (and any `Microsoft.Web/connections` connector name).
68+
Supported SDK connector names: `arm`, `azureautomation`, `azuredatafactory`, `azuredigitaltwins`, `azuread`, `azureblob`, `azurequeues`, `azuretables`, `azurevm`, `commondataservice`, `documentdb`, `eventhubs`, `excelonlinebusiness`, `keyvault`, `kusto`, `microsoftbookings`, `mq`, `msgraphgroupsanduser`, `office365`, `office365groups`, `office365users`, `onedrive`, `onenote`, `outlook`, `planner`, `servicebus`, `sharepointonline`, `smtp`, `teams`, `wdatp`, `wordonlinebusiness`, `yammer` (and any `Microsoft.Web/connections` connector name).
6969
7070
```powershell
7171
$connectorName = "<connector-name>" # e.g., "azureblob", "kusto", "mq", "msgraphgroupsanduser", "office365", "office365users", "sharepointonline", "teams"

CHANGELOG.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111

12+
- **Yammer** (`yammer.py`) connector client with unit tests and samples
13+
- **Planner** (`planner.py`) connector client with unit tests and samples
14+
- **OneNote** (`onenote.py`) connector client with unit tests and samples
15+
- **Office 365 Groups** (`office365groups.py`) connector client with unit tests and samples
16+
- **Microsoft Bookings** (`microsoftbookings.py`) connector client with unit tests and samples
17+
- **Azure Key Vault** (`keyvault.py`) connector client with unit tests and samples
18+
- **Azure VM** (`azurevm.py`) connector client with unit tests and samples
19+
- **Azure Digital Twins** (`azuredigitaltwins.py`) connector client with unit tests and samples
20+
- **Azure Data Factory** (`azuredatafactory.py`) connector client with unit tests and samples
21+
- **Azure Automation** (`azureautomation.py`) connector client with unit tests and samples
22+
23+
## [0.3.0b2]
24+
25+
### Added
26+
1227
- **13 new connector clients** with unit tests and samples:
1328
- ARM (Azure Resource Manager), Azure AD, Azure Cosmos DB, Azure Event Hubs, Azure Queues, Azure Tables, Excel Online (Business), Microsoft Dataverse, Microsoft Defender ATP, Outlook, Service Bus, SMTP, Word Online (Business)
1429

@@ -105,8 +120,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
105120
- EditorConfig and VSCode settings
106121
- Pyproject.toml packaging configuration
107122

108-
[Unreleased]: https://github.com/Azure/Connectors-Python-SDK/compare/v0.2.0b2...HEAD
109-
[0.2.0b2]: https://github.com/Azure/Connectors-Python-SDK/compare/v0.1.0db1...v0.2.0b2
123+
[Unreleased]: https://github.com/Azure/Connectors-Python-SDK/compare/v0.3.0b2...HEAD
124+
[0.3.0b2]: https://github.com/Azure/Connectors-Python-SDK/compare/v0.2.0b2...v0.3.0b2
125+
[0.2.0b2]: https://github.com/Azure/Connectors-Python-SDK/compare/v0.1.0b1...v0.2.0b2
110126
[0.2.0b1]: https://github.com/Azure/Connectors-Python-SDK/compare/v0.1.0dev2...v0.2.0b1
111127
[0.1.0dev2]: https://github.com/Azure/Connectors-Python-SDK/compare/v0.1.0dev1...v0.1.0dev2
112128
[0.1.0dev1]: https://github.com/Azure/Connectors-Python-SDK/releases/tag/v0.1.0dev1

README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,29 +155,39 @@ The following connectors have been generated and validated with comprehensive te
155155
| Connector | Package | Status | Coverage | Tests |
156156
|-----------|---------|--------|----------|-------|
157157
| **ARM (Azure Resource Manager)** | `azure.connectors.arm` | ✅ Complete | 🔄 SDK Generated | 39 tests |
158+
| **Azure Automation** | `azure.connectors.azureautomation` | ✅ Complete | 🔄 SDK Generated | 32 tests |
158159
| **Azure AD** | `azure.connectors.azuread` | ✅ Complete | 🔄 SDK Generated | 35 tests |
159160
| **Azure Blob Storage** | `azure.connectors.azureblob` | ✅ Complete | ✅ E2E Validated | 52 tests |
160161
| **Azure Cosmos DB** | `azure.connectors.documentdb` | ✅ Complete | 🔄 SDK Generated | 46 tests |
162+
| **Azure Data Factory** | `azure.connectors.azuredatafactory` | ✅ Complete | 🔄 SDK Generated | 38 tests |
163+
| **Azure Digital Twins** | `azure.connectors.azuredigitaltwins` | ✅ Complete | 🔄 SDK Generated | 44 tests |
161164
| **Azure Data Explorer** | `azure.connectors.kusto` | ✅ Complete | ✅ E2E Validated | 37 tests |
162165
| **Azure Event Hubs** | `azure.connectors.eventhubs` | ✅ Complete | 🔄 SDK Generated | 30 tests |
166+
| **Azure Key Vault** | `azure.connectors.keyvault` | ✅ Complete | 🔄 SDK Generated | 42 tests |
163167
| **Azure Queues** | `azure.connectors.azurequeues` | ✅ Complete | 🔄 SDK Generated | 34 tests |
164168
| **Azure Tables** | `azure.connectors.azuretables` | ✅ Complete | 🔄 SDK Generated | 43 tests |
169+
| **Azure VM** | `azure.connectors.azurevm` | ✅ Complete | 🔄 SDK Generated | 43 tests |
165170
| **Excel Online (Business)** | `azure.connectors.excelonlinebusiness` | ✅ Complete | 🔄 SDK Generated | 37 tests |
166171
| **IBM MQ** | `azure.connectors.mq` | ✅ Complete | ✅ E2E Validated | 30 tests |
172+
| **Microsoft Bookings** | `azure.connectors.microsoftbookings` | ✅ Complete | 🔄 SDK Generated | 36 tests |
167173
| **Microsoft Dataverse** | `azure.connectors.commondataservice` | ✅ Complete | 🔄 SDK Generated | 46 tests |
168174
| **Microsoft Defender ATP** | `azure.connectors.wdatp` | ✅ Complete | 🔄 SDK Generated | 32 tests |
169175
| **Microsoft Graph** | `azure.connectors.msgraphgroupsanduser` | ✅ Complete | ✅ E2E Validated | 46 tests |
170176
| **Microsoft Teams** | `azure.connectors.teams` | ✅ Complete | ✅ E2E Validated | 27 tests |
171177
| **Office 365 Outlook** | `azure.connectors.office365` | ✅ Complete | ✅ E2E Validated | 41 tests |
172178
| **Office 365 Users** | `azure.connectors.office365users` | ✅ Complete | ✅ E2E Validated | 40 tests |
179+
| **Office 365 Groups** | `azure.connectors.office365groups` | ✅ Complete | 🔄 SDK Generated | 50 tests |
173180
| **OneDrive for Business** | `azure.connectors.onedrive` | ✅ Complete | 🔄 SDK Generated | 41 tests |
181+
| **OneNote** | `azure.connectors.onenote` | ✅ Complete | 🔄 SDK Generated | 60 tests |
174182
| **Outlook.com** | `azure.connectors.outlook` | ✅ Complete | 🔄 SDK Generated | 42 tests |
183+
| **Planner** | `azure.connectors.planner` | ✅ Complete | 🔄 SDK Generated | 66 tests |
175184
| **Service Bus** | `azure.connectors.servicebus` | ✅ Complete | 🔄 SDK Generated | 37 tests |
176185
| **SharePoint Online** | `azure.connectors.sharepointonline` | ✅ Complete | ✅ E2E Validated | 44 tests |
177186
| **SMTP** | `azure.connectors.smtp` | ✅ Complete | 🔄 SDK Generated | 27 tests |
178187
| **Word Online (Business)** | `azure.connectors.wordonlinebusiness` | ✅ Complete | 🔄 SDK Generated | 30 tests |
188+
| **Yammer** | `azure.connectors.yammer` | ✅ Complete | 🔄 SDK Generated | 38 tests |
179189

180-
**Total:** 647 connector tests + 110 SDK component tests
190+
**Total:** 685 connector tests + 110 SDK component tests
181191

182192
See [ROADMAP.md](ROADMAP.md) for planned connector additions and [tests/README.md](tests/README.md) for detailed test coverage.
183193

samples/sample_connector_usage/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,37 @@ python sample_connector_usage_<connector>.py
1919
| Sample | Connector | Environment Variable |
2020
|--------|-----------|---------------------|
2121
| `sample_connector_usage_arm.py` | Azure Resource Manager | `ARM_CONNECTION_URL` |
22+
| `sample_connector_usage_azureautomation.py` | Azure Automation | `AZUREAUTOMATION_CONNECTION_URL` |
2223
| `sample_connector_usage_azuread.py` | Azure AD (Entra ID) | `AZUREAD_CONNECTION_URL` |
2324
| `sample_connector_usage_azureblob.py` | Azure Blob Storage | `AZUREBLOB_CONNECTION_URL` |
25+
| `sample_connector_usage_azuredatafactory.py` | Azure Data Factory | `AZUREDATAFACTORY_CONNECTION_URL` |
26+
| `sample_connector_usage_azuredigitaltwins.py` | Azure Digital Twins | `AZUREDIGITALTWINS_CONNECTION_URL` |
2427
| `sample_connector_usage_azurequeues.py` | Azure Storage Queues | `AZUREQUEUES_CONNECTION_URL` |
2528
| `sample_connector_usage_azuretables.py` | Azure Storage Tables | `AZURETABLES_CONNECTION_URL` |
29+
| `sample_connector_usage_azurevm.py` | Azure VM | `AZUREVM_CONNECTION_URL` |
2630
| `sample_connector_usage_commondataservice.py` | Microsoft Dataverse | `COMMONDATASERVICE_CONNECTION_URL` |
2731
| `sample_connector_usage_documentdb.py` | Azure Cosmos DB | `DOCUMENTDB_CONNECTION_URL` |
2832
| `sample_connector_usage_kusto.py` | Azure Data Explorer | `KUSTO_CONNECTION_URL` |
2933
| `sample_connector_usage_eventhubs.py` | Azure Event Hubs | `EVENTHUBS_CONNECTION_URL` |
34+
| `sample_connector_usage_keyvault.py` | Azure Key Vault | `KEYVAULT_CONNECTION_URL` |
3035
| `sample_connector_usage_excelonlinebusiness.py` | Excel Online (Business) | `EXCELONLINE_CONNECTION_URL` |
3136
| `sample_connector_usage_mq.py` | IBM MQ | `MQ_CONNECTION_URL` |
37+
| `sample_connector_usage_microsoftbookings.py` | Microsoft Bookings | `MICROSOFTBOOKINGS_CONNECTION_URL` |
3238
| `sample_connector_usage_msgraph.py` | MS Graph Groups & Users | `MSGRAPH_CONNECTION_URL` |
3339
| `sample_connector_usage_office365.py` | Office 365 Outlook | `OFFICE365_CONNECTION_URL` |
40+
| `sample_connector_usage_office365groups.py` | Office 365 Groups | `OFFICE365GROUPS_CONNECTION_URL` |
3441
| `sample_connector_usage_office365users.py` | Office 365 Users | `OFFICE365USERS_CONNECTION_URL` |
3542
| `sample_connector_usage_outlook.py` | Outlook.com | `OUTLOOK_CONNECTION_URL` |
3643
| `sample_connector_usage_onedrive.py` | OneDrive for Business | `ONEDRIVE_CONNECTION_URL` |
44+
| `sample_connector_usage_onenote.py` | OneNote | `ONENOTE_CONNECTION_URL` |
45+
| `sample_connector_usage_planner.py` | Microsoft Planner | `PLANNER_CONNECTION_URL` |
3746
| `sample_connector_usage_servicebus.py` | Azure Service Bus | `SERVICEBUS_CONNECTION_URL` |
3847
| `sample_connector_usage_sharepoint.py` | SharePoint Online | `SHAREPOINT_CONNECTION_URL` |
3948
| `sample_connector_usage_smtp.py` | SMTP | `SMTP_CONNECTION_URL` |
4049
| `sample_connector_usage_teams.py` | Microsoft Teams | `TEAMS_CONNECTION_URL` |
4150
| `sample_connector_usage_wdatp.py` | Windows Defender ATP | `WDATP_CONNECTION_URL` |
4251
| `sample_connector_usage_wordonlinebusiness.py` | Word Online (Business) | `WORDONLINEBUSINESS_CONNECTION_URL` |
52+
| `sample_connector_usage_yammer.py` | Yammer (Viva Engage) | `YAMMER_CONNECTION_URL` |
4353

4454
Set the appropriate environment variable to your connection runtime URL before running:
4555

0 commit comments

Comments
 (0)