Senate Calendar API

Note

Assembly calendar data is currently not sent to us at this time. chamber must be ‘senate’.

Get a single calendar

Usage

Full calendar:
   /api/3/calendars/{year}/{calendarNumber}
Floor calendar:
   /api/3/calendars/{year}/{calendarNumber}/floor
Supplemental calendar:
   /api/3/calendars/{year}/{calendarNumber}/{versionCharacter}
Active list:
   /api/3/calendars/{year}/{calendarNumber}/{sequenceNumber}

Optional Params

Parameter

Values

Description

full

boolean

(default true) Set to true to get a full calendar response instead of a summary.

Examples

/api/3/calendars/2014/54               (Get calendar 54 of 2014)
/api/3/calendars/2014/54?&full=false   (Get a summary of calendar 54)
/api/3/calendars/2014/54/0             (Get the base active list for calendar 54)
/api/3/calendars/2014/54/floor         (Get the floor calendar for calendar 54)
/api/3/calendars/2014/54/B             (Get supplemental calendar B of calendar 54)

Sample Responses

Full calendar:

{
    "success": true,
    "message": "",
    "responseType": "calendar",
    "result": {
        "year": 2014,                 // Year the calendar was published
        "calendarNumber": 54,         // Incremental identifier for calendars within a year
        "floorCalendar": {...},       // See supplemental/floor calendar response result
        "supplementalCalendars": {
            "items": {...},           // Map of supplemental version characters to
                                    //  supplemental calendar response results
            "size": 2
        },
        "activeLists": {
            "items": {...},           // Map of sequence numbers to active list response results
            "size": 3
        },
        "calDate": "2014-06-20"       // The date this calendar was active for
    }
}

Supplemental/Floor calendar:

{
  "success": true,
  "message": "",
  "responseType": "calendar-floor",   // "calendar-supplemental" if the response is a supplemental
  "result": {
    "year": 2014,                             // The year the calendar was released
    "calendarNumber": 54,                     // Incremental identifier for calendars within a year
    "version": "floor",                       // The supplemental version, "floor" or
                                              //  a single capital character
    "calDate": "2014-06-20",
    "releaseDateTime": "2014-06-20T02:01",    // The date this supplemental was released
    "entriesBySection": {                     // A listing of bills mapped to their floor status
      "items": {
        "THIRD_READING": {                    // List of bills on their third reading
          "items": [
            {                                 // Modified bill response (link below)
              "basePrintNo": "A5625",
              "session": 2013,
              "printNo": "A5625A",
              "billType": {
                "chamber": "ASSEMBLY",
                "desc": "Assembly",
                "resolution": false
              },
              "title": "Extends the expiration of the New York state French and Indian war 250th anniversary commemoration commission until December 31, 2015",
              "activeVersion": "A",
              "year": 2013,
              "publishedDateTime": "2013-03-04T14:32:46",
              "substitutedBy": null,
              "sponsor": {
                "member": {
                  "memberId": 466,
                  "shortName": "ENGLEBRIGHT",
                  "sessionYear": 2013,
                  "fullName": "Steven Englebright",
                  "districtCode": 4
                },
                "budget": false,
                "rules": false
              },
              "billCalNo": 1090,              // The calendar number that ids this bill
                                              //  within all calendars
              "sectionType": "THIRD_READING", // The floor status of this bill
              "subBillInfo": {                // Bill info response for a substituted bill
                "basePrintNo": "S7605",
                "session": 2013,
                "printNo": "S7605",
                "billType": {
                  "chamber": "SENATE",
                  "desc": "Senate",
                  "resolution": false
                },
                "title": "Extends the expiration of the New York state French and Indian war 250th anniversary commemoration commission until December 31, 2015",
                "activeVersion": "",
                "year": 2014,
                "publishedDateTime": "2014-05-15T18:17:31",
                "substitutedBy": null,
                "sponsor": {
                  "member": {
                    "memberId": 385,
                    "shortName": "ESPAILLAT",
                    "sessionYear": 2013,
                    "fullName": "Adriano Espaillat",
                    "districtCode": 31
                  },
                  "budget": false,
                  "rules": false
                }
              },
              "billHigh": false               // Set to true if this is a high priority bill
            },
            ...
          ],
          "size": 284
        },
        "STARRED_ON_THIRD_READING": {     // Another floor status. All statuses include:
                                    // ORDER_OF_THE_FIRST_REPORT, ORDER_OF_THE_SECOND_REPORT,
                                    // ORDER_OF_THE_SPECIAL_REPORT, THIRD_READING,
                                    // THIRD_READING_FROM_SPECIAL_REPORT,
                                    // STARRED_ON_THIRD_READING
          "items": [...],
          "size": 3
        }
      },
      "size": 2
    }
  }
}

