{"id":15417519,"url":"https://github.com/kenotron/pco-cli","last_synced_at":"2025-07-23T23:35:33.385Z","repository":{"id":145446536,"uuid":"451297088","full_name":"kenotron/pco-cli","owner":"kenotron","description":"An unofficial Planning Center CLI tool","archived":false,"fork":false,"pushed_at":"2022-01-24T05:37:41.000Z","size":43,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-29T23:36:21.418Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kenotron.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-24T02:59:18.000Z","updated_at":"2022-03-21T21:09:31.000Z","dependencies_parsed_at":"2023-07-10T16:46:12.521Z","dependency_job_id":null,"html_url":"https://github.com/kenotron/pco-cli","commit_stats":{"total_commits":16,"total_committers":2,"mean_commits":8.0,"dds":0.0625,"last_synced_commit":"6c0fa9ea1fba2c79818389dc1a496e4fc37ad57e"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/kenotron/pco-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenotron%2Fpco-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenotron%2Fpco-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenotron%2Fpco-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenotron%2Fpco-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kenotron","download_url":"https://codeload.github.com/kenotron/pco-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenotron%2Fpco-cli/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266768430,"owners_count":23981355,"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","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-10-01T17:15:56.434Z","updated_at":"2025-07-23T23:35:33.367Z","avatar_url":"https://github.com/kenotron.png","language":"TypeScript","readme":"# An _unofficial_ Planning Center CLI (PCO CLI) \n\nMost of every function needed to manage Planning Center has been done through the Web UI. Another way to manage Planning Center is through the Application Programming Interface (API). It requires a developer to make these integration scripts. This tool seeks to allow a measure of automation without a large investment in development efforts. It is my hope that churches will be able to use this tool to integrate for their own needs. \n\nPlease contact me through the issues to request new features! \n\n## Installing the PCO CLI\n\nDownload the PCO CLI for your platform in the releases page of this repository:\n\n[Releases](https://github.com/kenotron/pco-cli/releases/)\n\nCreate a `.env` file by running the `pco` CLI utility once:\n\nOn Linux\n```\n$ ./pco-linux\n```\n\nOn Windows\n```\n\u003e pco-win\n```\n\nNow edit this `.env` with the proper values. You'll need to register as a developer at Planning Center.\n\nFor security, you need your own developer account key here:\nhttps://api.planningcenteronline.com/oauth/applications\n\nCreate a \"Personal Access Token\" (PAT) on the 2nd section. This will come in the form of an application ID and a secret. Place this information inside the `.env` next to the `pco-cli` binary\n\n```js\nPCO_APPLICATION_ID=[what you get from application ID]\nPCO_SECRET=[what you get from secret]\n```\n\n# Command / Help\n\nFor brevity, we'll use assume you are using Windows for these examples. It is important to get a list \nof what commands are supported in the current release by running this:\n\n```\n\u003e pco-win --help\n```\n\n## Export Command\n\nTo export data from various products with the PCO CLI, issue the command like this\n\n```\n\u003e pco-win export groups\n```\n\nThe `groups` above specifies which product to export. By default, it'll export the data and then store the in the `./exported/[date string]/` directory. You can specify the output directory this way:\n\n```\n\u003e pco-win export groups -o c:\\temp\\\n```\n\n# Overview of Planning Center (PCO)\nPlanning Center exposes a SINGLE API endpoint that encompass the entire product line. There are samples about how to create integrations with the API:\nhttps://github.com/orgs/planningcenter/repositories?q=pco_api\n\nAs we dig further, we tend to find that the developers at PCO favor a particular language - Ruby. It seems the backend is written with Rails as well as the backed API. I find some evidence of this just poking at the main site a bit and finding some Rails variables being defined in the HTML's script tags.\n\n## Tech Stack Overview\n\nCache: Amazon CloudFront\n\nFrontEnd: React + Alt.js (flux)\n\nBackEnd: Ruby on Rails\n\n\u003e Note: PCO is KIND enough to leave their sourcemaps in tact, so even when their code is mangled, the client side source code is entirely readable by the F12 devtools from modern browsers.\n\n## How to Auth with PCO REST API\nReference code on how to authenticate with the PCO API is here\nhttps://github.com/planningcenter/developers\n\nThere are 2 ways to authenticate against the PCO REST API:\n1. via a Personal Access Token (PAT)\n2. as an OAUTH application\n\nThe choice is really up to the use case. For example, if we're developing a script that would operate on a single organization (church), then the PAT (1) is a good idea. The token is issued as a developer account and can be thought of as a way to impersonate a real user to perform some automation.\n\nThe second way (2) is meant for third party services and applications to provide functionality for many churches. These integrations can themselves be products that make use of the PCO API. Most of what is needed within a single church probably does NOT need to use this kind of integration.\n\n## Using a PAT in PCO REST API\n\nTo use the REST API, all you need is to supply the HTTP headers with a magical auth header:\n\n\u003e encodedToken = base64(applicationId + \":\" + secret)\n\n```\nAuthorization: Basic encodedToken\n```\n\nThere is an API explorer, but one can learn a LOT by using a dedicated REST API tool to set your own headers, etc.:\nhttps://insomnia.rest/download\n\n# Contributing\nThere's just a bit of set up to get this playground running. Make sure you have latest node.js setup:\n\n* https://git-scm.com/ - install latest for platform\n* https://nodejs.org/en/ - install the latest for your platform\n* https://classic.yarnpkg.com - install the latest for your platform\n\nThe playground uses TypeScript and might grow to become a good starting point of PCO projects providing type safety in future developers' endeavors in trying to make automation for their own churches.\n\n## Clone \u0026 Install Some Dependencies \n\n```\ngit clone https://github.com/kenotron/pco-cli.git\ncd pco-cli\nyarn\n```\n\n## Add a .env file with PAT\n\nFor security, you need your own developer account key here:\nhttps://api.planningcenteronline.com/oauth/applications\n\nCreate a PAT on the 2nd section. This will come in the form of an application ID and a secret. In the HTTP sense, the application ID is your **username** and the secret is the **password**.\n\nIn the playground, you can get started by copying the `.env.sample` to `.env`, and then substituting the right value:\n\n```js\nPCO_APPLICATION_ID=[what you get from application ID]\nPCO_SECRET=[what you get from secret]\n```\n\n## Running the CLI without building\n\n```\n$ yarn start\n```\n\n## Building a bundle-optimized single JS\n\n```\n$ yarn build\n```\n\n## Packaging the script into an executable binary\n\n```\n$ yarn pkg\n```\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkenotron%2Fpco-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkenotron%2Fpco-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkenotron%2Fpco-cli/lists"}