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
Field | Type | Description | |
---|---|---|---|
Parameters | |||
datefrom | YYYY-MM-DD | Specifies start date for a date range filter. Must be used with dateto. If used, range is ignored. | |
dateto | YYYY-MM-DD | Specifies end date for a date range filter. Must be used with datefrom. If used, range is ignored. | |
range | all 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. | |
unpublished | include | For the authenticated path, unpublished=include may be used to include unpublished meetings in the results. Unpublished meetings will not be included by default. |
Sample Type | Data |
---|---|
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": " |
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
Field | Type | Description | |
---|---|---|---|
Parameters | |||
meetingid | ##### | Meeting ID is specified in the path, not as a URL parameter. | |
unpublished | include | For the authenticated path, unpublished=include may be used to include unpublished meetings in the results. Unpublished meetings will not be included by default. |
Sample Type | Data |
---|---|
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": " |
Create Meeting
API Path - Authenticated: api/v1/authenticated/meeting/create.json
Request Type: POST
Description:
Create Meeting
Field | Type | Description |
---|---|---|
Parameters | ||
data | JSON | The meetings to be created. |
Sample Type | Data |
---|---|
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
Field | Type | Description |
---|---|---|
Parameters | ||
data | JSON | The meetings to be updated. |
Sample Type | Data |
---|---|
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
Field | Mandatory | Description |
---|---|---|
MeetingID | On Update (Not allowed on create) | Unique numeric ID |
Title | Title of the meeting. | |
GroupID | On Create | The 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. |
GroupName | On Create | The 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. |
GroupSynonym | On Create | The 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. |
MeetingOrigin | On Create | Unique descriptive identifier for the API client creating meetings. |
OriginMeetingID | On Create | Unique meeting ID from the third party system to allow meetings to be cross-referenced. |
Visibility | Published status, indicating whether the meeting is visible to the public or only to staff. Allowed values: published, unpublished. | |
Body | Full body text to be displayed when the meeting is viewed. | |
BodySummary | Summary text to be displayed instead of the full body when the meeting is viewed in lists of content. | |
Delta (subfield) | On Update, usually | All 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. |
CalendarDate | Multivalue field containing date/time range for the meeting. Subfields: Delta, FromDate, ToDate, TimeZone | |
FromDate (subfield) | If CalendarDate field exists | Date/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. | |
VideoLinks | Multivalue field containing links to videos related to the meeting. Subfields: Delta, VideoLinksURL, VideoLinksTitle | |
VideoLinksURL (subfield) | If VideoLinks field exists | URL 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). | |
AudioLinks | Multivalue field containing links to audio recordings related to the meeting. Subfields: Delta, AudioLinksURL, AudioLinksTitle | |
AudioLinksURL (subfield) | If AudioLinks field exists | URL 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 exists | URL to the agenda. Where possible, this should be entered either without protocol (//:) or as https (https://). |
AgendaLinksTitle (subfield) | Title for the link. | |
AgendaText | Multivalue 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 exists | Text of the agenda, if available in text/html form. |
AgendaFiles | Agenda 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 exists | Unique 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 exists | URL to the minutes. Where possible, this should be entered either without protocol (//:) or as https (https://). |
MinutesTitle (subfield) | Title for the link. | |
MinutesText | Multivalue 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 exists | Text of the minutes, if available in text/html form. |
MinutesFiles | Minutes 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 exists | Unique 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. | |
PacketFiles | Agenda file attachment. The file must already exist in the system. Only managed files may be referenced with this field. | |
PacketFilesID (subfield) | If PacketFiles field exists | Unique 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. | |
PacketLinks | Multivalue field containing links to packets related to the meeting. Subfields: Delta, AudioLinksURL, AudioLinksTitle | |
PacketLinksURL (subfield) | If PacketLinks field exists | URL 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 exists | Link URL. Where possible, this should be entered either without protocol (//:) or as https (https://). |
OtherAttachmentsLinksTitle (subfield) | Title for the link. | |
OtherAttachmentsFiles | Other 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 exists | Unique 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. | |
RelatedOrdinancesResolutions | Intended for internal use. Multivalue field containing IDs for related ordinance/resolution pages. Page must already exist in the system. | |
RelatedOrdinancesResolutionsNID (subfield) | If RelatedOrdinancesResolutions field exists | Unique numeric ID of the related ordinance or resolution. |
RelatedProjects | Intended for internal use. Multivalue field containing IDs for related project pages. Page must already exist in the system. | |
RelatedProjectsNID (subfield) | If RelatedProjects field exists | Unique numeric ID of the related project. |