diff --git a/changelog.d/20231213_145052_bjorn.wilhelm.kihlberg_PLT_7701.md b/changelog.d/20231213_145052_bjorn.wilhelm.kihlberg_PLT_7701.md
new file mode 100644
index 00000000..9f08c0c4
--- /dev/null
+++ b/changelog.d/20231213_145052_bjorn.wilhelm.kihlberg_PLT_7701.md
@@ -0,0 +1,6 @@
+### @marlowe.io/runtime-rest-client
+
+- PLT-7701: Extend the rest client with procedure `getContractSourceById`. (Implemented in [PR-128](https://github.com/input-output-hk/marlowe-ts-sdk/pull/128))
+- PLT-7702: Extend the rest client with procedure `getContractSourceAdjacency`. (Implemented in [PR-128](https://github.com/input-output-hk/marlowe-ts-sdk/pull/128))
+- PLT-7703: Extend the rest client with procedure `getContractSourceClosure`. (Implemented in [PR-128](https://github.com/input-output-hk/marlowe-ts-sdk/pull/128))
+- PLT-8427: Extend the rest client with procedure `getNextStepsForContract`. (Implemented in [PR-128](https://github.com/input-output-hk/marlowe-ts-sdk/pull/128))
diff --git a/examples/js/poc-helpers.js b/examples/js/poc-helpers.js
index 6c879970..19c28a30 100644
--- a/examples/js/poc-helpers.js
+++ b/examples/js/poc-helpers.js
@@ -39,7 +39,7 @@ export function logJSON(message, json) {
export function getRuntimeUrl() {
const runtimeUrlInput = document.getElementById("runtimeUrl");
return (
- runtimeUrlInput.value ||
+ (runtimeUrlInput && runtimeUrlInput.value) ||
"https://marlowe-runtime-preprod-web.demo.scdev.aws.iohkdev.io/"
);
}
diff --git a/examples/rest-client-flow/index.html b/examples/rest-client-flow/index.html
index 0ee0f410..c15c20a5 100644
--- a/examples/rest-client-flow/index.html
+++ b/examples/rest-client-flow/index.html
@@ -135,6 +135,43 @@
Request
>/contracts/:contractId/transactions/:transactionId
+
+ GETs contract source by contract Source ID
+ /contracts/sources/:contractSourceId
+
+
+ GETs the contract Source IDs which are adjacent to a contract
+ /contracts/sources/:contractSourceId/adjacency
+
+
+ GETs the contract Source IDs which appear in the full hierarchy of a
+ contract source
+ /contracts/sources/:contractSourceId/closure
+
Console
diff --git a/packages/marlowe-object/src/index.ts b/packages/marlowe-object/src/index.ts
index 30045999..a2cc29f8 100644
--- a/packages/marlowe-object/src/index.ts
+++ b/packages/marlowe-object/src/index.ts
@@ -1,6 +1,11 @@
export { Action, Deposit, Notify, Choice } from "./actions.js";
export { ChoiceName, ChoiceId, Bound, ChosenNum } from "./choices.js";
-export { Reference, Label } from "./reference.js";
+export {
+ Reference,
+ Label,
+ ContractSourceId,
+ ContractSourceIdGuard,
+} from "./reference.js";
export { Address, Role, Party } from "./participants.js";
export { Payee, PayeeAccount, PayeeParty, AccountId } from "./payee.js";
diff --git a/packages/marlowe-object/src/reference.ts b/packages/marlowe-object/src/reference.ts
index 67204e52..ae9e7606 100644
--- a/packages/marlowe-object/src/reference.ts
+++ b/packages/marlowe-object/src/reference.ts
@@ -8,6 +8,14 @@ export type Label = string;
export const LabelGuard: t.Type