Coursedog

Submit a Ticket My Tickets
Welcome
Login  Sign up

API Examples - Query Events/Meetings

Table of Contents

Overview
Search for Events
Get Meetings
Create Meeting
Related Articles

Overview

  • This page captures example API queries pertaining to Events. 

  • In each of the example API URLs:

    • environment” = “staging” or “app

    • schoolid” = unique ID assigned to your school (an admin can find that at Admin > Settings > “School Unique ID”)


Search for Events

Overview | Known Limitations | Example 1 - Search on Event Name
Example 2 - Another Event Name Search | Example 3 - Search on Event Type
Example 4 - Multi-Word Queries

Overview


Known Limitations

One query cannot match across both the name and type fields.


Example 1 - Search on Event Name

Query

  • https://environment.coursedog.com/api/v1/em/schoolid/events/search/searchterm

  • In the below search, “searchterm” was “signing


Results

{

  "numberOfResults": 1,

  "numberOfEvents": 1,

  "events": {

    "pksJ7mQ00yFhA9BBgawd": {

      "_id": "pksJ7mQ00yFhA9BBgawd",

      "attachments": [],

      "authorId": "peoplesoft@example.com",

      "contacts": [],

      "createdAt": 1692396458247,

      "createdBy": "peoplesoft@example.com",

      "description": "",

      "id": "pksJ7mQ00yFhA9BBgawd",

      "lastEditedAt": 1692396458247,

      "lastEditedBy": "peoplesoft@example.com",

      "name": "Book Signing",

      "organization": "e732746b-4a63-4372-a30b-f1c1957dd318",

      "owners": [

        "peoplesoft@example.com"

      ],

      "status": "Confirmed",

      "type": "Fundraisers",

      "version": 2,

      "meetings": [

        {

          "_id": "DzH0eBbIsXAugcUHwtko",

          "endDate": "2023-09-14",

          "endTime": 900,

          "eventId": "pksJ7mQ00yFhA9BBgawd",

          "featured": null,

          "hidden": null,

          "id": "DzH0eBbIsXAugcUHwtko",

          "private": null,

          "public": null,

          "resources": [],

          "startDate": "2023-09-14",

          "startTime": 800,

          "status": "Confirmed"

        }

      ]

    }

  }

}


Query

  • https://environment.coursedog.com/api/v1/em/schoolid/events/search/searchterm

  • In the below search, “searchterm” was “author


Results

{

  "numberOfResults": 1,

  "numberOfEvents": 1,

  "events": {

    "nHRvRkSh53u6neZaGpve": {

      "_id": "nHRvRkSh53u6neZaGpve",

      "attachments": [],

      "authorId": "peoplesoft@example.com",

      "contacts": [],

      "createdAt": 1692396412702,

      "createdBy": "peoplesoft@example.com",

      "description": "",

      "id": "nHRvRkSh53u6neZaGpve",

      "lastEditedAt": 1692396412702,

      "lastEditedBy": "peoplesoft@example.com",

      "name": "Meet the Author",

      "organization": "26a76887-1022-41bc-a7f0-769cc5c30c50",

      "owners": [

        "peoplesoft@example.com"

      ],

      "status": "Confirmed",

      "type": "Fundraisers",

      "version": 2,

      "meetings": [

        {

          "_id": "hcjQBOaXrZ6BMlgJCw57",

          "endDate": "2023-10-11",

          "endTime": 900,

          "eventId": "nHRvRkSh53u6neZaGpve",

          "featured": null,

          "hidden": null,

          "id": "hcjQBOaXrZ6BMlgJCw57",

          "private": null,

          "public": null,

          "resources": [],

          "startDate": "2023-10-11",

          "startTime": 800,

          "status": "Confirmed"

        }

      ]

    }

  }

}


Example 3 - Search on Event Type

Query

  • https://environment.coursedog.com/api/v1/em/schoolid/events/search/searchterm

  • In the below search, “searchterm” was “fundraiser


Results

