FOIAXpress API User Manual

Prev Next

1 FOIAXpress API Introduction

1.1 About the API

We’ve created the FOIAXpress API to allow for integration with external data monitoring applications. This is a standalone API that is included in the FOIAXpress installation package. This API must be installed separately from the FOIAXpress application, and users of the API must be authenticated application users with permissions to access the data being queried.

1.2 About this Manual

This manual covers instructions on accessing and using the included API methods. The following major topics are included:

  • Accessing the FOIAXpress API: Token creation, accessing the API, and viewing logs

  • Request Methods: Methods to query Request data

  • Audit Methods: Methods to query user actions and logins

2 Authentication using Access Token Tool

Each API user must be authenticated before they are able to use the API. Your administrator has an Access Token Tool which can be used to create a token for you as an API user. These tokens are time limited and must be provisioned again after expiration. Please contact your administrator to request an access token.

2.1 How to Access the FOIAXpress API

If you have been provided with a valid access token, you can access the FOIAXpress API from your desktop search bar. Search for FOIAXpress API in your program files and select this program to open the FOIAXpress API application.

The methods available in the API are described in the Request Methods and Audit Methods sections of this document.

NOTE: You must have Request Type or Audit permissions within the application to use the Request and Audit methods, respectively.

The following sections provide details and steps to use the Request methods to query request data.

3 Request Methods

3.1 Get Request Status

You can use the Get Request Status method to retrieve the status of a specific request. This requires the exact ID of the request you are querying.

NOTE: You must have Request Type permissions within the application to access this method.

To use the Get Request Status function:

  1. Under Requests, locate the id string field and enter the Request ID exactly as it appears in the application, then click Execute:

API request parameters with highlighted ID and execute button for status check.

  1. After clicking Execute, the request data appears in the Response Body as shown below.

Server response details showing status code 200 and assigned response body.

  1. There are options to (A) Copy this to your clipboard, or (B) Download the response body.

To use this function via URL, use the following string with the application URL in place of <fx-api-url>, and replacing the {id} with the request ID you are querying:

<fx-api-url>/requests/{id}/status An example URL is shown below:

3.2 Get Request

You can use the Get Request API to query for data on a specific request. This requires the exact Request ID.

NOTE: You must have Request Type permissions within the application to access this method.

This method returns the following Request details:

  • visibleRequestID: ID of the request

  • requestStatus: Status of the request

  • receivedDate: Date when the request was received.

  • closedDate: Date when the request was closed. It is null if request is active

  • requestTypeName: Request Type

  • actionOffice: Action Office

  • deliveryMode: Mode of delivery of response to the requester

  • feeWaiverStatus: Fee waiver status of the request

  • paymentStatus: Payment Status of the request

  • priority: Priority of the request

  • receivedMode: How the request was received

  • requesterCategory: Category to which the requester belongs to

  • reviewStatus: Review status of the request

  • targetDate: Target date to close the request

To use the Get Request Status function:

  1. Under Requests, locate the id string field and enter the Request ID exactly as it appears in the application, then click Execute:

API request interface showing parameters and execution button for retrieving data.

  1. After clicking Execute, the request data appears in the Response Body as shown below.

Response body details including request status, dates, and requester category information.

  1. There are options to (A) Copy this to your clipboard, or (B) Download the response body.

3.3 Get Requests

You can use the Get Requests API to query for requests with matching attributes.

NOTE: You must have Request Type permissions within the application to access this method.

3.3.1 Parameters

The parameters available within the Get Requests method are outlined in the following tables. Request Status parameter options:

Parameter

Attribute

Need

On Hold-Need Info/Clarification

CWithheld

On Hold-Fee Related

DAdded

Documents Added

DD

Documents Delivered

DF

Delivery Failed

DP

Delivery Pending

Amended

Amended

Assigned

Assigned

Canceled

Canceled

Closed

Closed

Completed

Disposition Accepted

Received

Received

Screened

Perfected

Parameter

Attribute

ReqforDocs

Request for Docs Sent

RvwPending

Review Pending

RvwAprvd

Review Approved

RvwDisApvd

Review Disapproved

DAddRvwLog

Documents Added to Review Log

Request Type Name Parameters:

Parameter

Example

