diff --git a/index.html b/index.html index 1316a47c..c4e5a5c5 100644 --- a/index.html +++ b/index.html @@ -680,6 +680,30 @@

Endpoints

New Session + + GET + /session/{session id} + Get Session + + + + POST + /session/async + Async New Session + + + + GET + /session/async/{session creation job id}{/event} + Async New Session Status + + + + DELETE + /session/async/{session creation job id} + Cancel New Session + + DELETE /session/{session id} @@ -1144,6 +1168,13 @@

Errors

both editable and resettable. + + invalid event id + 400 + invalid event id + Argument was an invalid event ID. + + invalid selector 400 @@ -1151,6 +1182,15 @@

Errors

Argument was an invalid selector. + + invalid session creation job id + 404 + invalid session creation job id + Occurs if the given session creation job id is not in the list of session creation jobs, + or is in the list but has a status of + "cancelled" or "failed". + + invalid session id 404 @@ -1159,6 +1199,13 @@

Errors

meaning the session either does not exist or that it’s not active. + + invalid timeout + 400 + invalid timeout + Argument was an invalid timeout. + + javascript error 500 @@ -1289,6 +1336,14 @@

Errors

but did not match an method for that URL. + + unknown session + 404 + unknown session + The requested sessionId did not match + with any sessionId known by an intermediary node. + + unsupported operation 500 @@ -2139,8 +2194,185 @@

Sessions

an intermediary node will also close the session of the associated session. -

All commands, except New Session and Status, - have an associated current session, +

A remote end has an associated + maximum timeout for async session creation in milliseconds + (an Integer). It may be null if “unlimited”. + +

A remote end has an associated + wait time for async session creation in milliseconds + (an Integer). It may be null if “unlimited”. + +

A session creation job is a task to create a session: + + + + + + + + + + + + + + + + + + + + + + + + + +
Field +Default +JSON key +Optional +Nullable +Description +
Session creation job ID + +"sessionCreationJobId" + + +A string representation of a UUID used to uniquely identify this job. +
Session creation status +"queuing" +"status" + + +String indicating session creation status, + one of "queueing", "creating", "created", + "failed", and "cancelled". +
Session creation timeout + +"timeout" + +✓ +Specified as an integer in milliseconds. + If session creation is not achieved within this timeout, + the job should be failed. + If null, + there is no timeout beyond implementation limits. +
Session creation requested time + +"requestedTime" + + +When the session creation was requested as a Date. +
Session creation ended time + +"endedTime" +✓ + +When the job ended in success or failure as a Date. +
Session ID + +"sessionId" +✓ + +Session ID of the created session. +
Session creation events +Empty JSON List +"events" + + +Time-ordered list of session creation events. +
+ +

A session creation event is an event that occurred in the course of trying to create a session: + + + + + + + + + + + + + + + + + + + + + + +
Field +Default +JSON key +Optional +Nullable +Description +
Event ID + +"eventId" + + +A string representation of a UUID used to uniquely identify this event. +
Event time + +"time" + + +Event time as a millisecond timestamp. +
Event type +"progress" +"type" +✓ + +Type of this event: "progress" or "error" or a vendor-prefixed extension type +
Message + +"message" + + +Human readable description of an event. +
Event data + +"data" +✓ + +Object containing implementation-defined data associated with this event. +
Event stack trace +"" +"stacktrace" +✓ + +A stack trace report of the active stack frames at the time when the event occurred. +
+ +

A remote end will maintain a list of session creation jobs. + +

With an implementation-specific schedule and priority, + a remote end should take implementation-defined steps on session creation jobs + with a status of "queueing". + +

For each session creation job, an intermediary node will + maintain a list of associated session creation jobs. + These include each session creation job on any upstream neighbor + that is created when the intermediary node executes the + Async New Session command to complete the job. + +

For each session creation job, an intermediary node will + maintain a associated list of sessions. These include + each session on any upstream neighbor that is created + when the intermediary node executes a New + Session command to complete the job. + +New Session, Async New Session, and Status commands + have no associated session or session creation job. + +

All other commands have an associated current session, which is the session in which that command will run.

A remote end has an associated list of @@ -2449,6 +2681,241 @@

New Sessio +
+

Get Session

+ + + + + + + + + + +
HTTP MethodURI Template
GET/session/{session id}
+ +

The remote end steps are: + +

    +
  1. Let session be a job in active sessions + with a session id matching session id + +

  2. If session is null, + return error with error code unknown session. + +

  3. Let body be a JSON Object initialised with: +

    +
    +
    "sessionId" +
    The session id of the current session. + +
    "capabilities" +
    The capabilities of the current session. +
    +
    + +
  4. Return success with data body. +