{

  "numberOfResults": 2,

  "numberOfEvents": 2,

  "events": {

    "nHRvRkSh53u6neZaGpve": {

      "_id": "nHRvRkSh53u6neZaGpve",

      "attachments": [],

      "authorId": "peoplesoft@example.com",

      "contacts": [],

      "createdAt": 1692396412702,

      "createdBy": "peoplesoft@example.com",

      "description": "",

      "id": "nHRvRkSh53u6neZaGpve",

      "lastEditedAt": 1692396412702,

      "lastEditedBy": "peoplesoft@example.com",

      "name": "Meet the Author",

      "organization": "26a76887-1022-41bc-a7f0-769cc5c30c50",

      "owners": [

        "peoplesoft@example.com"

      ],

      "status": "Confirmed",

      "type": "Fundraisers",

      "version": 2,

      "meetings": [

        {

          "_id": "hcjQBOaXrZ6BMlgJCw57",

          "endDate": "2023-10-11",

          "endTime": 900,

          "eventId": "nHRvRkSh53u6neZaGpve",

          "featured": null,

          "hidden": null,

          "id": "hcjQBOaXrZ6BMlgJCw57",

          "private": null,

          "public": null,

          "resources": [],

          "startDate": "2023-10-11",

          "startTime": 800,

          "status": "Confirmed"

        }

      ]

    },

    "pksJ7mQ00yFhA9BBgawd": {

      "_id": "pksJ7mQ00yFhA9BBgawd",

      "attachments": [],

      "authorId": "peoplesoft@example.com",

      "contacts": [],

      "createdAt": 1692396458247,

      "createdBy": "peoplesoft@example.com",

      "description": "",

      "id": "pksJ7mQ00yFhA9BBgawd",

      "lastEditedAt": 1692396458247,

      "lastEditedBy": "peoplesoft@example.com",

      "name": "Book Signing",

      "organization": "e732746b-4a63-4372-a30b-f1c1957dd318",

      "owners": [

        "peoplesoft@example.com"

      ],

      "status": "Confirmed",

      "type": "Fundraisers",

      "version": 2,

      "meetings": [

        {

          "_id": "DzH0eBbIsXAugcUHwtko",

          "endDate": "2023-09-14",

          "endTime": 900,

          "eventId": "pksJ7mQ00yFhA9BBgawd",

          "featured": null,

          "hidden": null,

          "id": "DzH0eBbIsXAugcUHwtko",

          "private": null,

          "public": null,

          "resources": [],

          "startDate": "2023-09-14",

          "startTime": 800,

          "status": "Confirmed"

        }

      ]

    }

  }

}


Example 4 - Multi-Word Queries

Query

  • https://environment.coursedog.com/api/v1/em/schoolid/events/search/searchterm

  • In the below search, “searchterm” was “book+sign


Results

{

    "numberOfResults": 1,

    "numberOfEvents": 1,

    "events": {

        "pksJ7mQ00yFhA9BBgawd": {

            "_id": "pksJ7mQ00yFhA9BBgawd",

            "attachments": [],

            "authorId": "peoplesoft@example.com",

            "contacts": [],

            "createdAt": 1692396458247,

            "createdBy": "peoplesoft@example.com",

            "description": "",

            "id": "pksJ7mQ00yFhA9BBgawd",

            "lastEditedAt": 1692396458247,

            "lastEditedBy": "peoplesoft@example.com",

            "name": "Book Signing",

            "organization": "e732746b-4a63-4372-a30b-f1c1957dd318",

            "owners": [

                "peoplesoft@example.com"

            ],

            "status": "Confirmed",

            "type": "Fundraisers",

            "version": 2,

            "meetings": [

                {

                    "_id": "DzH0eBbIsXAugcUHwtko",

                    "endDate": "2023-09-14",

                    "endTime": 900,

                    "eventId": "pksJ7mQ00yFhA9BBgawd",

                    "featured": null,

                    "hidden": null,

                    "id": "DzH0eBbIsXAugcUHwtko",

                    "private": null,

                    "public": null,

                    "resources": [],

                    "startDate": "2023-09-14",

                    "startTime": 800,

                    "status": "Confirmed"

                }

            ]

        }

    }

}


Get Meetings

Overview | Example 1 - Query by Start Date | Example 2 - Query by Date Range
Example 3 - Pagination | Example 4 - Returning a Subset of Fields | Example 5 - Returning a Subset of Fields

Overview

  • The Get Meetings endpoint documented at https://coursedogeventsapi.docs.apiary.io/#reference/meetings-calendar/meetings/get-meetings accepts a number of filters and returns all the meeting instances matching that filter.

  • The “startDate” and “endDate” parameters are used to filter by date range.

  • Note that the result structure for this API is inverted from the Search for Events API; rather than returning events containing a list of meetings, it returns meetings containing the parent event.


Example 1 - Query by Start Date

Query

  • https://environment.coursedog.com/api/v1/em/schoolid/meetings?startDate=XXXX-YY-ZZ

    • XXXX = Year

    • YY = Month (Numeral)

    • ZZ = Day (Numeral)

  • In the below search, “XXXX-YY-ZZ” was “2023-09-01” (September 1, 2023)