Active List:

{
  "success": true,
  "message": "",
  "responseType": "calendar-activelist",
  "result": {
    "year": 2014,                             // The year the calendar was released
    "calendarNumber": 54,                     // Incremental identifier for calendars within a year
    "sequenceNumber": 0,                      // Indicates publish sequence of active lists
    "calDate": "2014-06-20",                  // The date this calendar was active
    "releaseDateTime": "2014-06-20T04:28:48", // The date and time this active list was released
    "notes": null,                            // Notes regarding the active list, pretty much always null
    "entries": {                              // List of bills on this active list
      "items": [
        {                                   // Modified bill response (see above link)
          "basePrintNo": "S4779",
          "session": 2013,
          "printNo": "S4779B",
          "billType": {
            "chamber": "SENATE",
            "desc": "Senate",
            "resolution": false
          },
          "title": "Relates to inheritance by children conceived after the death of a genetic parent",
          "activeVersion": "B",
          "year": 2013,
          "publishedDateTime": "2013-04-23T15:04:37",
          "substitutedBy": {
            "basePrintNo": "A7461",
            "session": 2013
          },
          "sponsor": {
            "member": {
              "memberId": 413,
              "shortName": "BONACIC",
              "sessionYear": 2013,
              "fullName": "John J. Bonacic",
              "districtCode": 42
            },
            "budget": false,
            "rules": false
          },
          "billCalNo": 192                    // The calendar number that ids this bill
                                            //  within all calendars
        },
        ...
      ],
      "size": 31
    }
  }
}

Get a listing of calendars

Usage

Full calendars:
   /api/3/calendars/{year}
Supplemental/Floor calendars:
   /api/3/calendars/{year}/supplemental
Active lists:
   /api/3/calendars/{year}/activelist

Optional Params

Parameter

Values

Description

full

boolean

(default false) Set to true to see the full calendar responses instead of the summaries.

limit

string

(default 100) Limit the number of results

offset

number

(default 1) Start results from offset

order

string

(default ‘ASC’) Determines the order the calendar responses. Responses are ordered by calendar number and then either sequenceNumber or version if they are active lists or supplementals respectively.

Examples

/api/3/calendars/2014?full=true                       (Get all calendar data from 2014)
/api/3/calendars/2014?limit=1&order=DESC              (Get the latest calendar from 2014)
/api/3/calendars/2014/activelist?limit=5              (Get the first 5 active lists of 2014)
/api/3/calendars/2014/supplemental?limit=5&offset=5   (Get the second 5 supplementals of 2014)

Search for calendars

Read our search API docs for info on how to construct search terms. The calendar search index is comprised of full calendar responses (i.e. the json response returned when requesting a single calendar) so query and sort strings will be based on that response structure.

Usage

Search across all session years

(GET) /api/3/calendars/search?term=YOUR_TERM

Search within a year

(GET) /api/3/calendars/{year}/search?term=YOUR_TERM

Required Params

Parameter

Values

Description

term

string

ElasticSearch query string

Optional Params

Parameter

Values

Description

sort

string

ElasticSearch sort string

Also takes all calendar listing optional params with the exception of order

