External services · rule
package.standard_candidate
Provider field looks like a standard type the package doesn't use.
Area 11, External services; declinable; the next step is usually the agent's.
This flags, in a provider package's public object, a field the provider sends in its own shape that looks like a standard type the package doesn't use ("Mapping imported types to standard types"). A whole number named like a time (
created,expires,paid_at) may be anInstantsent as seconds; one named like an amount (amount,amount_refunded,total_amount) beside a currency,Moneyin minor units; a latitude beside a longitude, aPoint. A field that says how it is sent (wire:,wire_parts:,decode:) is never one, and an object that is a standard type whole istype.standard_existsinstead. It is declinable: a field that means something else keeps its type with a reason on the field.
An imported description often says only integer, so the importer leaves
the field as the provider types it and the error asks for the
documentation to be checked:
/// A parcel delivered.public type Delivery = Object { id: Text delivered_at: Int}
error: `Delivery.delivered_at` may be an `Instant` sent as seconds --> shared/providers/acme_couriers/v1/types/delivery.jadpo:4:5 |4 | delivered_at: Int | ^^^^^^^^^^^^ a whole number named like a time reason: `delivered_at` is a whole number named like a time, which providers usually send as seconds since 1970. A package's public types use the standard types, so an app reads an `Instant` rather than a number to convert, and the package decodes it at the edge. next: Check the provider's documentation, then make it `delivered_at: Instant { wire: Wire.unix_seconds }`, or `Wire.unix_milliseconds` for milliseconds, or write `decline package.standard_candidate: "<why>"` above it if this is deliberate (agent) rule: package.standard_candidate help: https://jadpo.dev/docs/errors/package.standard_candidatecheck failed: 1 error, 4 files
Swapping it reads the provider's number as the Instant it is; a field
that really is a number keeps its type with a reason, which jadpo declines list shows:
/// A parcel delivered.public type Delivery = Object { id: Text delivered_at: Instant { wire: Wire.unix_seconds } decline package.standard_candidate: "The courier numbers its collection slots 1 to 6; this is that number" slot_time: Int}
Markdown for agents: /docs/errors/package.standard_candidate.md.Built from Jadpo main at a707efb.