Result

{

    "DzH0eBbIsXAugcUHwtko": {

        "_id": "DzH0eBbIsXAugcUHwtko",

        "endDate": "2023-09-14",

        "endTime": 900,

        "eventId": "pksJ7mQ00yFhA9BBgawd",

        "featured": null,

        "hidden": null,

        "id": "DzH0eBbIsXAugcUHwtko",

        "private": null,

        "public": null,

        "resources": [],

        "startDate": "2023-09-14",

        "startTime": 800,

        "status": "Confirmed",

        "eventData": {

            "_id": "pksJ7mQ00yFhA9BBgawd",

            "attachments": [],

            "authorId": "peoplesoft@example.com",

            "contacts": [],

            "createdAt": 1692396458247,

            "createdBy": "peoplesoft@example.com",

            "description": "",

            "id": "pksJ7mQ00yFhA9BBgawd",

            "lastEditedAt": 1692396458247,

            "lastEditedBy": "peoplesoft@example.com",

            "name": "Book Signing",

            "organization": "e732746b-4a63-4372-a30b-f1c1957dd318",

            "owners": [

                "peoplesoft@example.com"

            ],

            "status": "Confirmed",

            "type": "Fundraisers",

            "version": 2

        }

    },

    "hcjQBOaXrZ6BMlgJCw57": {

        "_id": "hcjQBOaXrZ6BMlgJCw57",

        "endDate": "2023-10-11",

        "endTime": 900,

        "eventId": "nHRvRkSh53u6neZaGpve",

        "featured": null,

        "hidden": null,

        "id": "hcjQBOaXrZ6BMlgJCw57",

        "private": null,

        "public": null,

        "resources": [],

        "startDate": "2023-10-11",

        "startTime": 800,

        "status": "Confirmed",

        "eventData": {

            "_id": "nHRvRkSh53u6neZaGpve",

            "attachments": [],

            "authorId": "peoplesoft@example.com",

            "contacts": [],

            "createdAt": 1692396412702,

            "createdBy": "peoplesoft@example.com",

            "description": "",

            "id": "nHRvRkSh53u6neZaGpve",

            "lastEditedAt": 1692396412702,

            "lastEditedBy": "peoplesoft@example.com",

            "name": "Meet the Author",

            "organization": "26a76887-1022-41bc-a7f0-769cc5c30c50",

            "owners": [

                "peoplesoft@example.com"

            ],

            "status": "Confirmed",

            "type": "Fundraisers",

            "version": 2

        }

    }

}


Example 2 - Query by Date Range

Query

  • https://environment.coursedog.com/api/v1/em/schoolid/meetings?startDate=XXXX-YY-ZZ&endDate=XXXX-YY-ZZ

    • XXXX = Year

    • YY = Month (Numeral)

    • ZZ = Day (Numeral)

  • In the below search, the startDate was “2023-09-01” (September 1, 2023) and the endDate was “2023-09-30”. 


Result

{

    "DzH0eBbIsXAugcUHwtko": {

        "_id": "DzH0eBbIsXAugcUHwtko",

        "endDate": "2023-09-14",

        "endTime": 900,

        "eventId": "pksJ7mQ00yFhA9BBgawd",

        "featured": null,

        "hidden": null,

        "id": "DzH0eBbIsXAugcUHwtko",

        "private": null,

        "public": null,

        "resources": [],

        "startDate": "2023-09-14",

        "startTime": 800,

        "status": "Confirmed",

        "eventData": {

            "_id": "pksJ7mQ00yFhA9BBgawd",

            "attachments": [],

            "authorId": "peoplesoft@example.com",

            "contacts": [],

            "createdAt": 1692396458247,

            "createdBy": "peoplesoft@example.com",

            "description": "",

            "id": "pksJ7mQ00yFhA9BBgawd",

            "lastEditedAt": 1692396458247,

            "lastEditedBy": "peoplesoft@example.com",

            "name": "Book Signing",

            "organization": "e732746b-4a63-4372-a30b-f1c1957dd318",

            "owners": [

                "peoplesoft@example.com"

            ],

            "status": "Confirmed",

            "type": "Fundraisers",

            "version": 2

        }

    }

}


Example 3 - Pagination

