Our API (Application Programming Interface) endpoints respond to http requests with JSON and can provide data for custom reports.
PrerequisitesPlease email support@nextrequest.com to initiate the the API key request.
Your user role must be Admin to request and to access the API key.
The API key is assigned to only one user; they must be logged in to the portal in order to access and make requests.
Table of Contents
- Making Requests
- Requests in Chrome with Postman
- Requests in the Terminal using cURL
- Your Custom App
- Pagination
- Date ranges
- Response Structure
- Requests
- Messages(Notes)
- Request Close Reasons
- Request Events
- Event Types
- Staff Time (Request Hours)
- Request Support Staff (Helper Requests)
- Tags
- Taggings
- Documents
- Departments
- Department Users
- Departments’ Requests
- Users
- Message Templates
- Message Template Usage
Making Requests
You can make requests to the NextRequest API via
- Postman
- cURL
- Your custom app
- Open Chrome
- Install the Postman Chrome extension and launch
- You don’t need to register, just click “Skip this, go straight to the app” when you get to this page
- Fill in ‘Enter request url’ with http://YOUR_SITE/api/v2/requests (replacing the YOUR_SITE with your NextRequest domain name).
- Click on ‘Headers’ and fill in ‘key’ with Authorization and ‘value’ with YOUR_TOKEN (that we have provided).
- Your request should look like this:
- Click the Send button. The response will be appear in the lower part of the screen.
Requests in the Terminal Using cURL
- Open your terminal
- Type in the following, replacing “YOUR_SITE” with your NextRequest domain (e.g. portofseattle.nextrequest.com) and “YOUR_TOKEN” with the token we have provided and v1 with v2.
(On windows, the curl command must not contain single quotes. Use double quotes instead
- Press Enter/Return, and the first 100 requests will appear in the terminal.
Your Custom App
You are welcome to tailor your app to consume the NextRequest API. There are simple open-source Ruby solutions to consume APIs, such as REST client and Faraday.
Pagination
The API is now paginated, returning a maximum of 100 requests per request. You can scroll through the database by using pagination. The default will return the first page with 100 items. There are two attributes you can set:
- page[size]
- Defaults to the maximum value (100)
- Allows any integer up to the 100
- page[number]
- Defaults to 1
- Allow any integer
- If the request includes no items, the response will be an empty array ([]) or a hash whose data key has a value of an empty array (i.e JSON.parse(response)["data"] == [] is true).
Example:
https://YOUR_SITE/api/v2/helper_requests.json?page[size]=2&page[number]=3
This would return the 3rd page of helper_requests with a page size of 2.
Date ranges
You can limit results by the date created using the query parameters "start_date" and "end_date". These should be in month/day/year format (e.g. 2/23/2018).
- start_date
- the first date you'd like included in the query
- starts at the beginning of the day
- end_date
- the last date you'd like included in the query
- ends at the end of the day
These can be used together or separately. All of the following are valid:
- https://YOUR_SITE/api/v2/tags.json?start_date=1/14/2018
- https://YOUR_SITE/api/v2/tags.json?start_date=1/14/2018&end_date=1/25/2018
- https://YOUR_SITE/api/v2/tags.json?end_date=1/14/2018
Response Structure Requests
GET /requests
Example response:
[
{
"id": 30,
"created_at": "2015-01-12T20:48:10.600-07:00",
"updated_at": "2018-06-05T08:55:53.805-06:00",
"request_text": "test",
"request_date": "2015-01-12T20:48:10.600-07:00",
"due_date": "2015-01-27T20:48:10.000-07:00",
"closed_date": null,
"request_submit_type_id": null,
"pretty_id": "15-3",
"publish_date": "2015-01-12T20:48:10.600-07:00",
"visibility": "published",
"closure_reasons": null,
"state": "Overdue",
"staff_cost": "0.0",
"initial_contact_date": null,
"initial_contact_event_id": null,
"compliance": false,
"initial_due_date": null,
"poc_id": 124,
"expiration_date": null,
"expire_next_month": false,
"archived": false,
"exempt_from_retention": false,
"account_id": 22,
"pretty_id_group_id": 7,
"anticipated_fulfilled_at": null,
"demo": false,
"jlarc_response_biz_days": 44,
"biz_days_to_close": null,
"days_to_close": null,
"general_report_response_days": null,
"ever_overdue": false,
"bdp_used": false
}
]
Messages (Notes)
GET /notes
Example response:
[
{
"id": 632,
"note_text": "Email with attachment from staff",
"created_at": "2018-06-28T13:05:44.759-06:00",
"updated_at": "2018-06-28T13:05:44.759-06:00",
"request_id": 748,
"email": true,
"deleted": false,
"user_id": 1964,
"state": "staff",
"account_id": 22
}
]
Request Close Reasons
GET /request_close_reasons
Example response:
[
{
"id": 1,
"request_id": 2,
"close_request_type_id": 1,
"created_at": "2014-12-02T16:41:14.515-06:00",
"updated_at": "2016-05-15T09:46:29.604-05:00",
"request_event_id": 9,
"description": "<p>Fulfilled</p>\n",
"account_id": 22
}
]
Request Events
GET /request_events
Example response:
[
{
"id": 112,
"request_id": 28,
"event_type_id": 1159,
"subject_user_id": 97,
"object_user_id": 97,
"description": null,
"created_at": "2014-11-24T15:08:40.050-07:00",
"updated_at": "2014-11-24T15:08:40.050-07:00",
"display_text": null,
"byline": "by andy+requester@example.com",
"public_byline": null,
"state": "public",
"account_id": 22,
"deleted": false
}
]
GET /event_types
Example response:
[
{
"id": 1152,
"name": "Request Closed",
"created_at": "2014-11-24T14:21:31.201-07:00",
"updated_at": "2017-05-15T13:32:00.658-06:00",
"state": "public",
"display_on_request_timeline": true,
"display_name": null,
"icon_class": "far fa-check-square",
"toggleable": false,
"category": "status",
"account_id": 22
}
]
GET /request_hours
Example response:
[
{
"id": 2,
"user_id": 112,
"request_id": 73,
"seconds": 8280,
"staff_cost": "0.0",
"created_at": "2016-06-30T15:45:48.636-06:00",
"updated_at": "2016-06-30T15:45:48.648-06:00",
"deleted": false,
"description": null,
"department_id": null,
"account_id": 22
}
]
GET /helper_requests
Example response:
[
{
"user_id": 2,
"request_id": 1,
"created_at": "2015-03-22T10:54:16.926-05:00",
"updated_at": "2015-03-22T10:54:16.926-05:00",
"id": 1,
"deleted": false,
"account_id": 22
}
]
Tags
GET /tags
Example response:
[
{
"id": 6,
"name": "Redaction Done",
"description": "",
"created_at": "2016-10-26T17:36:15.837-06:00",
"updated_at": "2018-07-11T11:38:29.176-06:00",
"account_id": 22,
"disabled": true,
"demo": false,
"category_id": null
}
]
GET /taggings
Example response:
[
{
"id": 1,
"tag_id": 1,
"taggable_id": 344,
"taggable_type": "Request",
"created_at": "2016-08-21T13:17:40.254-05:00",
"updated_at": "2016-08-21T13:17:40.254-05:00",
"deleted": false,
"account_id" : 22
}
]
GET /documents
Example response:
[
{
"id": 2168,
"title": "image001.jpg",
"url": "//rtdev.s3-us-west-1.amazonaws.com/test/17-119/2b044e1f-0dde-4208-bb50-6e1c490b46d7",
"description": "",
"created_at": "2018-03-19T16:40:23.651-06:00",
"updated_at": "2018-07-05T16:39:34.727-06:00",
"count": 0,
"doc_date": null,
"redacted_at": null,
"deleted": false,
"link": false,
"requester_upload": false,
"folder": "RE: Attorney Client RE: Draft Response for MC(1)",
"state": "staff",
"filename": "image001.jpg",
"request_id": 466,
"archived": false,
"expiration_date": "2020-03-19T16:40:23.651-06:00",
"expire_next_month": false,
"exempt_from_retention": false,
"subfolder": null,
"review_state": "Unprocessed",
"account_id": 22,
"token": null,
"token_expires_at": null,
"demo": false,
"attachment_via_email": false,
"temp_upload_key": null,
"original_doc_link": null
}
]
GET /departments
Example response:
[
{
"id": 67,
"name": "Parks & Recreation",
"description": "",
"created_at": "2018-04-23T13:49:15.497-06:00",
"updated_at": "2019-01-29T07:23:16.471-07:00",
"poc_id": null,
"visibility_default": null,
"disabled": false,
"account_id": 22,
"public_visibility": false,
"demo": false
}
]
GET /department_users
Example response:
[
{
"id": 2,
"department_id": 1,
"user_id": 6,
"created_at": "2015-01-19T16:47:58.039-06:00",
"updated_at": "2015-01-19T16:47:58.053-06:00",
"default_helper": false,
"deleted": false,
"account_id": 22
}
]
GET /departments_requests
Example response:
[
{
"request_id": 144,
"department_id": 2,
"id": 1,
"deleted": false,
"account_id": 22
}
]
Users
GET /users
Example response:
[
{
"id": 2287,
"email": "samantha@nextrequest.com",
"reset_password_sent_at": null,
"remember_created_at": null,
"sign_in_count": 1,
"current_sign_in_at": "2019-01-17T10:46:34.807-07:00",
"last_sign_in_at": "2019-01-17T10:46:34.807-07:00",
"current_sign_in_ip": "127.0.0.1",
"last_sign_in_ip": "127.0.0.1",
"created_at": "2019-01-17T10:43:50.656-07:00",
"updated_at": "2019-01-17T10:46:34.860-07:00",
"name": null,
"phone_number": null,
"address": null,
"company": null,
"disabled": false,
"role": "admin",
"city": null,
"state": null,
"zipcode": null,
"default_helper": false,
"title": null,
"hourly_rate": null,
"undeliverable_email": false,
"password_setup": true,
"confirmed_at": "2019-01-17T10:46:32.799-07:00",
"confirmation_sent_at": null
}
]
GET /message_templates
Example response:
[
{
"id": 5,
"name": "Sally's template",
"description": "<p>hi</p>",
"created_at": "2016-08-03T14:23:13.530-06:00",
"updated_at": "2018-07-27T09:13:16.826-06:00",
"initial_contact": false,
"account_id": 22,
"disabled": true,
"demo": false,
"category_id": null
}
]
GET /notes_message_templates
Example response:
[
{
"id": 1,
"note_id": 535,
"message_template_id": 2,
"account_id": 22,
"created_at": "2018-02-15T16:19:50.891-07:00",
"updated_at": "2018-02-15T16:19:50.895-07:00"
}
]