{"id":21108334,"url":"https://github.com/celerium/datto-powershellwrapper","last_synced_at":"2025-07-08T16:32:04.628Z","repository":{"id":111869565,"uuid":"452903429","full_name":"Celerium/Datto-PowerShellWrapper","owner":"Celerium","description":"PowerShell wrapper for the Datto BCDR API","archived":false,"fork":false,"pushed_at":"2024-03-09T15:48:19.000Z","size":2091,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-03-10T15:55:36.790Z","etag":null,"topics":["api","bcdr","celerium","datto","powershell","rest","rest-api","saas"],"latest_commit_sha":null,"homepage":"https://celerium.github.io/Datto-PowerShellWrapper/","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Celerium.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"custom":"https://www.buymeacoffee.com/Celerium"}},"created_at":"2022-01-28T01:36:53.000Z","updated_at":"2024-03-09T16:03:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"e5bad44c-02ca-4bfa-9f2d-2f9c21b2cd89","html_url":"https://github.com/Celerium/Datto-PowerShellWrapper","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Celerium%2FDatto-PowerShellWrapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Celerium%2FDatto-PowerShellWrapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Celerium%2FDatto-PowerShellWrapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Celerium%2FDatto-PowerShellWrapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Celerium","download_url":"https://codeload.github.com/Celerium/Datto-PowerShellWrapper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225449614,"owners_count":17476094,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","bcdr","celerium","datto","powershell","rest","rest-api","saas"],"created_at":"2024-11-20T00:46:02.773Z","updated_at":"2024-11-20T00:46:03.342Z","avatar_url":"https://github.com/Celerium.png","language":"PowerShell","readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"http://Celerium.org\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/Celerium/Datto-PowerShellWrapper/main/.github/images/Celerium_PoSHGallery_DattoAPI.png\" alt=\"_CeleriumDemo\" width=\"200\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  Celerium_DattoAPI\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n[![Az_Pipeline][Az_Pipeline-shield]][Az_Pipeline-url]\n[![GitHub_Pages][GitHub_Pages-shield]][GitHub_Pages-url]\n\n[![PoshGallery_Version][PoshGallery_Version-shield]][PoshGallery_Version-url]\n[![PoshGallery_Platforms][PoshGallery_Platforms-shield]][PoshGallery_Platforms-url]\n[![PoshGallery_Downloads][PoshGallery_Downloads-shield]][PoshGallery_Downloads-url]\n[![codeSize][codeSize-shield]][codeSize-url]\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n\n[![Blog][Website-shield]][Website-url]\n[![GitHub_License][GitHub_License-shield]][GitHub_License-url]\n\n---\n\n## Buy me a coffee\n\nWhether you use this project, have learned something from it, or just like it, please consider supporting it by buying me a coffee, so I can dedicate more time on open-source projects like this :)\n\n\u003ca href=\"https://www.buymeacoffee.com/Celerium\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg\" alt=\"Buy Me A Coffee\" style=\"width:150px;height:50px;\"\u003e\u003c/a\u003e\n\n---\n\n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://celerium.org\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/Celerium/Datto-PowerShellWrapper/main/.github/images/Celerium_PoSHGitHub_DattoAPI.png\" alt=\"Logo\"\u003e\n  \u003c/a\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.powershellgallery.com/packages/DattoAPI\" target=\"_blank\"\u003ePowerShell Gallery\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/Celerium/Datto-PowerShellWrapper/issues/new/choose\" target=\"_blank\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/Celerium/Datto-PowerShellWrapper/issues/new/choose\" target=\"_blank\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n\u003c!-- TABLE OF CONTENTS\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n--\u003e\n\n## About The Project\n\nThe [DattoAPI](https://www.datto.com/) offers users the ability to extract data from Datto into third-party reporting tools and aims to abstract away the details of interacting with Datto's API endpoints in such a way that is consistent with PowerShell nomenclature. This gives system administrators and PowerShell developers a convenient and familiar way of using Datto's API to create documentation scripts, automation, and integrations.\n\n- :book: Project documentation can be found on [Github Pages](https://celerium.github.io/Datto-PowerShellWrapper/)\n- :book: Datto's REST API documentation on their management portal [here](https://portal.dattobackup.com/integrations/api) *[ Requires a login ]*.\n\nDatto features a REST API that makes use of common HTTP request methods. In order to maintain PowerShell best practices, only approved verbs are used.\n\n- GET -\u003e `Get-`\n- PUT -\u003e `Set-`\n\nAdditionally, PowerShell's `verb-noun` nomenclature is respected. Each noun is prefixed with `Datto` in an attempt to prevent naming problems.\n\nFor example, one might access the `/bcdr/device` endpoint by running the following PowerShell command with the appropriate parameters:\n\n```posh\nGet-DattoDevice -serialNumber 12345\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Install\n\nThis module can be installed directly from the [PowerShell Gallery](https://www.powershellgallery.com/packages/DattoAPI) with the following command:\n\n```posh\nInstall-Module -Name DattoAPI\n```\n\n- :information_source: This module supports PowerShell 5.0+ and *should* work in PowerShell Core.\n- :information_source: If you are running an older version of PowerShell, or if PowerShellGet is unavailable, you can manually download the *main* branch and place the *DattoAPI* folder into the (default) `C:\\Program Files\\WindowsPowerShell\\Modules` folder.\n\nProject documentation can be found on [Github Pages](https://celerium.github.io/Datto-PowerShellWrapper/)\n\n- A full list of functions can be retrieved by running `Get-Command -Module DattoAPI`.\n- Help info and a list of parameters can be found by running `Get-Help \u003ccommand name\u003e`, such as:\n\n```posh\nGet-Help Get-DattoDevice\nGet-Help Get-DattoDevice -Full\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Initial Setup\n\nAfter installing this module, you will need to configure both the *base URI* \u0026 *API access tokens* that are used to talk with the Datto API.\n\n1. Run `Add-DattoBaseURI`\n   - By default, Datto's `https://api.datto.com/v1` URI is used.\n   - If you have your own API gateway or proxy, you may put in your own custom URI by specifying the `-base_uri` parameter:\n      - `Add-DattoBaseURI -base_uri http://myapi.gateway.celerium.org`\n      \u003cbr\u003e\n\n2. Run `Add-DattoAPIKey -Api_Key_Public 12345 -Api_Key_Secret 123456789`\n   - It will prompt you to enter your API access tokens if you do not specify them.\n   - Datto API access tokens are generated via the Datto portal at *Admin \u003e Integrations*\n   \u003cbr\u003e\n\n3. [**optional**] Run `Export-DattoModuleSettings`\n   - This will create a config file at `%UserProfile%\\DattoAPI` that holds the *base uri* \u0026 *API access tokens* information.\n   - Next time you run `Import-Module -Name DattoAPI`, this configuration file will automatically be loaded.\n   - :warning: Exporting module settings encrypts your API access tokens in a format that can **only be unencrypted by the user principal** that encrypted the secret. It makes use of .NET DPAPI, which for Windows uses reversible encrypted tied to your user principal. This means that you **cannot copy** your configuration file to another computer or user account and expect it to work.\n   - :warning: However in Linux\\Unix operating systems the secret keys are more obfuscated than encrypted so it is recommend to use a more secure \u0026 cross-platform storage method.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Usage\n\nCalling an API resource is as simple as running `Get-Datto\u003cresourceName\u003e`\n\n- The following is a table of supported functions and their corresponding API resources:\n- Table entries with [ `-` ] indicate that the functionality is **NOT** supported by the Datto API at this time.\n\n| Section   | API Resource       | Create | Read                          | Update                    | Delete |\n| --------- | ------------------ | ------ | ----------------------------- | ------------------------- | ------ |\n| Reporting | ActivityLog        | -      | `Get-DattoActivityLog`        | -                         | -      |\n| BCDR      | Agent              | -      | `Get-DattoAgent`              | -                         | -      |\n| BCDR      | Alert              | -      | `Get-DattoAlert`              | -                         | -      |\n| BCDR      | Asset              | -      | `Get-DattoAsset`              | -                         | -      |\n| BCDR      | **BCDR** *         | -      | `Get-DattoBCDR`               | -                         | -      |\n| BCDR      | Device             | -      | `Get-DattoDevice`             | -                         | -      |\n| BCDR      | Share              | -      | `Get-DattoShare`              | -                         | -      |\n| BCDR      | VMRestore          | -      | `Get-DattoVMRestore`          | -                         | -      |\n| BCDR      | Volume             | -      | `Get-DattoVolume`             | -                         | -      |\n| SaaS      | **SaaS** *         | -      | `Get-DattoSaaS`               | -                         | -      |\n| SaaS      | Domains            | -      | `Get-DattoDomain`             | -                         | -      |\n| SaaS      | Seats              | -      | `Get-DattoSeat`               | -                         | -      |\n| SaaS      | Applications       | -      | `Get-DattoApplication`        | -                         | -      |\n| SaaS      | BulkSeatChange     | -      | -                             | `Set-DattoBulkSeatChange` | -      |\n\n- :warning: `Get-DattoBCDR` \u0026 `Get-DattoSaaS` are special functions.\n- These are **NOT** endpoints in Datto's REST API and are a single set of commands that can run endpoints in their associate sections.\n- I included them because they made scripting easier and felt like a nice-to-have feature IMO\n\nEach `Get-Datto*` function will respond with the raw data that Datto's API provides.\n\n- :warning: Returned data is mostly structured the same but can vary between commands.\n- pagination - Information about the number of pages of results are available and other metadata.\n- items - The actual information requested (this is what most people care about)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Roadmap\n\n- [ ] Add Changelog\n- [x] Build more robust Pester \u0026 ScriptAnalyzer tests\n- [x] Figure out how to do CI \u0026 PowerShell gallery automation\n- [ ] Add example scripts \u0026 automation\n\nSee the [open issues](https://github.com/Celerium/Datto-PowerShellWrapper/issues) for a full list of proposed features (and known issues).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n---\n\n## Contributing\n\nContributions are what makes the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!\n\nSee the [CONTRIBUTING](https://github.com/Celerium/Datto-PowerShellWrapper/blob/main/.github/CONTRIBUTING.md) guide for more information about contributing.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## License\n\nDistributed under the MIT License. See [`LICENSE`](https://github.com/Celerium/Datto-PowerShellWrapper/blob/main/LICENSE) for more information.\n\n[![GitHub_License][GitHub_License-shield]][GitHub_License-url]\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Contact\n\n\u003cdiv align=\"left\"\u003e\n\n  \u003cp align=\"left\"\u003e\n    ·\n    \u003ca href=\"https://celerium.org/#/contact\" target=\"_blank\"\u003eWebsite\u003c/a\u003e\n    ·\n    \u003ca href=\"mailto: celerium@celerium.org\"\u003eEmail\u003c/a\u003e\n    ·\n    \u003ca href=\"https://www.reddit.com/user/CeleriumIO\" target=\"_blank\"\u003eReddit\u003c/a\u003e\n    ·\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Acknowledgments\n\nBig thank you to the following people and services as they have provided me with lots of helpful information as I continue this project!\n\n- [GitHub Pages](https://pages.github.com)\n- [Img Shields](https://shields.io)\n- [Font Awesome](https://fontawesome.com)\n- [Choose an Open Source License](https://choosealicense.com)\n- [GitHub Emoji Cheat Sheet](https://www.webpagefx.com/tools/emoji-cheat-sheet)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n[Az_Pipeline-shield]:               https://img.shields.io/azure-devops/build/AzCelerium/DattoAPI/4?style=for-the-badge\u0026label=DevOps_Build\n[Az_Pipeline-url]:                  https://dev.azure.com/AzCelerium/DattoAPI/_build?definitionId=4\n\n[GitHub_Pages-shield]:              https://img.shields.io/github/actions/workflow/status/celerium/Datto-PowerShellWrapper/pages%2Fpages-build-deployment?style=for-the-badge\u0026label=GitHub%20Pages\n[GitHub_Pages-url]:                 https://github.com/Celerium/Datto-PowerShellWrapper/actions/workflows/pages/pages-build-deployment\n\n[GitHub_License-shield]:            https://img.shields.io/github/license/celerium/Datto-PowerShellWrapper?style=for-the-badge\n[GitHub_License-url]:               https://github.com/Celerium/Datto-PowerShellWrapper/blob/main/LICENSE\n\n[PoshGallery_Version-shield]:       https://img.shields.io/powershellgallery/v/dattoapi?include_prereleases\u0026style=for-the-badge\n[PoshGallery_Version-url]:          https://www.powershellgallery.com/packages/DattoAPI\n\n[PoshGallery_Platforms-shield]:     https://img.shields.io/powershellgallery/p/Dattoapi?style=for-the-badge\n[PoshGallery_Platforms-url]:        https://www.powershellgallery.com/packages/DattoAPI\n\n[PoshGallery_Downloads-shield]:     https://img.shields.io/powershellgallery/dt/DattoAPI?style=for-the-badge\n[PoshGallery_Downloads-url]:        https://www.powershellgallery.com/packages/DattoAPI\n\n[website-shield]:                   https://img.shields.io/website?up_color=blue\u0026url=https%3A%2F%2Fcelerium.org\u0026style=for-the-badge\u0026label=Blog\n[website-url]:                      https://celerium.org\n\n[codeSize-shield]:                  https://img.shields.io/github/repo-size/celerium/Datto-PowerShellWrapper?style=for-the-badge\n[codeSize-url]:                     https://github.com/Celerium/Datto-PowerShellWrapper\n\n[contributors-shield]:              https://img.shields.io/github/contributors/celerium/Datto-PowerShellWrapper?style=for-the-badge\n[contributors-url]:                 https://github.com/Celerium/Datto-PowerShellWrapper/graphs/contributors\n\n[forks-shield]:                     https://img.shields.io/github/forks/celerium/Datto-PowerShellWrapper?style=for-the-badge\n[forks-url]:                        https://github.com/Celerium/Datto-PowerShellWrapper/network/members\n\n[stars-shield]:                     https://img.shields.io/github/stars/celerium/Datto-PowerShellWrapper?style=for-the-badge\n[stars-url]:                        https://github.com/Celerium/Datto-PowerShellWrapper/stargazers\n\n[issues-shield]:                    https://img.shields.io/github/issues/Celerium/Datto-PowerShellWrapper?style=for-the-badge\n[issues-url]:                       https://github.com/Celerium/Datto-PowerShellWrapper/issues\n","funding_links":["https://www.buymeacoffee.com/Celerium"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcelerium%2Fdatto-powershellwrapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcelerium%2Fdatto-powershellwrapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcelerium%2Fdatto-powershellwrapper/lists"}