【发布时间】:2018-11-10 01:07:24
【问题描述】:
我正在使用Planning Center API,它的构建符合 JSON API 1.0 规范。
我们需要将人员数据发布到规划中心。 API 似乎将一个人从他们的电话号码和电子邮件中分离出来。我是新手,所以我不确定您是否可以将它们全部发布在同一个 cURL 请求中,或者我是否需要 3 个请求。我的理解(可能被误导)是我可以在 POST 请求中“包含”电子邮件和电话号码。
这就是我所拥有的:
$person = '{
"data": {
"type": "Person",
"attributes": {
"first_name": "Test",
"last_name": "User"
},
"relationships": {
"primary_campus": {
"data": { "type": "PrimaryCampus", "id": "123" }
}
}
},
"include":{
"data": {
"type": "emails",
"attributes": {"address": "test@test.com"}
}
}
}';
$channel = curl_init();
curl_setopt( $channel, CURLOPT_URL, "https://api.planningcenteronline.com/people/v2/people" );
//curl_setopt( $channel, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $channel, CURLOPT_USERPWD, $application_ID.":".$application_secret );
curl_setopt( $channel, CURLOPT_POST, true);
curl_setopt( $channel, CURLOPT_POSTFIELDS, $person);
curl_exec($channel);
echo $channel;
这似乎只创建了人的名字和姓氏(以及相关的校园)。未创建电子邮件。
这里是documentation for the email. 这是documentation for the person。
任何想法我在这里缺少什么?
【问题讨论】:
-
从文档中并不清楚,但developer.planning.center/docs/#/introduction/json-api 暗示“包含”的想法是在从 API 获取数据时使用的东西,而不是向它发送数据。也许您应该向维护人员寻求澄清。此外,如果一个人可以与许多电子邮件相关联,那么如果“包含”东西确实适用于发送,那么我猜它会期望一个列表(即数组)而不仅仅是一个对象。但是,如果您提供错误的格式,这应该会导致验证错误。
-
您是否尝试过将项目作为数组传递到
data元素下? -
我刚刚尝试将电子邮件地址作为数组传递并收到无效 JSON 的错误。我也尝试在数据块下传递它,但也得到了一个无效的 json 错误。从您的 cmets 看来,我似乎离我不远了,但是文档有点含糊。我想我应该联系他们。