Request Type name, as found in Administration > Request Management

ā€œFOIAā€, ā€œFOIA,APPā€

Action Office parameter options:

Parameter

Example

Office Codes, as found in Administration > Organization Setup

ā€œHQā€, ā€œHQ,DCā€

3.3.2 Using the Get Requests Method

Follow the steps below to use the Get Requests method:

  1. Under Post/requests, use the Request body to customize the query. Beside each parameter you are using, enter the Request data that you would like returned in the results:

API request body showing parameters for FOIA requests and their statuses.

  1. The pageSize and pageNumber fields are required and configure the formatting for the returned results. pageSize indicates the number of items returned per page, and pageNumber dictates the current page number.

  2. If you are using the receivedDateFrom or closedDateFrom fields, you must also use the receivedDateTo and closedDateTo fields, respectively.

NOTE: Dates follow UTC format and will take the hours and minutes as 00:00 unless specified. To fetch values for a specific date, either specify the time or use the following date. For example, to fetch values for 11/1/2023, use either 2023-11-01T23:59Z or 2023-11-02.

  1. For details on each parameter, see the Get Request Parameters section. Remove any parameters you are not using in the query.

  2. After executing the method, the output returns all Requests matching the parameters used in the Request Body.

3.4 Requests Count

This method returns the total number of requests found for the requested ID.

3.4.1 Parameters

{

"visibleRequestIDs": [ "string"

],

"receivedDateFrom": "2024-04-09T15:56:23.647Z", "receivedDateTo": "2024-04-09T15:56:23.647Z", "closedDateFrom": "2024-04-09T15:56:23.647Z", "closedDateTo": "2024-04-09T15:56:23.647Z",

"requestStatus": [ "string"

],

"requestTypeName": [ "string"

],

"actionOffice": [ "string"

]}

3.4.2 Output

The number of requests that match with the filter

API request body example showing parameters for counting requests.

3.5 Request/Update request

Update a request with the information that the user sent via JSON.

3.5.1 Parameters

{

"description": "string",

"requestedDate": "2024-04-09T15:57:02.503Z", "receivedDate": "2024-04-09T15:57:02.503Z",

"officeCode": "string", "requesterFirstName": "string", "requesterLastName": "string", "requesterEmail": "string",

"requesterCountry": "string", "requesterZipCode": "string", "requestUserEmail": "string", "priority": "string", "deliveryMode": "string", "receiveMode": "string", "requesterCategory": "string", "address1": "string", "address2": "string",

"city": "string",

"state": "string", "homePhone": "string", "workPhone": "string", "requestCustomFields": [

{

"fieldName": "string", "dataType": "string", "value": "string"

}

],

"requestDescriptionAttachments": [

{

"contentType": "string", "fileData": "string", "fileName": "string", "fileSize": "string"

}

],

"expediteRequested": true, "expediteDescription": "string",

"expediteStartDate": "2024-04-09T15:57:02.503Z", "expediteDescriptionAttachments": [

{

"contentType": "string", "fileData": "string", "fileName": "string", "fileSize": "string"

}

],

"feeWaiverRequested": true, "feeWaiverDescription": "string", "feeWaiverStart": "2024-04-09T15:57:02.503Z",

"feeWaiverDescriptionAttachments": [

{

"contentType": "string", "fileData": "string", "fileName": "string", "fileSize": "string"

}

],

"linkedRequests": [

{

"id": 0,

"visibleRequestID": "string",

"requestStatus": "string", "requestDisplayStatus": "string", "linkedRequestId": 0,

"linkedAction": 0

}

],

"sentToCommissioner": { "requestId": 0, "isSentToCommissioner": "string",

"sentDate": "2024-04-09T15:57:02.503Z", "responseDate": "2024-04-09T15:57:02.503Z",

"approvalStatus": "string", "sentReason": "string", "section32Notice": "string", "subsectionCeased": "string", "section35Formal": "string", "section37Reports": "string", "recommendations": "string", "orders": "string", "paSection31": "string", "paSection33": "string", "paSection35": "string", "paCourtAction": "string"

},

"requestType": "string", "visibleRequestId": "string",

"feeWaiverEnd": "2024-04-09T15:57:02.503Z",

"expediteEndDate": "2024-04-09T15:57:02.503Z",

"lastPerfectedDate": "2024-04-09T15:57:02.503Z", "perfectedDate": "2024-04-09T15:57:02.503Z",

"originalReceivedDate": "2024-04-09T15:57:02.503Z", "shippingAddress1": "string",

"shippingAddress2": "string", "shippingCity": "string", "shippingState": "string", "shippingCountry": "string", "shippingZipCode": "string", "billingAddress1": "string", "billingAddress2": "string", "billingCity": "string", "billingState": "string", "billingCountry": "string", "billingZipCode": "string"

}

