This describes the resources that make up the official REST API v1. If you have any problems or requests, please contact us.
All API access is over HTTPS, and accessed from https://ezvenue.app/api. All data is sent and received as JSON.
curl -i https://ezvenue.app/api
Blank fields are included as null
instead of being omitted.
All timestamps return in ISO 8601 format:
YYYY-MM-DDTHH:MM:SSZ
The API uses access_token
to authorize. Requests that requires authentication will return 403 Forbidden
.
curl -u "username:access_token" https://ezvenue.app/api
Passing a base 64 encoded username:access_token
through the request header.
curl -H "Authorization: Basic XXXXXX" https://ezvenue.app/api
Many API methods take optional parameters. For GET requests, any parameters not specified as a segment in the path can be passed as an HTTP query string parameter:
curl -i -H "Authorization: Basic XXXXXX" https://ezvenue.app/api/lookups?since=today
For POST
, PATCH
, PUT
, and DELETE
requests, parameters not included in the URL should be encoded as JSON with a Content-Type
of application/json
:
curl -i -H "Authorization: Basic XXXXXX" -d '{"ref":"12345","address":"Somewhere in the middle, TX 1234"}' https://ezvenue.app/api/lookups
Where possible, API v1 strives to use appropriate HTTP verbs for each action.
Verb | Description |
---|---|
GET |
Used for retrieving resources. |
POST |
Used for creating resources. |
PATCH |
Used for updating resources with partial JSON data. For instance, an Order resource has notes attribute. A PATCH request may accept one or more of the attributes to update the resource. PATCH is a relatively new and uncommon HTTP verb, so resource endpoints also accept POST requests. |
PUT |
Used for replacing resources or collections. |
DELETE |
Used for deleting resources. |
Requests that return multiple items will be paginated to 30 items by default. You can specify further pages with the ?page
parameter. For some resources, you can also set a custom page size up to 100 with the ?per_page
parameter. Note that for technical reasons not all endpoints respect the ?per_page
parameter.
curl 'https://ezvenue.app/api/lookups?page=2&per_page=100'
Note that page numbering is 1-based and that omitting the ?page
parameter will return the first page.
The Link header includes pagination information:
Link: <https://ezvenue.app/lookups?page=3&per_page=100>; rel="next",
<https://ezvenue.app/lookups?page=50&per_page=100>; rel="last"
The example includes a line break for readability.
This Link
response header contains one or more Hypermedia link relations, some of which may require expansion as URI templates.
The possible rel
values are:
Name | Description |
---|---|
next |
The link relation for the immediate next page of results. |
last |
The link relation for the last page of results. |
first |
The link relation for the first page of results. |
prev |
The link relation for the immediate previous page of results. |
For API requests using Basic Authentication, you can make up to 5000 requests per hour, per access_token
.
ALL requests are authenticated.
The returned HTTP headers of any API request show your current rate limit status:
curl -i https://ezvenue.app/lookups/:id
HTTP/1.2 200 OK
Date: Mon, 01 Jul 2019 17:27:06 GMT
Status: 200 OK
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 3200
X-RateLimit-Reset: 1562003273
Header Name | Description |
---|---|
X-RateLimit-Limit |
The maximum number of requests you're permitted to make per hour. |
X-RateLimit-Remaining |
The number of requests remaining in the current rate limit window. |
X-RateLimit-Reset |
The time at which the current rate limit window resets in UTC epoch seconds. |
If you need the time in a different format, any modern programming language can get the job done. For example, if you open up the console on your web browser, you can easily get the reset time as a JavaScript Date object.
new Date(1562003273 * 1000)
// => Mon Jul 01 2019 13:47:53 GMT-0400 (EDT)
If you exceed the rate limit, an error response returns:
HTTP/1.2 403 Forbidden
Date: Tue, 20 Aug 2019 14:50:41 GMT
Status: 403 Forbidden
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1377013266
{
"message": "API rate limit exceeded",
"documentation_url": "https://ezvenue.app/docs/developer#rate-limiting"
}
If you exceed your rate limit using Basic Authentication, you can likely fix the issue by caching API responses and using conditional requests.
All API requests MUST include a valid User-Agent
header. Requests with no User-Agent
header will be rejected. We request that you use your EZ Venue username, or the name of your application, for the User-Agent
header value. This allows us to contact you if there are problems.
Here's an example:
User-Agent: My-Awesome-App
cURL sends a valid User-Agent header by default. If you provide an invalid User-Agent header via cURL (or via an alternative client), you will receive a 403 Forbidden response:
HTTP/1.2 403 Forbidden
Date: Tue, 20 Aug 2019 14:50:41 GMT
Status: 403 Forbidden
{
"message": "Please make sure your request has a User-Agent header",
"documentation_url": "https://ezvenue.app/docs/developer#user-agent-required"
}
The lookup
resource.
List the available lookups of the client.
GET /lookups
Parameters
Name | Type | Description |
---|---|---|
sort |
string |
What to sort results by. Can be either created , updated . Default: created |
direction |
string |
The direction of the sort. Can be either asc or desc . Default: desc |
since |
string |
Only lookups updated at or after this time are returned. This is a timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ. |
Response
HTTP/1.2 200 OK
Link: <https://ezvenue.app/api/lookups?page=2>; rel="next",
<https://ezvenue.app/api/lookups?page=3>; rel="last"
[
{
"id": 3759,
"batch_id": 159,
"ref": "11990",
"result": 0,
"amount": 0,
"street_1": "916 Nelson Street",
"street_2": null,
"city": "Elrama",
"state": "IA",
"zip": "32647",
"lat": 40.2520683,
"lng": -79.9249957,
"notes": null,
"completed_at": "2019-06-13T16:58:04+0800",
"created_at": "2019-06-14T00:57:10+0800",
"formatted_address": "916 Nelson Street, Elrama, IA 32647",
"results": []
},
{
"id": 3758,
"batch_id": 159,
"ref": "11988",
"result": 1,
"amount": 0,
"street_1": "139 Miami Court",
"street_2": null,
"city": "Allamuchy",
"state": "UT",
"zip": "46560",
"lat": 25.7746226,
"lng": -80.1949355,
"notes": null,
"completed_at": "2019-06-13T16:58:04+0800",
"created_at": "2019-06-14T00:57:10+0800",
"formatted_address": "139 Miami Court, Allamuchy, UT 46560",
"results": [
{
"id": 1357,
"venue_id": 17233,
"area_id": 1798,
"venue_county": "Miami-Dade",
"venue_precinct": "Small Claims",
"venue_efile": 0,
"created_at": "2019-06-14T00:58:04+0800"
}
]
}
...
]
Get a single lookup by if you secured an id
.
GET /lookups/:id
Response
Status: 200 OK
{
"id": 3738,
"batch_id": 159,
"ref": "11965",
"result": 1,
"amount": 0,
"street_1": "9617 E Veum Plains Squares",
"street_2": null,
"city": "South Nolanburgh",
"state": "TX",
"zip": "64039",
"lat": 31.9685988,
"lng": -99.9018131,
"notes": null,
"completed_at": "2019-06-13T16:57:11+0800",
"created_at": "2019-06-14T00:57:10+0800",
"formatted_address": "9617 E Veum Plains Squares, South Nolanburgh, TX 64039",
"results": [
{
"id": 1352,
"venue_id": 2642,
"area_id": 2025,
"venue_county": "Runnels",
"venue_precinct": "2",
"venue_efile": 0,
"created_at": "2019-06-14T00:57:11+0800"
}
]
}
Create a lookup through a POST
request with the required fields.
The address
parameter can either be an object
or a string
. For the object
type, street_1
, city
, state
and zip
fields are required. You can provide the latitude
and the longitude
value to the address
parameter if available. For string
type, pass the formatted address.
POST /lookups
Parameters
Name | Type | Description |
---|---|---|
ref |
string |
Client custom reference number. |
address |
object string |
The address to search for. |
amount |
int |
The suit amount for the lookup. |
mapper_key |
string |
The key used to access the associated court venue mappings. |
Response
Status: 201 Created
Location: https://ezvenue.app/api/lookups/3739
{
"id": 3739,
"batch_id": null,
"ref": "11966",
"result": 0,
"amount": 0,
"street_1": "7586 W Howe Spur Alley",
"street_2": null,
"city": "New Aglae",
"state": "DE",
"zip": "27855",
"lat": 36.4306716,
"lng": -77.067959,
"notes": null,
"completed_at": "2019-06-13T16:57:18+0800",
"created_at": "2019-06-14T00:57:10+0800",
"formatted_address": "7586 W Howe Spur Alley, New Aglae, DE 27855",
"results": []
}
Lookups created by batch are subject to Address Cleansing. To skip this step, you can supply the latitude
and longitude
for each address row.
Batch lookup requires the form data content type header:
Content-Type: multipart/form-data
The API supports comma/pipe delimited files (.csv
), .xlsx
or similar data files.
You can also supply the mapping
parameter to map the columns. The API will try to detect the correct mappings if not supplied.
POST /lookups/batches
Parameters
Name | Type | Description |
---|---|---|
mapping |
object |
The mapping object |
file |
@file |
The uploaded file. |
mapper_key |
string |
The key used to access the associated court venue mappings. |
Response
Status: 201 Created
Location: https://ezvenue.app/api/lookups/batches/161
{
"id": 161,
"processed": 2,
"exceptions": [],
"filename": "BATCH_bg9ylFQ777GYLdnk.csv",
"mapping": "",
"completed_at": null,
"created_at": "2019-06-15T16:23:28+0800"
}
You can retrieve a single batch that was previously created.
GET /lookups/batches/:id
Response
Status: 200 OK
{
"id": 159,
"token": "b83d308c7b23c8b8bd407892d3d230b67cbd68ffaa9e5bccd9b0379b71728d9a",
"filename": "REQUEST_20190614_zPo3m02bFPA8ZSYw.csv",
"completed_at": "2019-06-13T16:58:04+0800",
"created_at": "2019-06-14T00:57:10+0800",
"actor_user": {
"id": 1,
"username": "lodev09",
"created_at": "2019-01-29T01:11:56+0800",
"name": "Jovanni Lo",
"avatar_url": "https://www.gravatar.com/avatar/b6b307d6680bb64cb6f1fd99a9fe43fc?s=48&d=identicon&r=g"
},
"mapping": null
}
List the items that were created for a batch.
GET /lookups/batches/:id/items
Response
Status: 200 OK
[
{
"id": 3737,
"batch_id": 159,
"ref": "11964",
"result": 0,
"amount": 0,
"street_1": "742 Varet Street",
"street_2": null,
"city": "Garnet",
"state": "KS",
"zip": "40373",
"lat": 40.703372,
"lng": -73.937648,
"notes": null,
"completed_at": "2019-06-13T16:57:11+0800",
"created_at": "2019-06-14T00:57:10+0800",
"formatted_address": "742 Varet Street, Garnet, KS 40373",
"results": []
},
{
"id": 3738,
"batch_id": 159,
"ref": "11965",
"result": 1,
"amount": 0,
"street_1": "9617 E Veum Plains Squares",
"street_2": null,
"city": "South Nolanburgh",
"state": "TX",
"zip": "64039",
"lat": 31.9685988,
"lng": -99.9018131,
"notes": null,
"completed_at": "2019-06-13T16:57:11+0800",
"created_at": "2019-06-14T00:57:10+0800",
"formatted_address": "9617 E Veum Plains Squares, South Nolanburgh, TX 64039",
"results": [
{
"id": 1352,
"venue_id": 2642,
"area_id": 2025,
"venue_county": "Runnels",
"venue_precinct": "2",
"venue_efile": 0,
"created_at": "2019-06-14T00:57:11+0800"
}
]
}
...
]
EZ Venue API v1 is also available in PHP. You can download it here.