如何在 JSON API Post 中 "Include" 在 PHP 中?

How to "Include" in a JSON API Post in PHP?

我正在使用 Planning Center API,它的构建符合 JSON API 1.0 规范。

我们需要 post 一个人的数据到规划中心。 API 似乎要拆散一个人,从他们的 phone 电话号码和电子邮件来看。我是新手,所以我不确定您是否可以在同一个 cURL 请求中 post 它们,或者我是否需要 3 个请求。我的理解(可能是误导)是我可以在 POST 请求中 "include" 电子邮件和 phone 号码。

这是我的:

$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.

知道我在这里遗漏了什么吗?

JSON API规范v1.0不支持批量创建。如果此特定 API 未实现不属于 JSON API 规范的附加功能,则您无法仅在一个请求中创建具有关联电子邮件的人员。

旁注:即将推出的 v1.1 版本可能会通过名为“操作”的功能支持此功能。您可以在 this pending pull request.

中找到更多详细信息

简而言之:就我得到的具体实施而言,您必须创建一个具有第一个请求的人,然后创建一个与另一个请求相关联的电子邮件地址。