Get calendar updates

To identify which calendars have received updates within a given time period you can use the calendar updates api.

Usage

List of calendars updated within the past seven days

(GET) /api/3/calendars/updates

List of calendars updated after the given date/time

(GET) /api/3/calendars/updates/{fromDateTime}

List of calendars updated during the given date/time range

(GET) /api/3/calendars/updates/{fromDateTime}/{toDateTime}

Note

The ‘fromDateTime’ and ‘toDateTime’ parameters should be formatted as the ISO 8601 Date Time format. For example December 10, 2014, 1:30:02 PM should be inputted as 2014-12-10T13:30:02. The fromDateTime and toDateTime range is exclusive/inclusive respectively.

Optional Params

Parameter

Values

Description

detail

boolean

Set to true to see detailed update digests

order

string (asc|desc)

Order the results by update date/time

Examples

Calendars that were updated between January 1st and January 20th of 2019

(GET) /api/3/calendars/updates/2019-01-01T00:00:00/2019-01-20T00:00:00

Response (detail=false)

{
  "success" : true,
  "message" : "",
  "responseType" : "update-token list",
  "total" : 4,
  "offsetStart" : 1,
  "offsetEnd" : 4,
  "limit" : 100,
  "result" : {
    "items" : [
      {
        "id" : {        // The year and calendar number of the updated calendar
          "year" : 2019,
          "calendarNumber" : 1
        },
        // The id of the reference that triggered the update
        "sourceId" : "2019-01-14-15.55.39.563595_SENCAL_00001.XML-1-CALENDAR",
        // The publish date time of the reference source
        "sourceDateTime" : "2019-01-14T15:55:39.563595",
        // The date and time that the reference was processed
        "processedDateTime" : "2019-01-14T16:01:20.389704"
      },
      ... (truncated)
    ],
    "size" : 2
  }
}

Get specific calendar updates

Usage

Get updates for a calendar within a datetime range

(GET) /api/3/calendars/{year}/{calendarNumber}/updates/{fromDateTime}/{toDateTime}

Get all updates for a calendar

(GET) /api/3/calendars/{year}/{calendarNumber}/updates

Optional Params

Parameter

Values

Description

type

(processed|published)

The type of bill update (see below for explanation)

order

string (asc|desc)

Order the results by update date/time

limit

string

(default 100) Limit the number of results

offset

number

(default 1) Start results from offset

Examples

Get updates for calendar 54 of 2014 that occurred between 9 AM and 5 PM on June 20th, 2014

(GET) /api/3/calendars/2014/54/updates/2014-06-20T09:00:00/2014-06-20T17:00:00

Response (type=published)

{
  "success" : true,
  "message" : "",
  "responseType" : "update-digest list",
  "total" : 3,
  "offsetStart" : 1,
  "offsetEnd" : 3,
  "limit" : 0,
  "result" : {
    "items" : [
      {
        "id" : {
          "year" : 2014,
          "calendarNumber" : 54
        },
        "sourceId" : "SOBI.D140620.T153915.TXT-1-CALENDAR",
        "sourceDateTime" : "2014-06-20T15:39:15",
        "processedDateTime" : "2014-12-15T15:21:34.786472",
        "action" : "INSERT",                // The update action that was performed
        "scope" : "Calendar Active List",   // The type of sub calendar that was updated
        "fields" : {                        // Updated fields
          "publishedDateTime" : "2014-06-20 05:28:51",
          "notes" : "",
          "sequenceNo" : "0",
          "createdDateTime" : "2014-12-15 15:21:34.786472",
          "id" : "302",
          "calendarDate" : "2014-06-20",
          "releaseDateTime" : "2014-06-20 04:28:48"
        }
      },
      ... (truncated)
    ],
    "size" : 3
  }
}

Warning

By default the type is set to ‘processed’. As we reprocess our data periodically, it’s possible this specific api call may not produce the result shown. However, the response you receive will follow the format in the example