3.5.2 Output

API request example showing parameters and request body structure for updating requests.

API request parameters and example values for updating requests in a structured format.

3.6 Request/Create request

Create a request with the information that the user has specified.

3.6.1 Parameters

{

"requestType": "string", "description": "string",

"requestedDate": "2024-04-09T16:01:59.757Z", "receivedDate": "2024-04-09T16:01:59.757Z",

"officeCode": "string", "requesterFirstName": "string",

"requesterLastName": "string", "requesterEmail": "string", "requesterCountry": "string", "requesterZipCode": "string", "requestUserEmail": "string", "priority": "string", "deliveryMode": "string", "receiveMode": "string", "requesterCategory": "string", "address1": "string", "address2": "string",

"city": "string",

"state": "string", "homePhone": "string", "workPhone": "string", "requestCustomFields": [

{

"fieldName": "string", "dataType": "string", "value": "string"

}

],

"requestDescriptionAttachments": [

{

"contentType": "string", "fileData": "string", "fileName": "string",

"fileSize": "string"

}

],

"expediteRequested": true, "expediteDescription": "string",

"expediteStartDate": "2024-04-09T16:01:59.757Z", "expediteDescriptionAttachments": [

{

"contentType": "string", "fileData": "string", "fileName": "string", "fileSize": "string"

}

],

"feeWaiverRequested": true, "feeWaiverDescription": "string", "feeWaiverStart": "2024-04-09T16:01:59.757Z",

"feeWaiverDescriptionAttachments": [

{

"contentType": "string", "fileData": "string", "fileName": "string", "fileSize": "string"

}

],

"linkedRequests": [

{

"id": 0,

"visibleRequestID": "string", "requestStatus": "string", "requestDisplayStatus": "string", "linkedRequestId": 0,

"linkedAction": 0

}

],

"sentToCommissioner": { "requestId": 0, "isSentToCommissioner": "string",

"sentDate": "2024-04-09T16:01:59.757Z", "responseDate": "2024-04-09T16:01:59.757Z",

"approvalStatus": "string", "sentReason": "string", "section32Notice": "string", "subsectionCeased": "string", "section35Formal": "string", "section37Reports": "string", "recommendations": "string", "orders": "string", "paSection31": "string", "paSection33": "string", "paSection35": "string", "paCourtAction": "string"

}

}

3.6.2 Output

API request parameters and example values for updating requests in a structured format.

API request body example with parameters for updating requests and shipping details.

4 Requesters Methods

4.1 Requesters/get/requesterId/LocaleId

Retrieve the requester's information based on the ID and the requested language.

API request parameters for retrieving requester information using specific IDs.

4.1.1 Parameters

RequesterID: Requester ID localeID: Locale ID(language)

4.1.2 Output

{

"requesterTypeId": 0, requester type "prefix": 0, prefix type

"suffix": 0, sufix type

"lastName": "Default", requester last name "firstName": "Default", requester first name "middleName": "", requester middle name "jobTitle": "", requester tittle job

"workPhone1": "", requester phone "workPhone2": "", requester phone "homePhone": "", requester phone "mobile": "", requester phone

"fax": "", requester fax

"email": default@example.com, requester email "company": "", requester company

"login": "default", requester login "notes": null, requester notes

"loginActive": true, status of requester login active or not "isLoginActive": true, status of requester login active or not "deactiveReason": 0, reason of being deactivate the login "createdById": 0, requester created by

"modifiedById": 0, requester modified by "address1": "Default Address", requester address "address2": "", requester address

"city": "Default City", requester city "stateId": 0, requester state "countryId": 0, requester country "zipCode": "00000", requester zip code

"createdBy": "Default", requester created by name "modifiedBy": "Default", requester modified by name "delinquent": false, requester is delinquent "isDelinquent": false, requester is delinquent "syncFlag": true, requester is sync flag on "isSyncFlag": true, requester is sync flag on "createdDate": "0000-00-00T00:00:00.000",

"modifiedDate": "0000-00-00T00:00:00.000",

"requesterType": "Default", requester type "stateName": "Default State", requester state name

"countryName": "Default Country", requester country name "prefixName": null, requester prefix name

"sufixName": null, requester suffix name "localeId": 0, requester language

"updateRequestAddresses": 0, requester update address "updateAddresses": 0, requester update address "otherState": null, requester has another state "customFields": [], requester has custom fields

"id": 0 requester id

}

