@@ -680,12 +680,24 @@ <h3>Endpoints</h3>
680680 < td > < a > New Session</ a > </ td >
681681 </ tr >
682682
683+ < tr >
684+ < td > GET</ td >
685+ < td > /session/{session id}</ td >
686+ < td > < a > Get Session</ a > </ td >
687+ </ tr >
688+
683689 < tr >
684690 < td > DELETE</ td >
685691 < td > /session/{< var > session id</ var > }</ td >
686692 < td > < a > Delete Session</ a > </ td >
687693 </ tr >
688694
695+ < tr >
696+ < td > POST</ td >
697+ < td > /session/async</ td >
698+ < td > < a > Async New Session</ a > </ td >
699+ </ tr >
700+
689701 < tr >
690702 < td > GET</ td >
691703 < td > /status</ td >
@@ -2172,8 +2184,15 @@ <h2>Sessions</h2>
21722184 an < a > intermediary node</ a > will also < a > close the session</ a > of
21732185 the < a > associated session</ a > .
21742186
2175- < p > All < a > commands</ a > , except < a > New Session</ a > and < a > Status</ a > ,
2176- have an associated < dfn > current session</ dfn > ,
2187+ < p > An < a > intermediary node</ a > will also maintain a list of
2188+ < dfn > session creation jobs</ dfn > . These include a mapping from
2189+ a < dfn > session creation id</ dfn > to a < a > session id</ a > of
2190+ an < a > associated session</ a > .
2191+
2192+ < a > New Session</ a > , < a > Async New Session</ a > , and < a > Status</ a > < a > commands</ a >
2193+ have no associated < a > session</ a > or < a > session creation job</ a > .
2194+
2195+ < p > All other < a > commands</ a > have an associated < dfn > current session</ dfn > ,
21772196 which is the < a > session</ a > in which that < a > command</ a > will run.
21782197
21792198< p > A < a > remote end</ a > has an associated list of
@@ -2482,6 +2501,55 @@ <h3 id=new-session><dfn data-lt="new sessions|creating a new session">New Sessio
24822501</ ol >
24832502</ section > <!-- /New Session -->
24842503
2504+ < section >
2505+ < h3 > < dfn > Get Session</ dfn > </ h3 >
2506+
2507+ < table class ="simple jsoncommand ">
2508+ < tr >
2509+ < th > HTTP Method</ th >
2510+ < th > URI Template</ th >
2511+ </ tr >
2512+ < tr >
2513+ < td > GET</ td >
2514+ < td > /session/{session id}</ td >
2515+ </ tr >
2516+ </ table >
2517+
2518+ < p > The < a > remote end steps</ a > are:
2519+
2520+ < ol >
2521+ < li > < p > Let < var > session</ var > be a job in < a > active sessions</ a >
2522+ with a < a > session id</ a > matching < var > session id</ var >
2523+
2524+ < li > < p > If < a > Remote end</ a > is an < a > endpoint node</ a > and
2525+ < var > session</ var > is < code > null</ code > , return < a > error</ a >
2526+ with < a > error code</ a > < a > unknown session</ a > .
2527+
2528+ < li > < p > If < a > Remote end</ a > is an < a > intermediary node</ a > and
2529+ < var > session</ var > is < code > null</ code > , let < var > session</ var >
2530+ be a job in < a > session creation job</ a > with a < a > session id</ a >
2531+ matching < var > session creation id</ var >
2532+
2533+ < li > < p > If < a > Remote end</ a > is an < a > intermediary node</ a > and
2534+ < var > session</ var > is < code > null</ code > , return < a > error</ a >
2535+ with < a > error code</ a > < a > unknown session</ a > .
2536+
2537+ < li > < p > Let < var > body</ var > be a JSON < a > Object</ a > initialised with:
2538+ < dl >
2539+ < dl >
2540+ < dt > "< code > sessionId</ code > "
2541+ < dd > The < a > session id</ a > of the < a > current session</ a > .
2542+
2543+ < dt > "< code > capabilities</ code > "
2544+ < dd > The capabilities of the < a > current session</ a > .
2545+ </ dl >
2546+ </ dl >
2547+
2548+ < li > < p > Return success with data < var > body</ var > .
2549+ This conversation was marked as resolved by christian-bromann
2550+ </ ol >
2551+ </ section > <!-- /Get Session -->
2552+
24852553< section >
24862554< h3 > < dfn > Delete Session</ dfn > </ h3 >
24872555
@@ -2506,6 +2574,58 @@ <h3><dfn>Delete Session</dfn></h3>
25062574</ ol >
25072575</ section > <!-- /Delete Session -->
25082576
2577+ < section >
2578+ < h3 > < dfn > Async New Session</ dfn > </ h3 >
2579+
2580+ < table class ="simple jsoncommand ">
2581+ < tr >
2582+ < th > HTTP Method</ th >
2583+ < th > URI Template</ th >
2584+ </ tr >
2585+ < tr >
2586+ < td > POST</ td >
2587+ < td > /session/async</ td >
2588+ </ tr >
2589+ </ table >
2590+
2591+ < p > The < a > remote end</ a > steps are:
2592+
2593+ < ol >
2594+ < li > < p > Perform the following substeps based on the < a > remote end</ a > ’s type:
2595+ < dl class =switch >
2596+ < dt > < a > Remote end</ a > is an < a > endpoint node</ a >
2597+ < dd >
2598+ < ol >
2599+ < li > < p > Execute steps defined in < a > New Session</ a >
2600+ </ ol >
2601+
2602+ < dt > < a > Remote end</ a > is an < a > intermediary node</ a >
2603+ < dd >
2604+ < ol >
2605+ < li > < p > Use the result of the < a > capabilities processing</ a > algorithm
2606+ to route the < a > new session</ a > request to the appropriate < a > endpoint node</ a > .
2607+ An < a > intermediary node</ a > is free to define < a > extension capabilities</ a >
2608+ to assist in this process, however, these specific capabilities
2609+ must not be forwarded to the < a > endpoint node</ a > .
2610+
2611+ < li > < p > Let < var > session creation job</ var > be a new JSON < a > Object</ a >
2612+ with the following properties:
2613+
2614+ < dl >
2615+ < dt > "< code > sessionCreationId</ code > "
2616+ < dd > The result of < a > generating a UUID</ a > .
2617+ </ dl >
2618+
2619+ < li > Add the < var > session creation job</ var > to the list of
2620+ < a > session creation jobs</ a > .
2621+
2622+ < li > < p > Return < a > success</ a > with data < var > session creation job</ var > .
2623+ </ ol >
2624+ </ dl >
2625+ </ ol >
2626+
2627+ </ section > <!-- /Async New Session -->
2628+
25092629< section >
25102630< h3 > < dfn > Status</ dfn > </ h3 >
25112631
0 commit comments