+ +
+

Async New Session

+ + + + + + + + + + +
HTTP MethodURI Template
POST/session/async
+ +

The remote end steps are: + +

    +
  1. Let timeout be the result of getting the + property named timeout from parameters. + +

      +
    1. If maximum timeout for async session creation is an integer, + and timeout is undefined, + let timeout be min(an implementation-defined maximum timeout, maximum timeout for async session creation). +

    2. If maximum timeout for async session creation is null, + and timeout is undefined, + let timeout be an implementation-defined maximum timeout. +

    3. If timeout is null, + let timeout be maximum timeout for async session creation. +

    4. If maximum timeout for async session creation is an integer, + and less than maximum timeout for async session creation, + return error with error code invalid timeout. +

    5. If timeout is not null or an integer, + return error with error code invalid argument. +

    + +
  2. If the remote end is an intermediary node, take + implementation-defined steps that either result in returning + an error with error code session not created, + or in returning a success with data that is isomorphic to + that returned by remote ends according to the rest of this + algorithm. + +

  3. If the maximum active sessions is equal to + the length of the list of active sessions, + return error with error code session not created. + +

  4. Let capabilities be the result + of trying to process capabilities + with parameters as an argument. + +

  5. If capabilities is null, + return error with error code session not created. + +

  6. Let session creation job be a new JSON Object + with the following properties: + +

    +
    "sessionCreationJobId" +
    The result of generating a UUID. + +
    "status" +
    The String constant "queuing". + +
    "timeout" +
    timeout’s value. + +
    "requestedTime" +
    session creation requested time’s value. + +
    "events" +
    An empty JSON List. +
    + +
  7. Add the session creation job to the list of + session creation jobs. +
+ +
+ +
+

Async New Session Status

+ + + + + + + + + + +
HTTP MethodURI Template
GET/session/async/{session creation job id}{/event}
+ +

The remote end steps are: + +

    +
      +
    1. Let session creation job be the job in session creation jobs + with a session creation job id matching session creation job id. + +

    2. If session creation job is null, + return error with error code invalid session creation job id. + +

    3. Let body be a JSON clone of session creation job. + +

    4. If event is defined: + +

        +
      1. Let found be false. + +

      2. Let events be the value of getting a property named events from body. + +

      3. For each event object in events in reverse order: + +

          +
        1. If found is true, then break. + +

        2. Let event id be the value of getting a property named eventId from event object. + +

        3. If event equals event id, + set found to true. + +

        4. Set property event in body to filtered event. +
        + +
      4. If found is false, + return error with error code invalid event id. +

      + +
    5. Let status be the value of getting a property named status from body. + +

    6. Let cache timeout be null. + +

    7. If status is "queueing" or "creating", + then set cache timeout to 1,000 + or an implementation-defined predicted interval to the next event. + +

    8. Set a property on body with name cacheTimeout and value cache timeout. + +

      Local ends may use the cacheTimeout property to hint when to next poll for status. + +

    9. Return success with data body. +

    +
+ +
+

Cancel New Session

+ + + + + + + + + + +
HTTP MethodURI Template
DELETE/session/async/{session creation job id}
+ +

The remote end steps are: + +

    +
  1. Let session creation job be the job in session creation jobs + with a session creation job id matching session creation job id. + +

  2. If session creation job is null, + return error with error code invalid session creation job id. + +

  3. If session creation job has a status of + "cancelled" or "failed", + return success with data null. + +

  4. If session creation job has a status of + "created": + +

      +
    1. Set the status to "cancelled". + +
    2. If session creation job’s job session ID references an active session, + try to close the session +
    + +
  5. If session creation job has a status of + "queuing" or "creating" + and its session ID references an active session: + +

      +
    1. Set session creation job’s status to "cancelled". +
    2. Set session creation job’s ended time to the current millisecond timestamp. +
    3. Try to close the session. +
    + +
  6. Return success with data null. +

+ +
+

Delete Session

@@ -8882,9 +9349,9 @@

Wheel actions

requirements of [[UI-EVENTS]].
  • Let current delta x property - equal delta x + current delta x and + equal delta x current delta x and current delta y property equal - delta y + current delta y. + delta y current delta y.

  • If last is true, return. @@ -10128,6 +10595,7 @@

    Index

  • Iterable
  • Completion
  • CreateResolvingFunctions +
  • Date
  • Directive prologue
  • Early error
  • Function