4.2 Requesters/create

Create a requester based on the information provided by the user.

4.2.1 Parameters

{

"id": 0,

"requesterTypeId": 0,

"prefix": 0,

"suffix": 0, "lastName": "string", "firstName": "string",

"middleName": "string", "jobTitle": "string",

"workPhone1": "string", "workPhone2": "string", "homePhone": "string", "mobile": "string",

"fax": "string",

"email": "string",

"company": "string",

"login": "string",

"notes": "string", "address1": "string", "address2": "string", "city": "string", "stateId": 0,

"countryId": 0, "zipCode": "string", "localeId": 0,

"createdDate": "2024-04-09T16:05:22.627Z", "modifiedDate": "2024-04-09T16:05:22.627Z",

"createdById": 0,

"modifiedById": 0, "stateName": "string", "otherState": "string", "customFields": [

{

"customFieldId": "string", "customFieldValue": "string", "customFieldType": 1

}

]

}

4.2.2 Output

After executing the method the requester is created, and an output appears as shown below:

API request body example for creating a requester with various parameters listed.

4.3 Requesters/Update

Update a requester based on the information provided by the user

4.3.1 Parameters

{

"id": 0,

"requesterTypeId": 0,

"prefix": 0,

"suffix": 0, "lastName": "string", "firstName": "string",

"middleName": "string", "jobTitle": "string", "workPhone1": "string", "workPhone2": "string", "homePhone": "string", "mobile": "string",

"fax": "string",

"email": "string",

"company": "string",

"login": "string",

"notes": "string", "address1": "string", "address2": "string", "city": "string", "stateId": 0,

"countryId": 0, "zipCode": "string", "localeId": 0,

"createdDate": "2024-04-09T16:05:55.310Z", "modifiedDate": "2024-04-09T16:05:55.310Z",

"createdById": 0,

"modifiedById": 0, "stateName": "string", "otherState": "string",

"customFields": [

{

"customFieldId": "string", "customFieldValue": "string", "customFieldType": 1

}

]

}

4.3.2 Output

After executing the requesters/update method, an output appears as shown in the following example:

API request body example for updating requester information with various fields.

5 Audit Methods

You can use the Audit Methods to query for User Actions and User Logins in the application.

5.1 User Actions

The UserActions method gets all user actions between two dates.

NOTE: You must have Audit permissions within the application to access this method.

To audit user actions using the API:

  1. Locate the UserActions section of the API, as shown below:

API parameters for user actions including date range and pagination settings.

  1. Enter the dates you’d like to audit User Actions between using the FromDate and ToDatefields.

NOTE: Dates follow UTC format and will take the hours and minutes as 00:00 unless specified. To fetch values for a specific date, either specify the time or use the following date. For example, to fetch values for 11/1/2023, use either 2023-11-01T23:59Z or 2023-11-02.

  1. The pageSize and pageNumber fields are required and configure the formatting for the returned results. pageSize indicates the number of items returned per page, and pageNumber dictates the current page number.

  2. Execute the method to view matching results, which display in the Response body field. There are options to (A) Copy this to your clipboard, or (B) Download the response body

API response showing fiscal year update from 2023 to 2024 with dates.

5.2 User Logins

You can use the UserLogins method to gets all user logins between two dates.

NOTE: Users utilizing Audit methods must have Audit permissions within the application.

To audit user logins using the API:

  1. Locate the UserActions section of the API, as shown below:

