Urbit Docs
  • What is Urbit?
  • Get on Urbit
  • Build on Urbit
    • Contents
    • Environment Setup
    • Hoon School
      • 1. Hoon Syntax
      • 2. Azimuth (Urbit ID)
      • 3. Gates (Functions)
      • 4. Molds (Types)
      • 5. Cores
      • 6. Trees and Addressing
      • 7. Libraries
      • 8. Testing Code
      • 9. Text Processing I
      • 10. Cores and Doors
      • 11. Data Structures
      • 12. Type Checking
      • 13. Conditional Logic
      • 14. Subject-Oriented Programming
      • 15. Text Processing II
      • 16. Functional Programming
      • 17. Text Processing III
      • 18. Generic and Variant Cores
      • 19. Mathematics
    • App School I
      • 1. Arvo
      • 2. The Agent Core
      • 3. Imports and Aliases
      • 4. Lifecycle
      • 5. Cards
      • 6. Pokes
      • 7. Structures and Marks
      • 8. Subscriptions
      • 9. Vanes
      • 10. Scries
      • 11. Failure
      • 12. Next Steps
      • Appendix: Types
    • App School II (Full-Stack)
      • 1. Types
      • 2. Agent
      • 3. JSON
      • 4. Marks
      • 5. Eyre
      • 6. React app setup
      • 7. React app logic
      • 8. Desk and glob
      • 9. Summary
    • Core Academy
      • 1. Evaluating Nock
      • 2. Building Hoon
      • 3. The Core Stack
      • 4. Arvo I: The Main Sequence
      • 5. Arvo II: The Boot Sequence
      • 6. Vere I: u3 and the Serf
      • 7. Vere II: The Loom
      • 8. Vanes I: Behn, Dill, Kahn, Lick
      • 9. Vanes II: Ames
      • 10. Vanes III: Eyre, Iris
      • 11. Vanes IV: Clay
      • 12. Vanes V: Gall and Userspace
      • 13. Vanes VI: Khan, Lick
      • 14. Vanes VII: Jael, Azimuth
    • Runtime
      • U3
      • Conn.c Guide
      • How to Write a Jet
      • API Overview by Prefix
      • C in Urbit
      • Cryptography
      • Land of Nouns
    • Tools
      • Useful Links
      • JS Libraries
        • HTTP API
      • Docs App
        • File Format
        • Index File
        • Suggested Structure
    • Userspace
      • Command-Line App Tutorial
      • Remote Scry
      • Unit Tests
      • Software Distribution
        • Software Distribution Guide
        • Docket File
        • Glob
      • Examples
        • Building a CLI App
        • Debugging Wrapper
        • Host a Website
        • Serving a JS Game
        • Ship Monitoring
        • Styled Text
  • Urbit ID
    • What is Urbit ID?
    • Azimuth Data Flow
    • Life and Rift
    • Urbit HD Wallet
    • Advanced Azimuth Tools
    • Custom Roller Tutorial
    • Azimuth.eth Reference
    • Ecliptic.eth Reference
    • Layer 2
      • L2 Actions
      • L2 Rollers
      • L2 Roller HTTP RPC-API
      • L2 Transaction Format
  • Urbit OS
    • What is Urbit OS?
    • Base
      • Hood
      • Threads
        • Basics Tutorial
          • Bind
          • Fundamentals
          • Input
          • Output
          • Summary
        • HTTP API Guide
        • Spider API Reference
        • Strandio Reference
        • Examples
          • Child Thread
          • Fetch JSON
          • Gall
            • Poke Thread
            • Start Thread
            • Stop Thread
            • Take Facts
            • Take Result
          • Main-loop
          • Poke Agent
          • Scry
          • Take Fact
    • Kernel
      • Arvo
        • Cryptography
        • Move Trace
        • Scries
        • Subscriptions
      • Ames
        • Ames API Reference
        • Ames Cryptography
        • Ames Data Types
        • Ames Scry Reference
      • Behn
        • Behn API Reference
        • Behn Examples
        • Behn Scry Reference
      • Clay
        • Clay API Reference
        • Clay Architecture
        • Clay Data Types
        • Clay Examples
        • Clay Scry Reference
        • Filesystem Hierarchy
        • Marks
          • Mark Examples
          • Using Marks
          • Writing Marks
        • Using Clay
      • Dill
        • Dill API Reference
        • Dill Data Types
        • Dill Scry Reference
      • Eyre
        • EAuth
        • Eyre Data Types
        • Eyre External API
        • Eyre Internal API
        • Eyre Scry Reference
        • Low-Level Eyre Guide
        • Noun channels
      • Gall
        • Gall API Reference
        • Gall Data Types
        • Gall Scry Reference
      • Iris
        • Iris API Reference
        • Iris Data Types
        • Iris Example
      • Jael
        • Jael API Reference
        • Jael Data Types
        • Jael Examples
        • Jael Scry Reference
      • Khan
        • Khan API Reference
        • Khan Data Types
        • Khan Example
      • Lick
        • Lick API Reference
        • Lick Guide
        • Lick Examples
        • Lick Scry Reference
  • Hoon
    • Why Hoon?
    • Advanced Types
    • Arvo
    • Auras
    • Basic Types
    • Cheat Sheet
    • Cryptography
    • Examples
      • ABC Blocks
      • Competitive Programming
      • Emirp
      • Gleichniszahlenreihe
      • Islands
      • Luhn Number
      • Minimum Path Sum
      • Phone Letters
      • Restore IP
      • Rhonda Numbers
      • Roman Numerals
      • Solitaire Cipher
      • Water Towers
    • Generators
    • Hoon Errors
    • Hoon Style Guide
    • Implementing an Aura
    • Irregular forms
    • JSON
    • Limbs and wings
      • Limbs
      • Wings
    • Mips (Maps of Maps)
    • Parsing Text
    • Runes
      • | bar · Cores
      • $ buc · Structures
      • % cen · Calls
      • : col · Cells
      • . dot · Nock
      • / fas · Imports
      • ^ ket · Casts
      • + lus · Arms
      • ; mic · Make
      • ~ sig · Hints
      • = tis · Subject
      • ? wut · Conditionals
      • ! zap · Wild
      • Constants (Atoms and Strings)
      • --, == · Terminators
    • Sail (HTML)
    • Serialization
    • Sets
    • Standard Library
      • 1a: Basic Arithmetic
      • 1b: Tree Addressing
      • 1c: Molds and Mold-Builders
      • 2a: Unit Logic
      • 2b: List Logic
      • 2c: Bit Arithmetic
      • 2d: Bit Logic
      • 2e: Insecure Hashing
      • 2f: Noun Ordering
      • 2g: Unsigned Powers
      • 2h: Set Logic
      • 2i: Map Logic
      • 2j: Jar and Jug Logic
      • 2k: Queue Logic
      • 2l: Container from Container
      • 2m: Container from Noun
      • 2n: Functional Hacks
      • 2o: Normalizing Containers
      • 2p: Serialization
      • 2q: Molds and Mold-Builders
      • 3a: Modular and Signed Ints
      • 3b: Floating Point
      • 3c: Urbit Time
      • 3d: SHA Hash Family
      • 3e: AES encryption (Removed)
      • 3f: Scrambling
      • 3g: Molds and Mold-Builders
      • 4a: Exotic Bases
      • 4b: Text Processing
      • 4c: Tank Printer
      • 4d: Parsing (Tracing)
      • 4e: Parsing (Combinators)
      • 4f: Parsing (Rule-Builders)
      • 4g: Parsing (Outside Caller)
      • 4h: Parsing (ASCII Glyphs)
      • 4i: Parsing (Useful Idioms)
      • 4j: Parsing (Bases and Base Digits)
      • 4k: Atom Printing
      • 4l: Atom Parsing
      • 4m: Formatting Functions
      • 4n: Virtualization
      • 4o: Molds
      • 5a: Compiler Utilities
      • 5b: Macro Expansion
      • 5c: Compiler Backend & Prettyprinter
      • 5d: Parser
      • 5e: Molds and mold builders
      • 5f: Profiling support
    • Strings
    • The Engine Pattern
    • Udon (Markdown-esque)
    • Vases
    • Zuse
      • 2d(1-5): To JSON, Wains
      • 2d(6): From JSON
      • 2d(7): From JSON (unit)
      • 2e(2-3): Print & Parse JSON
      • 2m: Ordered Maps
  • Nock
    • What is Nock?
    • Decrement
    • Definition
    • Fast Hints and Jets
    • Implementations
    • Specification
  • User Manual
    • Contents
    • Running Urbit
      • Cloud Hosting
      • Home Servers
      • Runtime Reference
      • Self-hosting S3 Storage with MinIO
    • Urbit ID
      • Bridge Troubleshooting
      • Creating an Invite Pool
      • Get an Urbit ID
      • Guide to Factory Resets
      • HD Wallet (Master Ticket)
      • Layer 2 for planets
      • Layer 2 for stars
      • Proxies
      • Using Bridge
    • Urbit OS
      • Basics
      • Configuring S3 Storage
      • Dojo Tools
      • Filesystem
      • Shell
      • Ship Troubleshooting
      • Star and Galaxy Operations
      • Updates
