planningcenter / developers Goto Github PK
View Code? Open in Web Editor NEWPlanning Center API docs and support
Home Page: https://developer.planning.center/docs/
Planning Center API docs and support
Home Page: https://developer.planning.center/docs/
Hi,
I want to be able to build a feature that Planning Center Online doesn't currently have: swaps.
To do this I really need to be able to schedule people and update declined/accepted statuses for specific positions in specific plans. Is there a public API that would allow me to do this?
You Services android app allows me to do such things, but is it using a private API?
Hello
I am writing a PHP script to duplicate Planning Center Songs (there is currently no possibility for Song duplication in Planning Center, right?). So far I am able to duplicate most fields from Songs, Arrangements and Keys. However I have not achieved to do the following things:
I receive these information by calling GET (fields "properties", "attachments" and "sequence_to_s") but they are ignored when doing a POST.
Is there a possibility to do these things or at least some of them?
Thank you very much for your help!
Is it possible to change the people scheduled for a plan through the API? It looks like it is not, but it would be helpful if I could.
Hello
I have problems to download lyrics in pdf format through my script. Downloading an mp3 file is possible by passing parameter "secure_token". However the pdf attachment has no "secure_token". How can I do this? What is "secure_link" for?
Thank you very much.
We're using F1-PCO Sync to sync contact info between FellowshipOne and PCO.
http://fellowshipintegrations.com/f1pco-sync/
The problem is this has stopped syncing, and hasn't synced for quite a while now. Tried to contact Rapid Digital (original developer), number is bad. PCO support tech suggested asking in this thread if anyone from Rapid Digital (or anyone at all) has any information, or has experienced this issue, or can help me track it down?
If there is a support agent from PCO Sync (Rapid Digital) that can help get PCO development team involved, that would also be helpful.
P.S. I am not a developer but I can get one!
Is it possible to add the position create date to the API, which can be used to determine when the scheduler scheduled the person for the position?
Morning! I hope you guys are well! I have been wondering about this for a while and I'm sure it is something I am doing wrong.
I have noticed that it takes about 2s to do an OAuth and JSON GET to get plan data. I has seen this ever since I implemented OAuth in PHP. I spent some this this am with a simple obj OAuth 1.0 class and recreated the same speed result in Obj as well.
I have attached my Xcode project that has two buttons... one using my weberserver's PHP script to do the auth and grab the data, the other, uses the Objc library. Any ideas on why it is so slow?
Link to my project:
http://dl.fcpost.com/=WebDisk/Shared_Files/mtimmons/JSONAUTH.zip
-matt
I am wondering how to filter the GET and pull back only those records that have been updated as of a specified date. I would like to filter GET People as well as GET Plans of a specified Service Type ID. Thanks in advance.
The documentation does not make it clear how or if it is possible to access who is scheduled for particular services. Is this something that can be done? If so what api services are used.
It would be great if you could add the Decline Reason to the Plan API. We would like to store the declines on our end, but also add the reasons in case it was a fault of ours (like a scheduling conflict). If the Decline Reason is in the API, can you point it out to me as I can't seem to find it.
Does the API provide a way to determine the timestamp for when someone declined a position?
Hi, Is it possible to get the People API to work for people in other apps?
We are looking to implement single sign-on (SSO) using our existing LDAP/AD infrastructure. This is already in progress with Google Apps and a few other systems we use.
What is the best way to accomplish this within the framework of what you currently offer? Do you have a simple SSO integration solution already in place that we could make use of?
Here is the relevant snippet of code:
https://gist.github.com/luke-barnett/fff62c8cfc3dbd30e020
I'm quite inexperienced with Ruby so it could easily be something silly on my behalf.
Thanks!
I was wondering if you could help us authenticate with your API. Just to make sure I understand:
I am receiving “Unauthorized” on step 5. Are you able to help me with this?
We're working on moving from XML to JSON with your API but have noticed some differences. Namely calling https://www.planningcenteronline.com/people.xml will include each persons contact_data while https://www.planningcenteronline.com/people.json will not.
We're planning to call each person individually (i.e. https://www.planningcenteronline.com/people/1.json) after getting the list of people to retrieve their contact_data but that seems like it would add a lot more work load to your servers.
I wanted to check; is there a flag we can specify in the call to https://www.planningcenteronline.com/people.json that will include each person's contact_data?
To expand on this, apart from getting changes to contact details another big reason we want this is when adding a new person. Sometimes the person is a duplicate of an existing person so we receive a HTTP 422 unprocessable entity response. It would be great if the response returned the Id of the person who is the duplicate. As it doesn't we have to then search the list of people to find the person with the matching name & email address.
Hi,
Does anyone know of any C# implementation for Peoples API?
Hi Guys,
I followed your directions for requesting a consumer key and secret and access token key and secret. I plugged in those values into the sample PHP script. But when I run it, it seems to break on the
$oauth->fetch("https://services.planningcenteronline.com/me.json");
line. The script never gets past that. No errors seem to be report just hangs. I am using PHP on IIS. Any ideas?
John
Hi!
Is there any way to get email addresses from GET https://services.planningcenteronline.com/people.json?
Or do I have to go to GET https://services.planningcenteronline.com/people/1.json?
Also, what are all parameters available for /people.json?
I would like minimize the number of manual steps required to “load” events from our master calendar (ACS) into PCO. According to http://get.planningcenteronline.com/api/plan/, there is no POST or PUT implementation for plans. Are you planning to implement POST & PUT? If not, would you please consider it?
Thanks,
Anyone have any examples of using the Planning Center API with c# and .Net? I am having issues with authenticating using the .net oauth library. Thanks in advance!
I'm having an issue with the PHP Library example (I cannot install the OAuth PECL extension on my server). I set my key and secret and callback URL in the oauth_config.php file and when I go to index.php, I simply get redirected to this URL:
After this line:
$request_token_response = run_curl($request_token_request->to_url(), "GET");
I printed the $request_token_response variable to the screen and confirmed I was getting a token and a token secret back from this response.
So I'm never getting redirected to the "me.php" where I can start using the API. I noticed that the URLs I'm calling start with "services.planningcenteronline.com" but then the URL I'm redirected to is "accounts.planningcenteronline.com". Is there a difference?
Any help you could provide would be great. Thank you!
Hello
I am trying to create a song in PHP but I am stuck. For authentication I use the helper classes from https://github.com/planningcenter/developers/tree/master/examples/php-library. Here is what I have so far:
require_once dirname(FILE) . '/helpers.php';
require_once dirname(FILE) . '/oauth.php';
$pco_oauth_key = '...';
$pco_oauth_secret = '...';
$pco_oauth_token = '...';
$pco_oauth_token_secret = '...';
$oauth_consumer = new OAuthConsumer($pco_oauth_key, $pco_oauth_secret, NULL);
$oauth_access_token = new OAuthConsumer($pco_oauth_token, $pco_oauth_token_secret, NULL);
$url = 'https://www.planningcenteronline.com/songs.json';
$headers = array('Content-type: application/json');
$json_string = json_encode(array("song" => array("title" => "Mr. Roboto", "admin" => "Domo Arigato Publishin", "author" => "Robot Boy", "ccli_id" => 4591782, "copyright" => "2006 Domo Arigato Publishing", "hidden" => false, "themes" => "Technology, Salvation")));
$request = OAuthRequest::from_consumer_and_token($oauth_consumer, $oauth_access_token, 'POST', $url, NULL);
$request->sign_request(new OAuthSignatureMethod_HMAC_SHA1(), $oauth_consumer, $oauth_access_token);
$response = run_curl($request, 'POST', $headers, $json_string);
echo $response;
As response I receive a 403 Forbidden Error. When I use the same code to GET a Song it works so authentication is not the problem. Can you help me to do the POST correctly? Thank you very much!
I'm looking to build a tool that can view which people have not confirmed/declined a schedule request and then interact with those people to get them to take action. Is their an API that shows me schedule requests as well as allowing me to update a request to Confirmed or Declined?
Any chance of making OAuth 2 an option? Trying to integrate with other services and they don't support v1 any more.
Thanks,
Nathan
Does the API offer PATCH support or just PUT?
I would like to identify the top 20 songs that have been sung over a time period via that API.
How does one remove a person?
Hello,
We are already working with the API sending information from our platforms to Planning Center, we are facing a issue, some information is getting lost in the sync process.
We already verified all the transactions from our side and is sending correctly all the information, but when we verify the information in planning center is not making the process.
Here is a sample of a person with this issue: Name LastName
{"person":{"first_name":"NAME ","last_name":"LASTNAME","birthdate":"05/30/1960","contact_data":{"addresses":[{"street":"INFORMATION","city":"Bogot\u00e1","state":"Distrito Capital","location":"Home"},{"location":"Other","city":"Informacion MRM","street":"INFORMATION; INFORMATION"}],"email_addresses":[{"address":"[email protected]","location":"Home"}],"phone_numbers":[{"number":"7776655","location":"Mobile"},{"number":"87625252","location":"Home"}]}}}
Could you please help us to verify from your side if there is any problem with the information?
Thank you
Hi Matt
I built an application already. It’s a platform to manage our worship-songs and export them for our presentation-tool. I get the songs from PCO by your API so we always are up-to-date which songs are still in PCO and which are scheduled in the next weeks. (see screenshot, second row with a link to PCO, last row is «scheduled until»-date)
this works great (getting songs, storing information in my «local» database)
I now like to have a list of the songs, which are planned in the next week (or two weeks)
First problem i had, was to get the right location-id
our structure in ICF Bern:
main location -> generations -> location -> celebration type:
the request to https://www.planningcenteronline.com/organization.json gives out:
(IDs anonymized)
Array
(
[id] => 123
[account_center_id] => 321
[name] => ICF Bern, Biel, Thun & Interlaken
[owner_name] => Andy Studer
[music_stand_enabled] =>
[projector_enabled] =>
[ccli] => 321
[ccli_connected] => 1
[secret] => 123123
[date_format] => 2
[twenty_four_hour_time] => 1
[total_songs] => 228
[total_people] => 721
[service_types] => Array
(
)
[service_type_folders] => Array
(
[1] => Array
(
[id] => 345
[name] => GenX
[parent_id] => 0
[type] => ServiceTypeGroup
[container] => ICF Bern, Biel, Thun & Interlaken
[container_id] =>
[service_types] => Array
(
)
[service_type_folders] => Array
(
[0] => Array
(
[id] => 234
[name] => Bern
[parent_id] => 345
[type] => ServiceTypeGroup
[container] => GenX
[container_id] => 432
[service_types] => Array
(
[0] => Array
(
[id] => 12345
[name] => Celebration ICF Bern
[parent_id] => 234
[type] => ServiceType
[container] => Bern
[container_id] => 54321
[sequence] => 0
[attachment_types_enabled] => 1
[permissions] => Scheduler
)
)
first step for me would be to select the right ID, in this case 12345 for Celebration ICF Bern
then I have my main problem:
how do i get (the simpliest way) the songs planned?
I do a second request to:
https://www.planningcenteronline.com/service_types/12345/plans.json
and get the following result (example)
Array
(
[0] => Array
(
[id] => 654321
[plan_title] => Positioniere dich für Gottes Reden
[series_title] => Speak, i'm listening
[service_type_id] => 12345
[service_type_name] => Celebration ICF Bern
[dates] => 18 January 2015
[series] => Array
(
[id] => 456789
[name] => Speak, i'm listening
[artwork_for_plan] => https://s3.amazonaws.com/planning_center_production/series/artworks/456789/plan.jpg?1419081490
[artwork_for_mobile] => https://s3.amazonaws.com/planning_center_production/series/artworks/456789/mobile.jpg?1419081490
[artwork_for_dashboard] => https://s3.amazonaws.com/planning_center_production/series/artworks/456789/dashboard.jpg?1419081490
[artwork] => https://s3.amazonaws.com/planning_center_production/series/artworks/456789/original.jpg?1419081490
)
[public] =>
[updated_at] => 2015/01/12 15:53:22 +0000
[created_at] => 2014/08/07 06:07:54 +0000
[sort_date] => 2015/01/18 10:30:00 +0100
[type] => Plan
[updated_by] => Array
(
[id] => 667788
[name] => Simon Gerber
)
[created_by] => Array
(
[id] => 889900
[name] => Jon Opprecht
)
[permissions] => Scheduler
[scheduled] =>
)
and now??
I’d like to get a list of all songs of this plan… (or all items, and then filter them for songs)
thanks for your help!
Simon
Do you foresee an API for general people (not just those in the Services app) within the next year? We want to switch to PCO People for our church management, but without an email communication feature, we'd have to build one ourselves. That's fine, but a lot of extra work without a general People API. Thoughts?
My other thought was to add all people to the Services app, which would somewhat fix the situation for now. Any suggestions?
Hi,
I'm working on accessing the PCO API via classic ASP an so I am working with portions of a library I found for oAuth in classic ASP. I'm using the single user method and have used accesstoken.io to create my access tokens based on the consumer key and secret I was given by support. When I make a request like the following one (keys removed for security) I just get returned one space with no error message. I'm sending this via a get with a content-type header of application/json. I also see that User-Agent and Host are headers that the component is sending so let me know if there are specifics required for those headers. I have the source of the component I'm using so I'm able to make any required changes but couldn't find any documentation about the specific query string parameters required to make a successful call.
Let me know your thoughts.
Thanks, Mark
A recent (last 2 days?) change has modified the cookie format returned by the PCO OAuth endpoint. While this works fine in .NET the cookie fails to parse on Mono. The cause is the format of the expires attribute
expires=Wed, 29 Oct 2014 21:49:39 -0000
Mono expects the following format
"ddd, dd-MMM-yyyy HH:mm:ss G\MT"
If the expires value was in the following format our code would continue to work on Mono
expires=Wed, 29-Oct-2014 21:49:39 GMT
Looking at the RFC for information on formatting cookie dates to make sure this is a PCO issue and not a Mono issue - http://tools.ietf.org/html/rfc6265#section-5.1.1
The documentation incorrectly lists the result of Plans.List as an individual result, as opposed to an array.
It also doesn't give any example of what a category could look like.
I have a question regarding the people create/update paths of your API. My question is how the API will handle if a user already exists if you try to create them again with the same email address?
Likewise, if you try to update a person that doesn't exist, will the API create that person?
Do you have a function like this: http://developers.hubspot.com/docs/methods/contacts/create_or_update
Is there a way to get all upcoming service_types via something like https://services.planningcenteronline.com/service_types.json? What I would like to form is a list of upcoming service_type names with ids.
I am just starting development with your API f you l so please pardon this basic question. Looking at the API response for the Get call to the service at http://get.planningcenteronline.com/api/plan/, there is the expected ends_at key in the service_times array value. When looking at our data in planning center, I do not see an ends_at data item. Here is the JSON output for the June 7th service:
{"id"=18833374, "plan_title"="- Ryan", "series_title"="The Church Pt 2", "service_type_id"=88600, "service_type_name"="FLO Worship", "dates"="June 7, 2015", "series"=nil, "public"=false, "updated_at"="2015/03/27 13:46:17 +0000", "created_at"="2015/03/27 13:38:53 +0000", "sort_date"="2015/06/07 08:15:00 -0500", "type"="Plan", "short_dates"="Jun 7", "files_expire_at"="2015-07-07T12:30:00Z", "updated_by"={"id"=2699478, "name"="Jane Ann"}, "created_by"={"id"=2699478, "name"="Jane Ann"}, "permissions"="Editor", "scheduled"=false} "id" =18833374,
"plan_title" ="- Ryan",
"series_title" ="The Church Pt 2",
"service_type_id" =88600,
"service_type_name" ="FLO Worship",
"dates" ="June 7,
2015 ", " series"=nil,
"public" =false,
"updated_at" ="2015/03/27 13:46:17 +0000",
"created_at" ="2015/03/27 13:38:53 +0000",
"sort_date" ="2015/06/07 08:15:00 -0500 ", " type"="Plan",
"short_dates" ="Jun 7",
"files_expire_at" ="2015-07-07T12:30:00 Z",
"updated_by" = {
"id" =2699478,
"name" ="Lisa Van Berkel"
},
"created_by" = {
"id" =2699478,
"name" ="Lisa Van Berkel"
},
"permissions" ="Editor",
"scheduled" =false
}
My question is did we miss entering this data item in the UI or am I missing something else?
Trying to implement PCO using the above, but keep getting this error:
"Error: making the request failed (Peer certificate cannot be authenticated with given CA certificates)
Code: -1
Response:"
Anyone knows what i might be doing wrong?
No speak English, sorry translation. Right now we are working with the API Planning Center. We are creating new people in the application but do not know how to add tags Groups the person newly created through the API
Using the API how do I get the currently logged in user? I don't see an endpoint in the documentation to do so.
Is there a way to get household info from the api?
We are getting a 403 Forbidden error when accessing only a specific call in the API. Everything else seems to be working fine. This is received when we attempt to get details about a specific arrangement.
Here is our request:
https://services.planningcenteronline.com/arrangements/10455489.json
Here is some debugging information about the request...
<NSHTTPURLResponse: 0x19a3cbf0> { URL: https://services.planningcenteronline.com/arrangements/10455489.json } { status code: 403, headers {
"Cache-Control" = "no-cache, no-store, pre-check=0, post-check=0";
Connection = "keep-alive";
"Content-Length" = 13;
"Content-Type" = "application/json; charset=utf-8";
Date = "Thu, 02 Apr 2015 17:02:26 GMT";
Expires = 0;
"Last-Modified" = "Thu, 02 Apr 2015 17:02:26 GMT";
Pragma = "no-cache";
Server = nginx;
"Set-Cookie" = "_account_center_session=BAh7DkkiD3Nlc3Npb25faWQGOgZFVEkiJTJhODVmMmVhMThkYTg4ZTgzNGU3OTE4YWEyMzNiMWY4BjsAVEkiG2FjY291bnRfY2VudGVyX3VzZXJfaWQGOwBGaQMlJ3FJIiNhY2NvdW50X2NlbnRlcl9vcmdhbml6YXRpb25faWQGOwBGaQN9RwJJIiRhY2NvdW50X2NlbnRlcl92ZXJpZmllZF91c2VyX2lkBjsARmkDJSdxSSIQbW9iaWxlX3ZpZXcGOwBGVEkiF3ByZV9vYXV0aF92ZXJpZmllZAY7AEZpAyUncUkiFnByZV9vYXV0aF91c2VyX2lkBjsARmkDJSdxSSIecHJlX29hdXRoX29yZ2FuaXphdGlvbl9pZAY7AEZpA31HAkkiGnByZV9vYXV0aF9tb2JpbGVfdmlldwY7AEZU--7c0767ca4ddf133d9f1cede68ded70ed79a8d0f6; domain=.planningcenteronline.com; path=/; expires=Thu, 16-Apr-2015 17:02:26 GMT; HttpOnly";
Status = "403 Forbidden";
"X-Content-Type-Options" = nosniff;
"X-Request-Id" = "3b26937a-4078-4c4f-9f2a-326c6e71922b";
"X-Runtime" = "0.020134";
"X-UA-Compatible" = "chrome=1";
"X-XSS-Protection" = "1; mode=block";
} }
Has something changed on the API that would cause this? We are getting a number of users reporting this issue. It's when retrieving a chord chart that has been edited inside of PCO.
Thanks!
Hi
I built a platform to manage the songs used in our church. for comparing the files with the songs listed in PCO, i access the API.
Now we have a partner church which wants to use the same platform too. they use another PCO login.
Do i need a second API-key or is one per domain enough? this part of the API keys i don't get really in my head ;)
thanks for your help!
simon from switzerland
Hi
Today I have problems accessing PCO by API.
Now I saw in the documentation, that the URLs are different from what I programmed originally.
I use: https://www.planningcenteronline.com/songs.json
Docs: https://services.planningcenteronline.com/songs.json
Where was this change announced? I didn't see anything about this change!
I changed the URL and now it works again...
Simon
The format for dates seems to vary depending on where it was originally inserted.
My local is Australian (dd/MM/yyyy) and when I use the site dates correctly appear and are settable in this format. When I fetch data set via website with the API it's also in this format.
However, when i try and set the value, it will only accept American format (MM/dd/yyyy), when I send in dd/MM/yyyy it nulls the value.
When i try and fetch the date set via the API IT RETURNS THE DATE IN THE AMERICAN FORMAT!!!
Is there any way for me to know the format to expect?
Or is this just a flat out bug?
Hey,
I am looking at implementing a two way sync with Planning Center Online for a client and I would like some minor clarifications about the API.
Am I right in assuming there is no way of getting notifications when a person has been updated (no push updates?)
Is the person.remote_id in for use as a migration ID (can I set it to work out mappings between my system and yours)
Finally, do you know of any C# examples of synchronization?
The brief overview of the API calls on http://get.planningcenteronline.com/api and specifically http://get.planningcenteronline.com/api/people/ is very limited in scope and specifics.
For instance, the dates shown when you SHOW a person's profile are using the format "2014/12/02" for the created_at and updated_at date fields. So the assumption might be that birthdate would use the same date format. That is not correct. Birthdate uses "2014/12/02" as it's date format.
There are multiple ID fields for a person including id, organization_id, remote_id, account_center_id, etc. Which ID does what? Which ID can we use as 3rd Party developers to link our internal ID number to your records? Which fields are searchable via your filters? Surely we don't want to use filters that are not properly indexed in your system. Is the remote_id a filter field?
Where can we get a complete list of the fields, their data type, and if they can be used in filtering?
Hey all, I'm looking to build an integration for my church that involves better media team planning interfaces.
Before I get started, I have two questions:
Hi!
I have an very interesting thing happening with report PDF generation..
I have a OSX Cocoa App that basically prints a report of the plan via a web script. The app then does a NSURLRequest to get the URL to download. The URL starts at one address, then receives a response from PCO as the final PDF to download....
But, here is the issue. So far I have isolated this issue to OS 10.8.X. It does not exist on 10.7 or 10.9... so it could be an OS issue :) I will be hitting up the apple dev community as well.
I have attached my sample app to which you can use the osx console to see the output, sorry, I made it quickly.
Essentially here is the URL that gets a PDF that send a request for:
Then, PCO sends me back :
https://pdf.planningcenteronline.com/print/pEucmEDdmevlZ-wSWK0uHgGuQnLROS6HSEUOD2CDPxhA
however, I am not able to get that send back in OSX 10.8 via the Cocoa NSURLRequest methods.
I tried some things using my own web server (like a download script that redirects) and it works fine in 10.8. Is it possible that PCO is somehow telling the user agent in OSX 10.8 that the response is complete?
http://dl.fcpost.com/=WebDisk/Files/MT/support/PCO_RequestURL.zip
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.