Ranch.Bot
Skip to reference

Import requests API

HTTP reference for import requests. Read authentication and access before using these operations. All examples use made-up data and placeholder credentials.

GET /v1/farm/{farm_id}/import-request

Get Import Requests

Current import requests HTTP operation. External credential scopes: read:records. Minimum farm role: READER. Pagination accepts integer skip and take; set both explicitly. An omitted value passes through to the data query. Collection property names differ by resource; use the response schema. Production rate limit: 100 requests per 15-minute window, per legacy key, otherwise per client IP. RateLimit headers report the current window; respect Retry-After on 429.

ParameterInRequiredSchema
farm_idpathYes{"type":"string","format":"uuid"}
skipqueryNo{"type":"integer"}
takequeryNo{"type":"integer"}
statusqueryNo{"type":"string","enum":["COMPLETED","FAILED","PENDING","PROCESSING"]}

Request example

bash example
curl --fail-with-body -X GET \
  'https://api.ranch.bot/v1/farm/<farm_id>/import-request' \
  -H "Authorization: Bearer $RANCHBOT_TOKEN"

Responses

StatusMeaningContent type
200Successapplication/json
400Request validation failed.application/json
401Missing/invalid authentication or insufficient farm role.application/json
403Missing required scope or credential type is disallowed.application/json
404Resource or active farm membership not found.application/json
429Rate limit exceeded. Retry after the indicated delay.application/json
500Unexpected server failure.application/json

200 response schema (application/json)

FieldTypePresenceConstraints
totalnumberRequired
import_requestsarrayRequired
import_requests[]objectRequired
import_requests[].statusstringRequiredenum: ["COMPLETED","FAILED","PENDING","PROCESSING"]
import_requests[].idstringRequired
import_requests[].created_atstringRequiredformat: "date-time"
import_requests[].updated_atstringRequiredformat: "date-time"
import_requests[].user_idstringRequired
import_requests[].farm_idstringRequired
import_requests[].completed_at (variant 1)nullRequired
import_requests[].completed_at (variant 2)stringRequiredformat: "date-time"
import_requests[].note (variant 1)nullRequired
import_requests[].note (variant 2)stringRequired
import_requests[].summary (variant 1)nullRequired
import_requests[].summary (variant 2)stringRequired
import_requests[].filesarrayRequired
import_requests[].files[]objectRequired
import_requests[].files[].idstringRequired
import_requests[].files[].created_atstringRequiredformat: "date-time"
import_requests[].files[].updated_atstringRequiredformat: "date-time"
import_requests[].files[].namestringRequired
import_requests[].files[].is_activebooleanRequired
import_requests[].files[].mime_typestringRequired
import_requests[].files[].sizenumberRequired
import_requests[].files[].urlstringRequired
json example
{
  "total": 1,
  "import_requests": []
}

POST /v1/farm/{farm_id}/import-request

Create Import Request

Current import requests HTTP operation. External credential scopes: write:records. Minimum farm role: EDITOR. Direct requests execute without an app confirmation screen. Production rate limit: 100 requests per 15-minute window, per legacy key, otherwise per client IP. RateLimit headers report the current window; respect Retry-After on 429. Uploads are stored for supervised review, not automatically loaded into farm records. Up to 10 files, 25 MB each; optional note is at most 2,000 characters.

ParameterInRequiredSchema
farm_idpathYes{"type":"string","format":"uuid"}

Request body (multipart/form-data)

FieldTypePresenceConstraints
notestringOptionalmaxLength: 2000
filesarrayRequiredminItems: 1; maxItems: 10
files[]stringRequiredformat: "binary"

Request example

bash example
curl --fail-with-body -X POST \
  'https://api.ranch.bot/v1/farm/<farm_id>/import-request' \
  -H "Authorization: Bearer $RANCHBOT_TOKEN" \
  -F 'files=@/path/to/example.pdf'

Responses

StatusMeaningContent type
201Successapplication/json
400Errorapplication/json
401Missing/invalid authentication or insufficient farm role.application/json
403Missing required scope or credential type is disallowed.application/json
404Resource or active farm membership not found.application/json
429Rate limit exceeded. Retry after the indicated delay.application/json
500Unexpected server failure.application/json

201 response schema (application/json)

