Meetings

Purpose

Meetings include a calendar date, minutes, agendas, file attachments, and links to related content, including video and audio.

List Meetings

API Path - Public: api/v1/public/meeting/list.json
API Path - Authenticated: api/v1/authenticated/meeting/list.json
Request Type: GET
Description:
List Meetings

FieldTypeDescription
Parameters
datefromYYYY-MM-DDSpecifies start date for a date range filter. Must be used with dateto. If used, range is ignored.
datetoYYYY-MM-DDSpecifies end date for a date range filter. Must be used with datefrom. If used, range is ignored.
rangeall
recent
upcoming
Filters meetings based on a predefined or dynamic date range. Ignored if datefrom or dateto is used.
groupid#####
micrositesynonym
Filters meetings based on a numeric group id or lower case group synonym.
meetingid#####Filters meetings based on meetingid.
unpublishedincludeFor the authenticated path, unpublished=include may be used to include unpublished meetings in the results. Unpublished meetings will not be included by default.


Sample TypeData
Code - Authenticated Request
$url = 'https://sandbox1.teamaha.com/' . 'api/v1/authenticated/meeting/list.json';
$options['headers'] = array(
  'Content-Type:application/json',
  'Authorization: Basic '. base64_encode("username:password"),
);
$options['query'] = array('unpublished' => 'include');
$query = '';
if (!empty($options['query'])) {
  $query = '?' . http_build_query($options['query']);
}

$curl = curl_init();
$curlopts = array(
  CURLOPT_URL => $url . $query,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_USERAGENT => 'APITEST',
  CURLOPT_HTTPHEADER => $options['headers'],
);
curl_setopt_array($curl,$curlopts);
$result = curl_exec($curl);
curl_close($curl);