Query

  • Includes the “limit” and “skip” parameters to paginate results. 

  • https://environment.coursedog.com/api/v1/em/schoolid/meetings?startDate=XXXX-YY-ZZ&skip=A&limit=B

    • XXXX = Year

    • YY = Month (Numeral)

    • ZZ = Day (Numeral)

    • A = Numeral

    • B = Numeral

  • This is our standard pagination API. So if you wanted to retrieve 3 pages of results and have 50 results in each page, you'd use the following arguments in sequence:

    • limit=50&skip=0

    • limit=50&skip=50

    • limit=50&skip=100

  • In the below search, the startDate was “2023-09-01” (September 1, 2023), “A” was “1” and “B” was “1”. 


Result

{

    "hcjQBOaXrZ6BMlgJCw57": {

        "_id": "hcjQBOaXrZ6BMlgJCw57",

        "endDate": "2023-10-11",

        "endTime": 900,

        "eventId": "nHRvRkSh53u6neZaGpve",

        "featured": null,

        "hidden": null,

        "id": "hcjQBOaXrZ6BMlgJCw57",

        "private": null,

        "public": null,

        "resources": [],

        "startDate": "2023-10-11",

        "startTime": 800,

        "status": "Confirmed",

        "eventData": {

            "_id": "nHRvRkSh53u6neZaGpve",

            "attachments": [],

            "authorId": "peoplesoft@example.com",

            "contacts": [],

            "createdAt": 1692396412702,

            "createdBy": "peoplesoft@example.com",

            "description": "",

            "id": "nHRvRkSh53u6neZaGpve",

            "lastEditedAt": 1692396412702,

            "lastEditedBy": "peoplesoft@example.com",

            "name": "Meet the Author",

            "organization": "26a76887-1022-41bc-a7f0-769cc5c30c50",

            "owners": [

                "peoplesoft@example.com"

            ],

            "status": "Confirmed",

            "type": "Fundraisers",

            "version": 2

        }

    }

}


Example 4 - Returning a Subset of Fields

Query

  • Include the returnFields argument to only return a subset of object fields. 

  • The field names are passed on as a comma-delimited list.

  • https://environment.coursedog.com/api/v1/em/schoolid/meetings?startDate=XXXX-YY-ZZ&returnFields=FieldIdFieldIdFieldId

    • XXXX = Year

    • YY = Month (Numeral)

    • ZZ = Day (Numeral)

    • FieldId = The Field/Question Id of the field(s) you would like to have returned.

  • In the below search, the startDate was “2023-09-01” (September 1, 2023), and the return fields are ID, startDate, and endDate. 


Result

{

    "DzH0eBbIsXAugcUHwtko": {

        "_id": "DzH0eBbIsXAugcUHwtko",

        "endDate": "2023-09-14",

        "id": "DzH0eBbIsXAugcUHwtko",

        "startDate": "2023-09-14",

        "eventData": {}

    },

    "hcjQBOaXrZ6BMlgJCw57": {

        "_id": "hcjQBOaXrZ6BMlgJCw57",

        "endDate": "2023-10-11",

        "id": "hcjQBOaXrZ6BMlgJCw57",

        "startDate": "2023-10-11",

        "eventData": {}

    }

}



Example 5 - Returning a Subset of Fields

