Skip to content

Read Dispute evidence packet

GET
/v1/object-types/hospitality.dispute_evidence_packet/objects/{id}
curl --request GET \
--url https://api.aerandil.com/v1/object-types/hospitality.dispute_evidence_packet/objects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'Authorization: Bearer <token>'

Read an existing instance.

The evidence the kernel assembled to counter one chargeback: the text fields it would send, the documents it would attach (each pinned to the source object’s id and version), and the evidence the argument wanted but the house could not supply. Built from what the kernel already holds — folio, frozen cancellation terms, stay record, 3DS outcome — so nobody at the property gathers or uploads anything. A person counters or accepts; the one submission the kernel makes itself is a packet with no gaps still unsent 48 hours before the deadline (move 13, 2026-10-22: the night audit’s sweep, submitted_by = system).

id
required
string format: uuid

Object id (UUID v7, server-generated at create time).

branch
string format: uuid

Read through an open branch’s copy-on-first-write overlay view instead of the canonical (main) plane. Does not compose with as_of (422). The branch must exist under the caller’s tenant.

Object found.

Media typeapplication/json
object
created_at
required
string format: date-time
id
required
string format: uuid
object_type
required
Allowed value: hospitality.dispute_evidence_packet
properties
required
object
assembled_at
required
Assembled at
string format: date-time
byte_count
The bytes the packet's documents came to when they were rendered for the processor (4.5 MB at most in all)
integer
documents
required
Dispute evidence packet documents

The files the packet attaches, one per evidence type, each naming the object and version it is rendered from

Array<object>
object
evidence_type
required
string
Allowed values: receipt service_documentation cancellation_policy customer_signature duplicate_charge_documentation customer_communication uncategorized_file
source_id
required
string
source_object_type
required
string
source_version
required
integer
sources
Array<object>
object
source_id
required
string
source_object_type
required
string
source_version
required
integer
enhanced_evidence
Dispute evidence packet enhanced evidence

Visa Compelling Evidence 3.0, as the processor takes it (Stripe evidence[enhanced_evidence][visa_compelling_evidence_3]): the disputed booking’s identifiers and two prior undisputed charges on the same card, 120 to 364 days before it, each matching the disputed one on two of the purchase IP, the device and the guest’s email (at least one of them the IP or the device). Each prior names the payment and version it was read from, checked again before the packet is sent. Absent when the case is not Visa card-absent fraud, when the processor’s own prior transactions already qualify, or when two were not found (a gap says how many were).

object
customer_device_id
string
customer_email_address
string
customer_purchase_ip
string
merchandise_or_services
required
string
priors
required
Array<object>
object
captured_at
required
string format: date-time
charge
required
string
customer_device_id
string
customer_email_address
string
customer_purchase_ip
string
matches
required
integer
payment_id
required
string
payment_version
required
integer
product_description
required
string
product_description
required
string
fields
The text evidence, keyed by the processor's evidence name (`customer_name`, `service_date`, `cancellation_policy_disclosure`, …). Generated from the objects, never written freehand, so every sentence can be checked against the packet's own sources.
object
key
additional properties
any
files
Dispute evidence packet files

The files uploaded for this packet, one per evidence type, as the processor’s file ids — recorded when the packet is marked sending, before the dispute update

Array<object>
object
evidence_type
required
string
Allowed values: receipt service_documentation cancellation_policy customer_signature duplicate_charge_documentation customer_communication uncategorized_file
file_id
required
string
gaps
required
Dispute evidence packet gaps

Evidence the argument wanted and the kernel could not supply — shown to the desk before it counters, so a weak case is visible as one

Array<object>
object
evidence
required
string
why
required
string
gaps_acknowledged
Whether the house submitted knowing the packet's gaps — required when there are any
boolean
gaps_acknowledged_by
Who acknowledged the gaps and submitted (the principal)
string
id
required
Packet id
string
packet_version
required
1 for the first assembly on a case; each re-assembly bumps it and supersedes the unsent packet before it
integer
page_count
The pages the packet's documents came to when they were rendered for the processor — the networks' limit is counted on these (fewer than 50 in all; 19 for Mastercard)
integer
refusal
The processor's words when it refused this packet — a refused packet is not sent again; assembling another is the retry
string
sending_at
When the packet's dispute update was sent to the processor (its idempotency key is remembered for 24 hours from then)
string format: date-time
status
required
Status
string
Allowed values: draft staged submitted accepted superseded sending superseded_by_escalation
submitted_at
When the processor took the packet to the issuer
string format: date-time
submitted_by
Who sent the packet to the processor: the principal, or `system` when the night audit's sweep submitted a gap-free packet 48 hours before the deadline
string
template
required
Which argument the packet makes — chosen from the dispute reason and what happened to the booking. Recorded so a later change to the templates cannot rewrite what this packet said.
string
Allowed values: fraud no_show cancellation duplicate service
provenance

Per-property source attribution and pins. An entry under properties means the property’s current value came from that source (on the source’s own clock, source_updated_at); an entry under pins is a human override protecting the property from sourced writes.

object
pins
object
key
additional properties
object
pinned_at
string format: date-time
pinned_by
object
reason
required
string
properties
object
key
additional properties
object
external_id
string
recorded_at
required
string format: date-time
source
required
string
source_updated_at
string format: date-time
stream
string
scope
required
One of: discriminator: level
object
level
required
string
Allowed value: tenant
Allowed values: tenant
tenant_id
required
string format: uuid
updated_at
required
string format: date-time
version
required
integer
>= 1
Example
{
"object_type": "hospitality.dispute_evidence_packet",
"properties": {
"documents": [
{
"evidence_type": "receipt"
}
],
"files": [
{
"evidence_type": "receipt"
}
],
"status": "draft",
"template": "fraud"
},
"scope": {
"level": "tenant"
}
}
ETag
string
/^"\d+"$/

Quoted strong validator (RFC 7232 §2.3) carrying the object’s monotonic version. Informational on the read path — object mutation goes through typed actions on /v1/actions/{action}/apply, not raw CRUD.

No object with that id (or soft-deleted).