Powered by GitBook

GitHub

  • Urbit ID
  • Urbit OS
  • Runtime

Resources

  • YouTube
  • Whitepaper
  • Awesome Urbit

Contact

  • X
  • Email
  • Gather
On this page
  • /cors
  • /cors/requests
  • /cors/approved
  • /cors/approved/[origin]
  • /cors/rejected
  • /cors/rejected/[origin]
  • /authenticated/cookie
  • /cache/[aeon]/[url]
  • %bindings
  • %cache
  • %connections
  • %authentication-state
  • %channel-state
  • %host
Edit on GitHub
  1. Urbit OS
  2. Kernel
  3. Eyre

Eyre Scry Reference

Here are all of Eyre's scry endpoints. There's not too many and they mostly deal with either CORS settings or aspects of the state of connections.

The first few have a care of x and are a scry like .^([type] %ex /=//=/[some-path]) (note the empty desk). The rest have no care and the tag replaces the desk like .^([type] %e /=[something]=).

All examples are run from the dojo.

/cors

An x scry with a path of /cors will return Eyre's CORS origin registry. The type returned is a cors-registry which contains the sets of approved, rejected and requested origins.

Example

> .^(cors-registry:eyre %ex /=//=/cors)
[ requests={~~http~3a.~2f.~2f.baz~.example}
  approved={~~http~3a.~2f.~2f.foo~.example}
  rejected={~~http~3a.~2f.~2f.bar~.example}
]

/cors/requests

An x scry with a path of /cors/requests will return the set of pending origin requests. These are origins that were in an Origin: ... HTTP header but weren't in the existing approved or rejected sets. The type returned is a (set origin:eyre).

Example

> .^(requests=(set origin:eyre) %ex /=//=/cors/requests)
requests={~~http~3a.~2f.~2f.baz~.example}

/cors/approved

An x scry with a path of /cors/approved will return the set of approved CORS origins. The type returned is a (set origin:eyre).

Example

> .^(approved=(set origin:eyre) %ex /=//=/cors/approved)
approved={~~http~3a.~2f.~2f.foo~.example}

/cors/approved/[origin]

An x scry whose path is /cors/approved/[origin] tests whether the given origin URL is in the approved set of the CORS registry. The type returned is a simple ?.

The origin URL is a @t, but since @t may not be valid in a path, it must be encoded in a @ta using +scot like (scot %t 'foo') rather than just 'foo'.

Examples

> .^(? %ex /=//=/cors/approved/(scot %t 'http://foo.example'))
%.y
> .^(? %ex /=//=/cors/approved/(scot %t 'http://bar.example'))
%.n

/cors/rejected

An x scry with a path of /cors/rejected will return the set of rejected CORS origins. The type returned is a (set origin:eyre).

Example

> .^(rejected=(set origin:eyre) %ex /=//=/cors/rejected)
rejected={~~http~3a.~2f.~2f.bar~.example}

/cors/rejected/[origin]

An x scry whose path is /cors/rejected/[origin] tests whether the given origin URL is in the rejected set of the CORS registry. The type returned is a simple ?.

The origin URL must be a cord-encoded @t rather than just the plain @t, so you'll have to do something like (scot %t 'foo') rather than just 'foo'.

Examples

> .^(? %ex /=//=/cors/rejected/(scot %t 'http://bar.example'))
%.y
> .^(? %ex /=//=/cors/rejected/(scot %t 'http://foo.example'))
%.n

/authenticated/cookie

An x scry whose path is /authenticated/cookie/[cookie] tests whether the given cookie is currently valid. The type returned is a ?.

The cookie must be the full cookie including the urbauth-{SHIP}= part. The cookie must be a knot-encoded @t rather than just a plain @t, so you'll have to do something like (scot %t 'foo') rather than just 'foo'.

Examples

> .^(? %ex /=//=/authenticated/cookie/(scot %t 'urbauth-~zod=0vvndn8.bfsjj.j3614.k40ha.8fomi'))
%.y
> .^(? %ex /=//=/authenticated/cookie/(scot %t 'foo'))
%.n

/cache/[aeon]/[url]

An %x /cache scry will return the cached value for the given [url] at the given [aeon] if it exists.

The [url] must be a knot-encoded @t rather than just a plain @t, so you'll have to do something like (scot %t 'foo') rather than just 'foo'.


%bindings

A scry with bindings in place of the desk in the beak will return Eyre's URL path bindings. The type returned is a (list [binding:eyre duct action:eyre]) (see the $binding & $action sections of the Data Types document for details).

Example

> .^((list [binding:eyre duct action:eyre]) %e /=bindings=)
~[
  [ [site=~ path=<|~landscape js bundle|>]
    ~[/gall/use/file-server/0w2.EijQB/~zod/~landscape/js/bundle /dill //term/1]
    [%app app=%file-server]
  ]
  [ [site=~ path=<|~landscape|>]
    ~[/gall/use/file-server/0w2.EijQB/~zod/~landscape /dill //term/1]
    [%app app=%file-server]
  ]
  ...(truncated for brevity)...
]

%cache

A scry with cache in place of the desk in the beak will return Eyre's entire cache. The type returned is as follows:

(map url=@t [aeon=@ud val=(unit cache-entry:eyre)])

The map's url key is a URL path like /foo/bar/baz.jpg in a cord. The aeon is the revision number, and val is either the cache entry or null if it's been tombstoned. See the $cache-entry section of the Data Types document for details of its type.


%connections

A scry with connections in place of the desk in the beak will return all open HTTP connections that aren't fully complete. The type returned is a (map duct outstanding-connection:eyre) (see the $outstanding-connection section of the Data Types document for details).

Example

> .^((map duct outstanding-connection:eyre) %e /=connections=)
{}

%authentication-state

A scry with authentication-state in place of the desk in the beak will return authentication details of all current sessions. The type returned is a $authentication-state. The p field is the cookie sans the urbauth-[ship]= part.

Example

> .^(authentication-state:eyre %e /=authentication-state=)
  sessions
{ [ p=0v3.kags1.hj7hm.6llrl.cga2j.eh1r7
    q=[expiry-time=~2021.5.20..08.44.27..39e0 channels={}]
  ]
}

%channel-state

A scry with channel-state in place of the desk in the beak will return details of the state of each channel. The type returned is a channel-state.

Example

> .^(channel-state:eyre %e /=channel-state=)
[   session
  { [ p='1601844290-ae45b'
        q
      [ state=[%.y p=[date=~2021.5.13..20.44.27..39e0 duct=~[//http-server/0v2.kmj6q/26/1]]]
        next-id=1
        last-ack=~2021.5.13..08.44.27..39e0
        events={[id=0 request-id=2 channel-event=[%poke-ack p=~]]}
        unacked={}
        subscriptions={}
        heartbeat=~
      ]
    ]
  }
  duct-to-key={}
]

%host

A scry with host in place of the desk in the beak will return host details of the ship. The type returned is a hart:eyre.

Example

> .^(hart:eyre %e /=host=)
[p=%.n q=[~ 8.080] r=[%.y p=<|localhost|>]]

PreviousEyre Internal APINextLow-Level Eyre Guide

Last updated 1 day ago