Objects¶
An object is a single file or asset within a dataset. Objects are the atomic unit of content in IPTO -- every document, image, audio file, or video you upload becomes an object.
What is an object?¶
When you add a file to a dataset, IPTO creates an object record that tracks the file's metadata, processing status, and review state. The original file is stored as an immutable blob, and the platform derives searchable content from it through a processing pipeline.
Each object belongs to exactly one dataset and one tenant.
Upload flow¶
Uploading an object to IPTO is a three-step process designed for reliability and security. The API never receives your file directly -- instead, you upload to a short-lived presigned URL.
Step 1: Initiate the upload¶
Send a request to the API with the file metadata (filename, MIME type, size, and checksum). The API returns an object_id and a presigned upload_url.
Step 2: Upload the file¶
Use the presigned URL to upload the file directly to storage. This keeps large files off the API server and allows resumable transfers.
Step 3: Confirm the upload¶
Once the upload completes, notify the API to confirm. The object is recorded with a review state of staged and awaits review before any further processing.
sequenceDiagram
participant Client
participant API
participant Storage
Client->>API: POST /v1/uploads (file metadata)
API-->>Client: {object_id, upload_url}
Client->>Storage: PUT file to upload_url
Storage-->>Client: 200 OK
Client->>API: POST /v1/uploads/{upload_id}/complete
API-->>Client: {object_id, review_state: "staged"} Note
The upload URL has a short time-to-live. If it expires before you finish uploading, initiate a new upload session.
Object review lifecycle¶
All newly uploaded objects begin in the staged review state. Before an object can be processed and indexed, it must pass through a review step.
stateDiagram-v2
[*] --> staged
staged --> under_review
under_review --> approved : Approved (proceeds to processing)
under_review --> rejected : Rejected
staged --> expired : After 72 hours | Review state | Description |
|---|---|
staged | The object has been uploaded and is awaiting review. It is not searchable. |
under_review | An administrator is reviewing the object. |
approved | The object has been approved and will proceed through the processing pipeline to become searchable. |
rejected | The object has been rejected. It will not be processed or indexed. |
expired | The object was not reviewed within the review window (72 hours) and has automatically expired. |
Warning
Only objects with a review state of approved will be processed and made searchable. Rejected and expired objects are never indexed.
Presigned URLs¶
IPTO uses presigned URLs for both uploading and downloading files. A presigned URL is a time-limited, pre-authorized URL that grants temporary access to a specific storage operation without exposing long-lived credentials.
Upload URLs are generated when you initiate an upload. They authorize a PUT operation to store the file.
Download URLs are generated when a buyer requests access to an original asset after a retrieval event. They authorize a GET operation to fetch the file.
URL expiry
Both upload and download presigned URLs expire after 15 minutes. Always use the URL promptly after receiving it. If a URL expires, request a new one through the appropriate API endpoint.
Object fields reference¶
The table below summarizes the key fields on an object resource.
| Field | Type | Description |
|---|---|---|
object_id | string | Unique identifier for the object (e.g., obj_...). |
tenant_id | string | The tenant that owns this object. |
dataset_id | string | The dataset this object belongs to. |
original_filename | string | The original name of the uploaded file. |
mime_type | string | The MIME type of the file (e.g., application/pdf). |
size_bytes | integer | The size of the file in bytes. |
checksum_sha256 | string | SHA-256 checksum of the file contents for integrity verification. |
status | string | Current processing status of the object. |
review_state | string | Current review state: staged, under_review, approved, rejected, or expired. |
uploaded_at | timestamp | When the object was uploaded. |
FAQ¶
What file types can I upload?
IPTO supports a wide range of file types including PDFs, Word documents, plain text, images (JPEG, PNG, TIFF), audio files, and video files. The supported types depend on the source modality of the dataset. Check the API reference for the full list of accepted MIME types.
What happens if my upload is interrupted?
If the upload to the presigned URL fails or is interrupted, the object remains in a pending state. You can initiate a new upload session for the same file. The incomplete upload will not consume storage or affect your dataset.
Why does my object need to be reviewed before it becomes searchable?
The review step ensures that all content entering the marketplace meets quality and policy standards. This protects both the integrity of search results and the interests of buyers who rely on the data. Objects that bypass review are never indexed.
What happens when a staged object expires?
If an object is not reviewed within 72 hours of upload, it automatically transitions to the expired state. Expired objects are not processed or indexed. You can upload the file again to create a new object and restart the review process.
Can I download an object I uploaded?
Yes. As the owner of the dataset, you can generate a download URL for any object in your dataset at any time, regardless of its review or processing state. Download URLs for buyers are generated only after a retrieval event and are subject to billing.