# Readiness

The publish checklist of a guide.

Group: Objects.

## Fields

- `productId` (string, required): The guide's id.
- `name` (string, required): The guide's title.
- `status` (string, required): draft, published or archived. One of `draft`, `published`, `archived`.
- `canPublish` (boolean, required): true when no publish gate is open.
- `blocking` (array of PublishGate, required): The publish gates that are open: the same check publishing enforces.
  Fields of PublishGate: https://developers.sceniq.earth/fields/publish-gate.md
- `warnings` (array of objects, required): Checks that do not block a publish but deserve a look.
  - `code` (string, required): A stable code for the warning (see the readiness guide for the list).
  - `message` (string, required): What it means, in plain words.
- `checks` (object, required): The rows behind each warning and gate.
  - `staleFacts` (array of StaleFact, required): Dated facts past their dates.
    Fields of StaleFact: https://developers.sceniq.earth/fields/stale-fact.md
  - `reviewNotes` (array of objects, required): Every reviewNotes entry in the guide.
    - `kind` (string, required): The kind of row. One of `spot`, `place`, `route`, `photo`.
    - `id` (string, required): The row's id.
    - `name` (string, required): The row's name.
    - `note` (string, required): The review note.
  - `spotsWithoutSources` (number, required): Live spots without any source.
  - `links` (object, required): Link health (get_link_report has every link).
    - `total` (number, required): Links buyers can open.
    - `flagged` (array of objects, required): Links that look dead, parked or redirected.
      - `url` (string, required): The link.
      - `state` (string, required): Its state (broken, suspicious, tls, redirected).
      - `reason` (string or null, required): Why, in words.
      - `finalUrl` (string or null, required): Where a redirect ends.
      - `usedBy` (array of objects, required): Where the link is used.
        - `kind` (string, required): The kind of row.
        - `name` (string, required): The row's name.
        - `field` (string, required): The field that holds the link.
    - `unverifiable` (number, required): Links on sites that turn scripts away.
    - `unchecked` (number, required): Links not checked yet.
  - `photos` (object, required): Photo checks.
    - `farFromPin` (array of objects, required): Photos with a precise location more than 2 km from the pin.
      - `kind` (string, required): Always photo. One of `spot`, `place`, `route`, `area`, `photo`.
      - `id` (string, required): The photo's id.
      - `name` (string, required): The photo's caption or file.
      - `spotId` (string, required): The spot the photo belongs to.
      - `spotTitle` (string, required): The spot's title.
      - `detail` (string, required): What looks wrong.
    - `judgement` (array of objects, required): Photos whose location needs the creator's judgement.
      - `kind` (string, required): Always photo. One of `spot`, `place`, `route`, `area`, `photo`.
      - `id` (string, required): The photo's id.
      - `name` (string, required): The photo's caption or file.
      - `spotId` (string, required): The spot the photo belongs to.
      - `spotTitle` (string, required): The spot's title.
      - `detail` (string, required): What looks wrong.
    - `beforeChange` (array of objects, required): Photos captured before the spot's siteChange.
      - `kind` (string, required): Always photo. One of `spot`, `place`, `route`, `area`, `photo`.
      - `id` (string, required): The photo's id.
      - `name` (string, required): The photo's caption or file.
      - `spotId` (string, required): The spot the photo belongs to.
      - `spotTitle` (string, required): The spot's title.
      - `detail` (string, required): What looks wrong.
    - `nearDuplicates` (array of objects, required): Photos that look like another photo of the guide.
      - `kind` (string, required): Always photo. One of `spot`, `place`, `route`, `area`, `photo`.
      - `id` (string, required): The photo's id.
      - `name` (string, required): The photo's caption or file.
      - `spotId` (string, required): The spot the photo belongs to.
      - `spotTitle` (string, required): The spot's title.
      - `detail` (string, required): What looks wrong.
  - `places` (object, required): Place checks.
    - `farFromSpots` (array of objects, required): Places far from the spots they serve.
      - `kind` (string, required): The kind of row. One of `spot`, `place`, `route`, `area`, `photo`.
      - `id` (string, required): The row's id.
      - `name` (string, required): The row's name.
      - `detail` (string, required): What looks wrong.
    - `zoneDiffers` (array of objects, required): Places in another time zone than their spot.
      - `kind` (string, required): The kind of row. One of `spot`, `place`, `route`, `area`, `photo`.
      - `id` (string, required): The row's id.
      - `name` (string, required): The row's name.
      - `detail` (string, required): What looks wrong.
    - `distanceTooShort` (array of objects, required): Stated distances shorter than the straight line.
      - `kind` (string, required): The kind of row. One of `spot`, `place`, `route`, `area`, `photo`.
      - `id` (string, required): The row's id.
      - `name` (string, required): The row's name.
      - `detail` (string, required): What looks wrong.
    - `searchLinks` (array of objects, required): Map links that are a text search (they can open a namesake).
      - `kind` (string, required): The kind of row. One of `spot`, `place`, `route`, `area`, `photo`.
      - `id` (string, required): The row's id.
      - `name` (string, required): The row's name.
      - `detail` (string, required): What looks wrong.
  - `text` (object, required): Text checks.
    - `pastDates` (array of objects, required): Dates in the text that have passed.
      - `kind` (string, required): The kind of row. One of `spot`, `place`, `route`, `area`, `photo`.
      - `id` (string, required): The row's id.
      - `name` (string, required): The row's name.
      - `field` (string, required): The field the text is in.
      - `detail` (string, required): What looks wrong.
    - `monthMismatch` (array of objects, required): Best months in the text missing from a month property.
      - `kind` (string, required): The kind of row. One of `spot`, `place`, `route`, `area`, `photo`.
      - `id` (string, required): The row's id.
      - `name` (string, required): The row's name.
      - `field` (string, required): The field the text is in.
      - `detail` (string, required): What looks wrong.
    - `directions` (array of objects, required): Directions that disagree with the pins.
      - `kind` (string, required): The kind of row. One of `spot`, `place`, `route`, `area`, `photo`.
      - `id` (string, required): The row's id.
      - `name` (string, required): The row's name.
      - `field` (string, required): The field the text is in.
      - `detail` (string, required): What looks wrong.
  - `light` (array of objects, required): Best light outside the opening hours.
    - `kind` (string, required): The kind of row. One of `spot`, `place`, `route`, `area`, `photo`.
    - `id` (string, required): The row's id.
    - `name` (string, required): The row's name.
    - `field` (string, required): The field the text is in.
    - `detail` (string, required): What looks wrong.
  - `pins` (array of objects, required): Extra pins far from their spot.
    - `kind` (string, required): The kind of row. One of `spot`, `place`, `route`, `area`, `photo`.
    - `id` (string, required): The row's id.
    - `name` (string, required): The row's name.
    - `field` (string, required): The field the text is in.
    - `detail` (string, required): What looks wrong.
  - `agreementCurrent` (boolean, required): Whether the creator accepted the current agreement.
  - `spotCount` (number, required): Live spots.
  - `archivedSpotCount` (number, required): Archived spots.
  - `missingCoordinates` (array of objects, required): Live spots without a pin.
    - `spotId` (string, required): The spot's id.
    - `title` (string, required): The spot's title.
  - `coordinateOutliers` (array of objects, required): Spots unusually far from the others.
    - `spotId` (string, required): The spot's id.
    - `title` (string, required): The spot's title.
    - `distanceKm` (number, required): Distance from the guide's center in kilometers.
  - `outlierThresholdKm` (number, required): The distance above which a spot counts as an outlier.
  - `outsideRegion` (array of objects, required): Spots outside the region's bbox.
    - `spotId` (string, required): The spot's id.
    - `title` (string, required): The spot's title.
  - `spotsWithoutPhotos` (array of objects, required): Live spots with photos on but none uploaded.
    - `spotId` (string, required): The spot's id.
    - `title` (string, required): The spot's title.
  - `spotsWithoutText` (array of objects, required): Spots without a short or a long description.
    - `spotId` (string, required): The spot's id.
    - `title` (string, required): The spot's title.
  - `photoCount` (number, required): Photos in the guide.
  - `photosWithoutCredit` (number, required): Photos without a credit.
  - `price` (object or null, required): The active price.
    - `amountMinor` (number, required): The price in minor units (2900 is 29.00).
    - `currency` (string, required): ISO 4217 code in lower case (usd, eur, chf).
  - `chapterCount` (number, required): Chapters and collections.
  - `routeCount` (number, required): Routes.
  - `region` (MapRegion or null, required): The map region.
    Fields of MapRegion: https://developers.sceniq.earth/fields/map-region.md
  - `storeTags` (array of strings, required): Store tags.
  - `country` (string or null, required): Country code, or null for worldwide.
  - `hasThumbnail` (boolean, required): Whether a store thumbnail is set.
  - `salesPage` (object, required): The sales page.
    - `draftProblems` (array of strings, required): What the sales page draft still lacks.
    - `exists` (boolean, required): Whether a sales page draft exists.
    - `published` (boolean, required): Whether the sales page is published.
  - `lastApiWriteAt` (number or null, required): When a key last changed the guide.
- `handoff` (object, required): What the creator does in the studio.
  - `remaining` (array of strings, required): The clicks only the creator can make, still open.
  - `studioUrl` (string, required): Where the creator publishes the guide.
  - `salesPageUrl` (string, required): Where the creator publishes the sales page.
- `reviewUrl` (string, required): The guide in the studio, for the creator's review.
- `nextStep` (string, required): One sentence on what to do next.

## Used by

- [get_guide_readiness](https://developers.sceniq.earth/reference/get_guide_readiness.md)