Query

  • This is a variation of Example 4. 

  • In the below search, the startDate was “2023-09-01” (September 1, 2023), and the return fields are ID, startDate, endDate, startTime, endTime, eventData, name, eventData, and status (i.e. https://environment.coursedog.com/api/v1/em/schoolid/meetings?startDate=XXXX-YY-ZZ&returnFields=id,startDate,endDate,startTime,endTime,eventData.name,eventData.status


Result

{

    "DzH0eBbIsXAugcUHwtko": {

        "_id": "DzH0eBbIsXAugcUHwtko",

        "endDate": "2023-09-14",

        "endTime": 900,

        "id": "DzH0eBbIsXAugcUHwtko",

        "startDate": "2023-09-14",

        "startTime": 800,

        "eventData": {

            "name": "Book Signing",

            "status": "Confirmed"

        }

    },

    "hcjQBOaXrZ6BMlgJCw57": {

        "_id": "hcjQBOaXrZ6BMlgJCw57",

        "endDate": "2023-10-11",

        "endTime": 900,

        "id": "hcjQBOaXrZ6BMlgJCw57",

        "startDate": "2023-10-11",

        "startTime": 800,

        "eventData": {

            "name": "Meet the Author",

            "status": "Confirmed"

        }

    }


Create Meeting

Overview | Important Note | Example 1 - Creating a Meeting
Example 2 - Check for Meeting Conflicts | Example 3 - Create Multiple Meetings

Overview

The POST event endpoint documented at https://coursedogeventsapi.docs.apiary.io/#reference/events/events/post-an-event takes a JSON structure defining a single event and returns the id of the created event, if successful.


Important Note

  • Using this API directly bypasses the usual event validation logic used by Coursedog.

  • Thus, for example, it is possible to create events that would normally be disallowed due to conflicts, or even events that have invalid date/time ranges.


Example 1 - Creating a Meeting

Query

https://environment.coursedog.com/api/v1/em/schoolid/events?doPutMeetings=true


Post

{

    "organization": "e732746b-4a63-4372-a30b-f1c1957dd318",

    "type": "Lecture/Speaker 2",

    "name": "Introductory Lecture",

    "description": "Overview of the lecture series",

    "status": "Confirmed",

    "meetings": [

        {

            "resources": [],

            "startDate": "2023-11-17",

            "endDate": "2023-11-17",

            "startTime": "0800",

            "endTime": "0900",

            "roomId": "1A-101C"

        }

    ],

    "contacts": [

        {

            "name": "John Doe",

            "email": "peoplesoft@example.com",

            "phone": "",

            "notify": false

        }

    ]

}


Response

"4KtFOyfD0bIM2lciZejz"


This POST request results in the following event:


Example 2 - Check for Meeting Conflicts

Overview

To explicitly invoke the meeting conflicts logic, use the meetingConflicts endpoint.


Query

https://environment.coursedog.com/api/v1/em/schoolid/meetingConflicts?eventId=new


Post

{

    "organization": "e732746b-4a63-4372-a30b-f1c1957dd318",

    "type": "Lecture/Speaker",

    "name": "Introductory Lecture",

    "description": "Overview of the lecture series",

    "status": "Confirmed",

    "meetings": [

        {

            "resources": [],

            "startDate": "2023-11-08",

            "endDate": "2023-11-08",

            "startTime": "0800",

            "endTime": "0900",

            "roomId": "1A-101C"

        }

    ],

    "contacts": [

        {

            "name": "John Doe",

            "email": "peoplesoft@example.com",

            "phone": "",

            "notify": false

        }

    ]

}


Response

{

    "cXlQb0R88aEwQaC8z58F": [

        {

            "conflictReason": "daysNoticeLimitConflict",

            "meetingId": "cXlQb0R88aEwQaC8z58F",

            "eventId": null,

            "conflictText": "Lecture/Speaker events are not allowed to be scheduled within 7 days of the event.\n    This event was created on 11/07/2023\n    and should not have any meetings starting before 11/15/2023."

        },

        {

            "conflictReason": "doubleBookedRoom",

            "meetingId": "cXlQb0R88aEwQaC8z58F",

            "eventId": null,

            "conflictText": "Room <strong>CSI01 - 1A-101C</strong> is <strong>double booked</strong> with <strong>BIO 105 - 001</strong> on 11/08/2023."

        },

        {

            "conflictReason": "doubleBookedRoom",

            "meetingId": "cXlQb0R88aEwQaC8z58F",

            "eventId": null,

            "conflictText": "Room <strong>CSI01 - 1A-101C</strong> is <strong>double booked</strong> with <strong>Introductory Lecture</strong> on 11/08/2023."

        }

    ]

}


Example 3 - Create Multiple Meetings

Overview

  • You can use the same endpoint to create multiple meetings for the same event.

  • In this example, the Query and response is the same as Example 1 (we only return the first id that was created). 


Query

https://environment.coursedog.com/api/v1/em/schoolid/events?doPutMeetings=true


Post

{

        "organization": "e732746b-4a63-4372-a30b-f1c1957dd318",

        "type": "Lecture/Speaker",

        "name": "Introductory Lectures",

        "description": "Overview of the lecture series",

        "status": "Confirmed",

        "meetings": [

            {

                "resources": [],

                "startDate": "2023-11-17",

                "endDate": "2023-11-17",

                "startTime": "0800",

                "endTime": "0900",

                "roomId": "1A-101C"

            },

            {

                "resources": [],

                "startDate": "2023-11-18",

                "endDate": "2023-11-18",

                "startTime": "0800",

                "endTime": "0900",

                "roomId": "1A-101C"

            }


        ],

        "contacts": [

            {

                "name": "John Doe",

                "email": "peoplesoft@example.com",

                "phone": "",

                "notify": false

            }

        ]

    }


Related Articles

Did you find it helpful? Yes No

Send feedback
Sorry we couldn't be helpful. Help us improve this article with your feedback.