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