Skip to content

Bulk Export API

API endpoints for creating and managing bulk location exports.

Create Export Request

Endpoint

http
POST /locations/exports

Creates a new location data export request.

Request

http
POST /locations/exports
Content-Type: application/json
Authorization: Bearer {access_token}

Request Body

json
{
  "format": "json",
  "modifiedSince": "2025-06-01T00:00:00Z"
}

Request Fields

FieldTypeRequiredDescription
formatStringYesOutput format: json or csv
modifiedSinceISO 8601 DateTimeNoOnly export locations modified after this time (UTC with Z suffix)

Response

Success Response (202 Accepted)

json
{
  "requestId": "7890abcd-ef12-3456-7890-abcdef123456",
  "status": "PENDING",
  "message": "Export request queued for processing"
}

Response Fields

FieldTypeDescription
requestIdUUIDUnique identifier for this export request
statusStringExport status (always PENDING for new requests)
messageStringHuman-readable status message

Status Codes

  • 202 Accepted - Export request queued successfully
  • 400 Bad Request - Invalid request parameters
  • 401 Unauthorized - Authentication failed
  • 429 Too Many Requests - Rate limit exceeded

Error Response

json
{
  "error": {
    "code": "INVALID_FORMAT",
    "message": "Unsupported export format. Supported formats: json, csv"
  }
}

Error Codes

  • INVALID_FORMAT - Unsupported export format specified
  • INVALID_DATE_RANGE - Invalid modifiedSince parameter
  • EXPORT_SIZE_EXCEEDED - Requested export would exceed size limits

Get Export Status

Endpoint

http
GET /locations/exports/{id}

Retrieves the current status of an export request.

Request

http
GET /locations/exports/{id}
Authorization: Bearer {access_token}

Path Parameters

  • id - UUID of the export request

Response

Success Response (200 OK)

json
{
  "requestId": "7890abcd-ef12-3456-7890-abcdef123456",
  "status": "COMPLETED",
  "exportUrl": "https://downloads.operator.com/exports/7890abcd.json",
  "downloadExpiresAt": "2025-06-09T00:00:00Z",
  "exportTimestamp": "2025-06-08T15:30:00Z",
  "totalCount": 45678
}

Response Fields

FieldTypeWhen PresentDescription
requestIdUUIDAlwaysOriginal request ID
statusStringAlwaysCurrent export status
exportUrlURLIf COMPLETEDSigned URL for download
downloadExpiresAtISO 8601 DateTimeIf COMPLETEDWhen URL expires (UTC with Z suffix)
exportTimestampISO 8601 DateTimeIf COMPLETEDWhen export was generated (UTC with Z suffix)
totalCountNumberIf COMPLETEDNumber of locations exported

Status Codes

  • 200 OK - Export status retrieved successfully
  • 401 Unauthorized - Authentication failed
  • 404 Not Found - Export request not found

Download Export

Request

http
GET {exportUrl}

The export URL provided in the notification is typically a signed URL that:

  • Expires after a set time (e.g., 24 hours)
  • Requires no additional authentication
  • Returns the file directly

Response Headers

http
Content-Type: application/json
Content-Disposition: attachment; filename="locations-export-2025-06-08.json"
Content-Length: 123456789

Export Events

Network operators send notifications to RSP-provided webhook endpoints when exports complete or fail.

Export Events Endpoint

RSPs must implement this endpoint to receive export completion notifications:

http
POST {rsp_webhook_url}/locations/exports/events

Headers

HeaderDescriptionRequired
Content-TypeMust be application/jsonYes

Request Body

For successful exports:

json
{
  "requestId": "7890abcd-ef12-3456-7890-abcdef123456",
  "status": "COMPLETED",
  "exportUrl": "https://downloads.operator.com/exports/7890abcd.json",
  "downloadExpiresAt": "2025-06-09T00:00:00Z",
  "exportTimestamp": "2025-06-08T15:30:00Z",
  "totalCount": 45678
}

For failed exports:

json
{
  "requestId": "7890abcd-ef12-3456-7890-abcdef123456",
  "status": "FAILED",
  "error": {
    "code": "EXPORT_GENERATION_FAILED",
    "message": "Unable to generate export due to system error"
  }
}

Response Fields

FieldTypeWhen PresentDescription
requestIdUUIDAlwaysOriginal request ID
statusStringAlwaysCOMPLETED or FAILED
exportUrlURLIf COMPLETEDSigned URL for download
downloadExpiresAtISO 8601 DateTimeIf COMPLETEDWhen URL expires (UTC with Z suffix)
exportTimestampISO 8601 DateTimeIf COMPLETEDWhen export was generated (UTC with Z suffix)
totalCountNumberIf COMPLETEDNumber of locations exported
errorObjectIf FAILEDError details with code and message

Expected Responses

StatusMeaningNetwork Operator Action
200 OKNotification processed successfullyMark as delivered
202 AcceptedNotification queued for processingMark as delivered
400 Bad RequestInvalid notification dataDo not retry
401 UnauthorizedAuthentication failedCheck credentials, retry
429 Too Many RequestsRate limit exceededRetry with backoff
500 Internal Server ErrorRSP system errorRetry with backoff

Request Examples

Full Export

http
POST /locations/exports
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...

{
  "format": "json"
}

Response:

json
{
  "requestId": "012abc34-5678-90de-f123-4567890abcde",
  "status": "PENDING",
  "message": "Export request queued for processing"
}

Incremental Export

http
POST /locations/exports
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...

{
  "format": "csv",
  "modifiedSince": "2025-06-01T00:00:00Z"
}

Response:

json
{
  "requestId": "345def67-8901-23ab-cdef-4567890abcde",
  "status": "PENDING",
  "message": "Export request queued for processing"
}

Export Notification Example

http
POST https://rsp.example.com/webhooks/locations/exports/events
Content-Type: application/json

{
  "requestId": "012abc34-5678-90de-f123-4567890abcde",
  "status": "COMPLETED",
  "exportUrl": "https://downloads.networkoperator.com/exports/012abc34.json",
  "downloadExpiresAt": "2025-06-10T00:00:00Z",
  "exportTimestamp": "2025-06-09T15:30:00Z",
  "totalCount": 125432
}

Open Access Forum API Documentation