print $result;
Response
{
    "Meetings": [
        {
            "MeetingID": "211",
            "RevisionID": "28691",
            "Title": "Future event",
            "Created": "2015-11-15 14:18:39",
            "Changed": "2017-08-13 19:11:02",
            "Visibility": "published",
            "GroupID": "27",
            "GroupName": "City Council",
            "GroupSynonym": "citycouncil",
            "Body": "

Test<\/p>\r\n", "BodySummary": "", "RedirectToURL": null, "CalendarDate": [ { "Delta": "0", "FromDate": "2016-12-31 19:15:00", "ToDate": "2016-12-31 19:15:00", "TimeZone": "UTC", "#HIDDEN": null } ] }, { "MeetingID": "17361", "RevisionID": "29741", "Title": "Test Meeting 59cc141a52ed6", "Created": "2017-08-25 14:39:59", "Changed": "2017-09-27 17:11:57", "Visibility": "published", "GroupID": "21", "GroupName": "Planning", "GroupSynonym": "planning", "Body": "

Test<\/p>\r\n", "BodySummary": "", "RedirectToURL": null, "CalendarDate": [ { "Delta": "0", "FromDate": "2017-09-01 04:00:00", "ToDate": "2017-09-01 04:00:00", "TimeZone": "UTC", "#HIDDEN": null } ] } ], "errors": [] }

Meeting Details

API Path - Public: api/v1/public/meeting/1234/details.json
API Path - Authenticated: api/v1/authenticated/meeting/1234/details.json
Request Type: GET
Description:
Meeting Details

FieldTypeDescription
Parameters
meetingid#####Meeting ID is specified in the path, not as a URL parameter.
unpublishedincludeFor the authenticated path, unpublished=include may be used to include unpublished meetings in the results. Unpublished meetings will not be included by default.


Sample TypeData
Code - Authenticated Request
$url = 'https://sandbox1.teamaha.com/' . 'api/v1/authenticated/meeting/18291,16921/details.json';
$options['headers'] = array(
  'Content-Type:application/json',
  'Authorization: Basic '. base64_encode("username:password"),
);
$options['query'] = array('unpublished' => 'include');
$query = '';
if (!empty($options['query'])) {
  $query = '?' . http_build_query($options['query']);
}

$curl = curl_init();
$curlopts = array(
  CURLOPT_URL => $url . $query,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_USERAGENT => 'APITEST',
  CURLOPT_HTTPHEADER => $options['headers'],
);
curl_setopt_array($curl,$curlopts);
$result = curl_exec($curl);
curl_close($curl);

print $result;
Response
{
    "Meetings": [
        {
            "MeetingID": "18241",
            "RevisionID": "30591",
            "Title": "Test Meeting  59d42a390c9a3",
            "Created": "2017-10-03 20:24:28",
            "Changed": "2017-10-03 20:24:28",
            "Visibility": "unpublished",
            "GroupID": "24",
            "GroupName": "Public Works",
            "GroupSynonym": "publicworks",
            "Body": "

Test 59d42a390c9a3<\/p>\n", "BodySummary": "

Summary 59d42a390c9a3<\/p>\n", "RedirectToURL": null, "CalendarDate": [ { "Delta": "0", "FromDate": "2017-10-07 17:24:00", "ToDate": "2017-10-07 18:24:00", "TimeZone": "UTC", "#HIDDEN": null } ], "AgendaLinks": [ { "Delta": "0", "AgendaLinksURL": "https:\/\/kb.teamaha.com\/kiosk-stats", "AgendaLinksTitle": "Test Title 59d42a390e229" }, { "Delta": "1", "AgendaLinksURL": "https:\/\/kb.teamaha.com\/kiosk-stats", "AgendaLinksTitle": "Test Title 59d42a390e715" } ], "AgendaText": [ { "Delta": "0", "AgendaText": "Test agenda text 59d42a390c9a3", "#HIDDEN": null } ], "AgendaFiles": [ { "Delta": "0", "AgendaFilesID": "13", "AgendaFilesDescription": "", "AgendaFilesFilename": "lorem_ipsum.pdf", "AgendaFilesURI": "public:\/\/fileattachments\/General\/page\/3\/lorem_ipsum.pdf", "AgendaFilesSize": "36907", "AgendaFilesCreated": "2013-01-29 13:26:23" }, { "Delta": "1", "AgendaFilesID": "9", "AgendaFilesDescription": "", "AgendaFilesFilename": "lorem_ipsum.pdf", "AgendaFilesURI": "public:\/\/fileattachments\/restricted_updates\/meeting\/2\/lorem_ipsum_0.pdf", "AgendaFilesSize": "36907", "AgendaFilesCreated": "2013-01-28 15:38:54" } ], "MinutesLinks": [ { "Delta": "0", "MinutesLinksURL": "http:\/\/kb.teamaha.com", "MinutesLinksTitle": "Test Title 59d42a390e19c" }, { "Delta": "1", "MinutesLinksURL": "https:\/\/kb.teamaha.com", "MinutesLinksTitle": "Test Title 59d42a390e971" } ], "MinutesText": [ { "Delta": "0", "MinutesText": "Test minutes text 59d42a390c9a3", "#HIDDEN": null } ], "MinutesFiles": [ { "Delta": "0", "MinutesFilesID": "10", "MinutesFilesDescription": "", "MinutesFilesFilename": "lorem_ipsum.pdf", "MinutesFilesURI": "public:\/\/fileattachments\/restricted_updates\/meeting\/2\/lorem_ipsum_1.pdf", "MinutesFilesSize": "36907", "MinutesFilesCreated": "2013-01-28 15:38:54" }, { "Delta": "1", "MinutesFilesID": "5", "MinutesFilesDescription": "", "MinutesFilesFilename": "9_email_subscriptions_management.pdf", "MinutesFilesURI": "public:\/\/9_email_subscriptions_management.pdf", "MinutesFilesSize": "108253", "MinutesFilesCreated": "2013-01-25 10:15:57" } ], "AudioLinks": [ { "Delta": "0", "AudioLinksURL": "https:\/\/kb.teamaha.com\/kiosk-stats", "AudioLinksTitle": "Test Title 59d42a390e156" }, { "Delta": "1", "AudioLinksURL": "https:\/\/kb.teamaha.com", "AudioLinksTitle": "Test Title 59d42a390df46" } ], "VideoLinks": [ { "Delta": "0", "VideoLinksURL": "https:\/\/kb.teamaha.com\/dashboard", "VideoLinksTitle": "Test Title 59d42a390e7c0" }, { "Delta": "1", "VideoLinksURL": "https:\/\/www.google.com", "VideoLinksTitle": "Test Title 59d42a390e156" } ], "RelatedOrdinancesResolutions": [ { "Delta": "0", "RelatedOrdinancesResolutionsNID": "17261", "RelatedOrdinancesResolutionsURLPath": "node\/17261", "RelatedOrdinancesResolutionsTitle": "Test Ordinance" }, { "Delta": "1", "RelatedOrdinancesResolutionsNID": "17191", "RelatedOrdinancesResolutionsURLPath": "node\/17191", "RelatedOrdinancesResolutionsTitle": "Test Ordinance 1" } ], "RelatedProjects": [ { "Delta": "0", "RelatedProjectsNID": "17221", "RelatedProjectsURLPath": "node\/17221", "RelatedProjectsTitle": "Test Project 2" }, { "Delta": "1", "RelatedProjectsNID": "17211", "RelatedProjectsURLPath": "node\/17211", "RelatedProjectsTitle": "Test Project 1" } ] } ], "errors": [] }

Create Meeting

API Path - Authenticated: api/v1/authenticated/meeting/create.json
Request Type: POST
Description:
Create Meeting

FieldTypeDescription
Parameters
dataJSONThe meetings to be created.


Sample TypeData
Code - Authenticated Request
$url = 'https://sandbox1.teamaha.com/' . 'api/v1/authenticated/meeting/create.json';
$options['headers'] = array(
  'Content-Type:application/json',
  'Authorization: Basic '. base64_encode(""username:password""),
);
//$options['query'] = array('unpublished' => 'include');
$query = '';
if (!empty($options['query'])) {
  $query = '?' . http_build_query($options['query']);
}

$data = <<<JSONDATA
{
    "Meetings": [
        {
            "Title": "Test Meeting 59d3ca18112f8",
            "Visibility": "unpublished",
            "Body": "Test  59d3ca18112f8",
            "BodySummary": "Summary 59d3ca18112f8",
            "CalendarDate": [
                {
                    "Delta": 0,
                    "FromDate": "2017-10-08 10:34:00",
                    "TimeZone": "America/Los_Angeles",
                    "ToDate": "2017-10-08 11:34:00"
                }
            ],
            "GroupID": 26,
            "MeetingOrigin": "Test 3rd Party Service Name",
            "OriginMeetingID": "1234",
            "AudioLinks": [
                {
                    "AudioLinksTitle": "Test Title  59d3ca18131da",
                    "AudioLinksURL": "https://kb.teamaha.com/dashboard",
                    "Delta": 0
                },
                {
                    "AudioLinksTitle": "Test Title  59d3ca1812aaa",
                    "AudioLinksURL": "https://kb.teamaha.com",
                    "Delta": 1
                }
            ],
            "VideoLinks": [
                {
                    "Delta": 0,
                    "VideoLinksTitle": "Test Title  59d3ca18135a5",
                    "VideoLinksURL": "https://www.google.com"
                },
                {
                    "Delta": 1,
                    "VideoLinksTitle": "Test Title  59d3ca1813b08",
                    "VideoLinksURL": "https://www.google.com"
                }
            ],
            "AgendaFiles": [
                {
                    "AgendaFilesID": 5,
                    "AgendaFilesTitle": "Test Title  59d3ca1812eda",
                    "Delta": 0
                },
                {
                    "AgendaFilesID": 9,
                    "AgendaFilesTitle": "Test Title  59d3ca1812f8e",
                    "Delta": 1
                }
            ],
            "AgendaLinks": [
                {
                    "AgendaLinksTitle": "Test Title  59d3ca1812b0c",
                    "AgendaLinksURL": "https://www.google.com",
                    "Delta": 0
                },
                {
                    "AgendaLinksTitle": "Test Title  59d3ca1813b08",
                    "AgendaLinksURL": "http://kb.teamaha.com",
                    "Delta": 1
                }
            ],
            "AgendaText": [
                {
                    "AgendaTextValue": "Test agenda text  59d3ca18112f8",
                    "Delta": 0
                }
            ],
            "MinutesFiles": [
                {
                    "Delta": 0,
                    "MinutesFilesID": 9,
                    "MinutesFilesTitle": "Test Title  59d3ca18137ee"
                },
                {
                    "Delta": 1,
                    "MinutesFilesID": 13,
                    "MinutesFilesTitle": "Test Title  59d3ca1813847"
                }
            ],
            "MinutesLinks": [
                {
                    "Delta": 0,
                    "MinutesLinksTitle": "Test Title  59d3ca1813797",
                    "MinutesLinksURL": "https://kb.teamaha.com/kiosk-stats"
                },
                {
                    "Delta": 1,
                    "MinutesLinksTitle": "Test Title  59d3ca1812e15",
                    "MinutesLinksURL": "https://kb.teamaha.com/kiosk-stats"
                }
            ],
            "MinutesText": [
                {
                    "Delta": 0,
                    "MinutesTextValue": "Test minutes text  59d3ca18112f8"
                }
            ],
            "OtherAttachmentsFiles": [
                {
                    "Delta": 0,
                    "OtherAttachmentsFilesID": 261,
                    "OtherAttachmentsFilesTitle": "Test Title  59d3ca18135f9"
                },
                {
                    "Delta": 1,
                    "OtherAttachmentsFilesID": 5,
                    "OtherAttachmentsFilesTitle": "Test Title  59d3ca1813a55"
                }
            ],
            "OtherAttachmentsLinks": [
                {
                    "Delta": 0,
                    "OtherAttachmentsLinksTitle": "Test Title  59d3ca1813556",
                    "OtherAttachmentsLinksURL": "https://kb.teamaha.com"
                },
                {
                    "Delta": 1,
                    "OtherAttachmentsLinksTitle": "Test Title  59d3ca1813946",
                    "OtherAttachmentsLinksURL": "http://kb.teamaha.com"
                }
            ],
            "RelatedOrdinancesResolutions": [
                {
                    "Delta": 0,
                    "RelatedOrdinancesResolutionsNID": 17261
                },
                {
                    "Delta": 1,
                    "RelatedOrdinancesResolutionsNID": 17261
                }
            ],
            "RelatedProjects": [
                {
                    "Delta": 0,
                    "RelatedProjectsNID": 17211
                },
                {
                    "Delta": 1,
                    "RelatedProjectsNID": 17221
                }
            ]
        }
    ]
}
JSONDATA;
$options['headers'][] = 'Content-Length:' . strlen($data);

$curl = curl_init();
$curlopts = array(
  CURLOPT_URL => $url . $query,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_USERAGENT => 'APITEST',
  CURLOPT_HTTPHEADER => $options['headers'],
  CURLOPT_POSTFIELDS => $data,
  CURLOPT_CUSTOMREQUEST => 'POST',
);
curl_setopt_array($curl,$curlopts);
$result = curl_exec($curl);
curl_close($curl);

print $result;
Response
{
    "errors": [],
    "saved": {
        "MeetingID": [
            "18481"
        ]
    }
}
Error Response
{
    "errors": [
        {
            "id": "0400",
            "message": "Bad Request",
            "source": ""
        }
    ],
    "saved": {
        "MeetingID": []
    }
}

Update Meeting

API Path - Authenticated: api/v1/authenticated/meeting/update.json
Request Type: PATCH
Description:
Update Meeting

FieldTypeDescription
Parameters
dataJSONThe meetings to be updated.


Sample TypeData
Code - Authenticated Request
$url = 'https://sandbox1.teamaha.com/' . 'api/v1/authenticated/meeting/update.json';
$options['headers'] = array(
  'Content-Type:application/json',
  'Authorization: Basic '. base64_encode("username:password"),
);
//$options['query'] = array('unpublished' => 'include');
$query = '';
if (!empty($options['query'])) {
  $query = '?' . http_build_query($options['query']);
}

$data = <<<JSONDATA
{
  "Meetings": [
    {
      "MeetingID": "17361",
      "Title": "Test Meeting  59e5418b4aeeb",
      "Visibility": "published",
      "GroupName": "Human Resources"
    },
    {
      "MeetingID": "17351",
      "Title": "Test Meeting  59e5418b4af42",
      "Visibility": "published",
      "GroupSynonym": "administration",
      "RedirectToURL": "http:\/\/kb.teamaha.com",
      "Body": "Test  59e5418b4af42",
      "BodySummary": "Summary  59e5418b4af42",
      "MeetingOrigin": "Test  59e5418b4af42",
      "OriginMeetingID": " 59e5418b4af42"
    }
  ]
}
JSONDATA;
$options['headers'][] = 'Content-Length:' . strlen($data);

$curl = curl_init();
$curlopts = array(
  CURLOPT_URL => $url . $query,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_USERAGENT => 'APITEST',
  CURLOPT_HTTPHEADER => $options['headers'],
  CURLOPT_POSTFIELDS => $data,
  CURLOPT_CUSTOMREQUEST => 'PATCH',
);
curl_setopt_array($curl,$curlopts);
$result = curl_exec($curl);
curl_close($curl);

print $result;
Response
{
    "errors": [],
    "saved": {
        "MeetingID": [
            "17361",
            "17351"
        ]
    }
}
Error Response
{
    "errors": [
        {
            "id": "0404",
            "message": "Not Found",
            "source": "MeetingID"
        }
    ],
    "saved": {
        "MeetingID": []
    }
}

Field Definitions

FieldMandatoryDescription
MeetingIDOn Update (Not allowed on create)Unique numeric ID
TitleTitle of the meeting.
GroupIDOn CreateThe unique ID (which does not change) of the department, board, or committee (group). On create, GroupID, GroupName, or GroupSynonym must be set. More than one MAY be set, but should not, and if more than one is set, they MUST match.
GroupNameOn CreateThe displayed name (which may change, and should not normally be used to create/update meetings) of the department, board, or committee (group). On create, GroupID, GroupName, or GroupSynonym must be set. More than one MAY be set, but should not, and if more than one is set, they MUST match.
GroupSynonymOn CreateThe synonym (used in URL paths, and usually does not change) of the department, board, or committee (group). On create, GroupID, GroupName, or GroupSynonym must be set. More than one MAY be set, but should not, and if more than one is set, they MUST match.
MeetingOriginOn CreateUnique descriptive identifier for the API client creating meetings.
OriginMeetingIDOn CreateUnique meeting ID from the third party system to allow meetings to be cross-referenced.
VisibilityPublished status, indicating whether the meeting is visible to the public or only to staff. Allowed values: published, unpublished.
BodyFull body text to be displayed when the meeting is viewed.
BodySummarySummary text to be displayed instead of the full body when the meeting is viewed in lists of content.
Delta (subfield)On Update, usuallyAll multivalue fields use this subfield as an index. When creating new content, this field may be omitted. When updating, it may be omitted to add a value, but must be included to modify a pre-existing value. If Delta is used for one value in a multi-value field, it must be used for all values in the same field.
CalendarDateMultivalue field containing date/time range for the meeting. Subfields: Delta, FromDate, ToDate, TimeZone
FromDate (subfield)If CalendarDate field existsDate/time the meeting starts. Format: YYYY-MM-DD hh:mm:ss (PHP: Y-m-d H:i:s)
ToDate (subfield)Date/time the meeting ends. Format: YYYY-MM-DD hh:mm:ss (PHP: Y-m-d H:i:s)
TimeZone (subfield)Timezone associated with the meeting. If left blank, the default timezone for the site will be used, which may not be desirable for applications that store times in UTC.
VideoLinksMultivalue field containing links to videos related to the meeting. Subfields: Delta, VideoLinksURL, VideoLinksTitle
VideoLinksURL (subfield)If VideoLinks field existsURL to the video. Where possible, this should be entered either without protocol (//:) or as https (https://).
VideoLinksTitle (subfield)Title for the video (or video segment).
AudioLinksMultivalue field containing links to audio recordings related to the meeting. Subfields: Delta, AudioLinksURL, AudioLinksTitle
AudioLinksURL (subfield)If AudioLinks field existsURL to the audio recording. Where possible, this should be entered either without protocol (//:) or as https (https://).
AudioLinksTitle (subfield)Title for the audio recording.
AgendaLinks
AgendaLinksURL (subfield)If AgendaLinks field existsURL to the agenda. Where possible, this should be entered either without protocol (//:) or as https (https://).
AgendaLinksTitle (subfield)Title for the link.
AgendaTextMultivalue field containing the text of the agenda, if available in text/html form. While this is formatted as a multivalue field, it currently only accepts a single value.
AgendaTextValue (subfield)If AgendaText field existsText of the agenda, if available in text/html form.
AgendaFilesAgenda file attachment. The file must already exist in the system. Only managed files may be referenced with this field. Unmanaged files should use the AgendaLink field.
AgendaFilesID (subfield)If AgendaFiles field existsUnique numeric ID of the file. This will be provided in the response to a file upload request, when implemented, and is available when viewing meetings.
AgendaFilesTitle (subfield)Title for the agenda file attachment.
MinutesLinks
MinutesURL (subfield)If MinutesLinks field existsURL to the minutes. Where possible, this should be entered either without protocol (//:) or as https (https://).
MinutesTitle (subfield)Title for the link.
MinutesTextMultivalue field containing the text of the minutes, if available in text/html form. While this is formatted as a multivalue field, it currently only accepts a single value.
MinutesTextValue (subfield)If MinutesText field existsText of the minutes, if available in text/html form.
MinutesFilesMinutes file attachment. The file must already exist in the system. Only managed files may be referenced with this field. Unmanaged files should use the MinutesLink field.
MinutesFilesID (subfield)If MinutesFiles field existsUnique numeric ID of the file. This will be provided in the response to a file upload request, when implemented, and is available when viewing meetings.
MinutesFilesTitle (subfield)Title for the minutes file attachment.
PacketFilesAgenda file attachment. The file must already exist in the system. Only managed files may be referenced with this field.
PacketFilesID (subfield)If PacketFiles field existsUnique numeric ID of the file. This will be provided in the response to a file upload request, when implemented, and is available when viewing meetings.
PacketFilesTitle (subfield)Title for the packet file attachment.
PacketLinksMultivalue field containing links to packets related to the meeting. Subfields: Delta, AudioLinksURL, AudioLinksTitle
PacketLinksURL (subfield)If PacketLinks field existsURL to the packet. Where possible, this should be entered either without protocol (//:) or as https (https://).
PacketLinksTitle (subfield)Title for the packet.
OtherAttachmentsLinks
OtherAttachmentsLinksURL (subfield)If OtherAttachmentsLinks field existsLink URL. Where possible, this should be entered either without protocol (//:) or as https (https://).
OtherAttachmentsLinksTitle (subfield)Title for the link.
OtherAttachmentsFilesOther file attachment - not an agenda or minutes, but related to the meeting. The file must already exist in the system. Only managed files may be referenced with this field. Unmanaged files should use the OtherAttachmentsLink field.
OtherAttachmentsFilesID (subfield)If OtherAttachmentsFiles field existsUnique numeric ID of the file. This will be provided in the response to a file upload request, when implemented, and is available when viewing meetings.
OtherAttachmentsFilesTitle (subfield)Title for the minutes file attachment.
RelatedOrdinancesResolutionsIntended for internal use. Multivalue field containing IDs for related ordinance/resolution pages. Page must already exist in the system.
RelatedOrdinancesResolutionsNID (subfield)If RelatedOrdinancesResolutions field existsUnique numeric ID of the related ordinance or resolution.
RelatedProjectsIntended for internal use. Multivalue field containing IDs for related project pages. Page must already exist in the system.
RelatedProjectsNID (subfield)If RelatedProjects field existsUnique numeric ID of the related project.