FieldTypePresenceConstraints
import_requestobjectRequired
import_request.statusstringRequiredenum: ["COMPLETED","FAILED","PENDING","PROCESSING"]
import_request.idstringRequired
import_request.created_atstringRequiredformat: "date-time"
import_request.updated_atstringRequiredformat: "date-time"
import_request.user_idstringRequired
import_request.farm_idstringRequired
import_request.completed_at (variant 1)nullRequired
import_request.completed_at (variant 2)stringRequiredformat: "date-time"
import_request.note (variant 1)nullRequired
import_request.note (variant 2)stringRequired
import_request.summary (variant 1)nullRequired
import_request.summary (variant 2)stringRequired
import_request.filesarrayRequired
import_request.files[]objectRequired
import_request.files[].idstringRequired
import_request.files[].created_atstringRequiredformat: "date-time"
import_request.files[].updated_atstringRequiredformat: "date-time"
import_request.files[].namestringRequired
import_request.files[].is_activebooleanRequired
import_request.files[].mime_typestringRequired
import_request.files[].sizenumberRequired
import_request.files[].urlstringRequired
json example
{
  "import_request": {
    "status": "COMPLETED",
    "id": "11111111-1111-4111-8111-111111111111",
    "created_at": "2026-09-01T12:00:00.000Z",
    "updated_at": "2026-09-01T12:00:00.000Z",
    "user_id": "11111111-1111-4111-8111-111111111111",
    "farm_id": "11111111-1111-4111-8111-111111111111",
    "completed_at": null,
    "note": null,
    "summary": null,
    "files": []
  }
}

400 response schema (application/json)

FieldTypePresenceConstraints
(variant 1)objectRequired
(variant 1).errorsarrayRequired
(variant 1).errors[]objectRequired
(variant 1).errors[].messagestringRequired
(variant 1).datanullRequired
(variant 1).successbooleanRequired
(variant 2)objectRequired
(variant 2).successbooleanRequiredconst: false
(variant 2).errorsarrayRequired
(variant 2).errors[]objectRequired
(variant 2).errors[].codeintegerOptional
(variant 2).errors[].namestringOptional
(variant 2).errors[].messagestringRequired
(variant 2).datanullOptional
json example
{
  "success": false,
  "data": null,
  "errors": [
    {
      "message": "No files provided"
    }
  ]
}

GET /v1/farm/{farm_id}/import-request/{import_request_id}

Get Import Request

Current import requests HTTP operation. External credential scopes: read:records. Minimum farm role: READER. Production rate limit: 100 requests per 15-minute window, per legacy key, otherwise per client IP. RateLimit headers report the current window; respect Retry-After on 429.

ParameterInRequiredSchema
farm_idpathYes{"type":"string","format":"uuid"}
import_request_idpathYes{"type":"string","format":"uuid"}

Request example

bash example
curl --fail-with-body -X GET \
  'https://api.ranch.bot/v1/farm/<farm_id>/import-request/<import_request_id>' \
  -H "Authorization: Bearer $RANCHBOT_TOKEN"

Responses

StatusMeaningContent type
200Successapplication/json
400Request validation failed.application/json
401Missing/invalid authentication or insufficient farm role.application/json
403Missing required scope or credential type is disallowed.application/json
404Resource or active farm membership not found.application/json
429Rate limit exceeded. Retry after the indicated delay.application/json
500Unexpected server failure.application/json

200 response schema (application/json)

FieldTypePresenceConstraints
import_requestobjectRequired
import_request.statusstringRequiredenum: ["COMPLETED","FAILED","PENDING","PROCESSING"]
import_request.idstringRequired
import_request.created_atstringRequiredformat: "date-time"
import_request.updated_atstringRequiredformat: "date-time"
import_request.user_idstringRequired
import_request.farm_idstringRequired
import_request.completed_at (variant 1)nullRequired
import_request.completed_at (variant 2)stringRequiredformat: "date-time"
import_request.note (variant 1)nullRequired
import_request.note (variant 2)stringRequired
import_request.summary (variant 1)nullRequired
import_request.summary (variant 2)stringRequired
import_request.filesarrayRequired
import_request.files[]objectRequired
import_request.files[].idstringRequired
import_request.files[].created_atstringRequiredformat: "date-time"
import_request.files[].updated_atstringRequiredformat: "date-time"
import_request.files[].namestringRequired
import_request.files[].is_activebooleanRequired
import_request.files[].mime_typestringRequired
import_request.files[].sizenumberRequired
import_request.files[].urlstringRequired
json example
{
  "import_request": {
    "status": "COMPLETED",
    "id": "11111111-1111-4111-8111-111111111111",
    "created_at": "2026-09-01T12:00:00.000Z",
    "updated_at": "2026-09-01T12:00:00.000Z",
    "user_id": "11111111-1111-4111-8111-111111111111",
    "farm_id": "11111111-1111-4111-8111-111111111111",
    "completed_at": null,
    "note": null,
    "summary": null,
    "files": []
  }
}

Error body

Validation and authentication errors generally use this envelope. Rate-limit errors omit data; OAuth polling also has protocol-specific errors shown in its reference.

json example
{
  "success": false,
  "errors": [
    {
      "code": 400,
      "name": "ValidationError",
      "message": "Example validation failure"
    }
  ]
}