API parameters for user logins including date range and pagination settings.

  1. Enter the dates you’d like to audit User Logins between using the FromDate and ToDatefields.

NOTE: Dates follow UTC format and will take the hours and minutes as 00:00 unless specified. To fetch values for a specific date, either specify the time or use the following date. For example, to fetch values for 11/1/2023, use either 2023 -11-01T23:59Z or 2023-11-02.

  1. The pageSize and pageNumber fields are required and configure the formatting for the returned results. pageSize indicates the number of items returned per page, and pageNumber dictates the current page number.

  2. Execute the method to view matching results, which display in the Response body field. There are options to (A) Copy this to your clipboard, or (B) Download the response body.

Server response details showing user session information and login success status.

6 EmailService API

6.1 Mail/api/getmail

Search the email inbox and return the information requested in the query.

6.1.1 Parameters

{

"hasWords": [ "string"

],

"from": [ "string"

],

"to": [ "string"

],

"dateFrom": "2024-04-09T16:07:35.291Z", "dateTo": "2024-04-09T16:07:35.291Z",

"hasAttachment": true

}

6.1.2 Output

[

{

"id": "Random Text",

"from": "email",

"to": "email", "cc": null,

"bcc": null, "subject": "test",

"shortBody": "html code", "body": "html code",

"receivedDateTime": "2023-12-04T22:27:28", "hasAttachments": false,

"attachments": "plus.png"

},

API documentation for retrieving mail with parameters and example values displayed.

6.2 Mail/api/getmailcontent

Search the email inbox and return the requested information in the query in MIME format.

6.2.1 Parameters

{

"mailId": [

"string"

]

6.2.2 Output

[ā€œHTML MIME formatā€]

API endpoint for retrieving mail content with example request body format.

7 EntityRecognition API

7.1 Comprehend/api/detectentities

Perform a Named Entity Recognition (NER) process using AWS Comprehend according to the specified language and entity type for the requested text

7.1.1 Parameters

lang: Text language

EntityType: Name entities, PII or both

7.1.2 Output

{"Entities":[

{"BeginOffset":0, initial position "EndOffset":13 final position

,"Score":0.9925614 score from aws

,"Text":"test", text reviewed "Type":{"Value":"OTHER"}}] name entity

}

API parameters for Comprehend service including language and entity type fields.

7.2 Comprehend/api/detectentities

Perform a Named Entity Recognition (NER) process using Core NLP according to the specified language and entity type for the requested text.

7.2.1 Parameters

lang: Text language

7.2.2 Output

{

"sentences": [

{

"index": 0, "entitymentions": [

{

"docTokenBegin": 0, token start position "docTokenEnd": 1, token end position "tokenBegin": 0, token start position "tokenEnd": 1, token end position

"text": "Yesterday", text reviewed "characterOffsetBegin": 0, token start position "characterOffsetEnd": 9, token end position "ner": "DATE", name entity

"normalizedNER": "OFFSET P-1D", "nerConfidences": {

"DATE": -1 name entity confidence

}}

CoreNLP API parameters for getting entities, highlighting the 'lang' input field.

8 MediaRedactions API

8.1 Mediaredactions/apiex/mediafile/getsignedurl

Obtains a signed URL which will be used to download a media file.

8.1.1 Parameters

{

"uniqueId": "string", "folderId": 0,

"reviewLayerId": 0,

"pageId": 0,

"createdBy": 0,

"createdDate": "2024-04-09T16:11:28.623Z",

"declassInfo": "string", "reviewLayerName": "string", "tokenHash": "string", "downLoadedFilePath": "string"

}

Output: string text

API request example showing parameters and request body for media file retrieval.

8.2 Mediaredactions/apiex/mediafile/getsignedurl/sig nedToken

Retrieves the file with the signed URL obtained from the getSignedUrl method

8.2.1 Parameters

signedToken :URL obtained from the getSignedUrl method to get a file

8.2.2 Output

API endpoint for submitting redacted media file information with example request body.

9 Reports API

9.1 Report/api/isaccuratexml

Checks if the user's XML has a valid format for the annual report submission.

9.1.1 Parameters

XML file

9.1.2 Output

{

"accurate": true, if is accurate "differencesCount": 0, differences count "differences": null list of differences

}

A screenshot of a report  Description automatically generated