Skip to main content
Every node in a ScreenJSON document that can be referenced from elsewhere carries an RFC 4122 UUID.

Format

^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
Example: 7a1c0b4e-8f3a-4c68-9d2e-ac8f21a0d8a4.

Nodes with UUIDs

NodeWhere
Documentroot id
Authorauthors[].id
Contributorcontributors[].id
Charactercharacters[].id
Scenedocument.scenes[].id
Elementdocument.scenes[].body[].id
Notenotes[].id
Revisionrevisions[].id
Bookmarkdocument.bookmarks[].id
Sourcesources[].id
Embeddinganalysis.embeddings[<target>][].id
Passageanalysis.passages[].id
Summaryanalysis.summaries[].id

Cross-references

  • dialogue.character and character (cue).character point to characters[].id.
  • note.contributor points to contributors[].id.
  • note.parent points to the element, scene, or note the annotation is attached to.
  • bookmark.scene and bookmark.element point to their targets.
  • passage.scene and passage.elements[] point to the elements a passage covers.
  • summary.target points to a scene (when scope = "scene").
  • element.scene back-references its parent scene.
  • revision.parent points to the revision it was forked from.

Guarantees

  • A given UUID identifies one node for the lifetime of the document.
  • Regenerating output across a compatible change SHOULD reuse the same UUIDs, not mint new ones. Both screenjson convert and screenjson-export honour this when the output file already exists on disk.