### Configure Environment Variables (Shell) Source: https://docs.inrupt.com/wallet/installation This example shows how to set up the necessary environment variables for the Data Wallet by copying a sample file and defining the backend Wallet Services URLs. These variables are crucial for connecting the Wallet to the appropriate services. ```shell EXPO_PUBLIC_LOGIN_URL=https://datawallet.inrupt.com/oauth2/authorization/wallet-app EXPO_PUBLIC_WALLET_API=https://datawallet.inrupt.com ``` -------------------------------- ### Start Expo Development Server (Bash) Source: https://docs.inrupt.com/wallet/installation This command initiates the Expo development server, which is essential for building and testing the Wallet application on a physical device using the Expo Go app. It allows for platform-independent development and testing. ```bash npx expo start ``` -------------------------------- ### Clone Repository and Install Dependencies (Bash) Source: https://docs.inrupt.com/wallet/installation This snippet demonstrates how to clone the Solid Data Wallet repository from GitHub and install its project dependencies using npm ci. Ensure Git and Node.js (with NPM) are installed beforehand. ```bash $ git clone https://github.com/openwallet-foundation-labs/solid-data-wallet $ cd solid-data-wallet $ npm ci ``` -------------------------------- ### HTTP Request Examples for Provisioning Sessions Source: https://docs.inrupt.com/ess/latest/services/service-platform-management/platform-management-api Examples of HTTP requests for interacting with the Inrupt provisioning API. These include GET, PUT, and DELETE requests to manage provisioning sessions, with specific examples for retrieving session status, activating a session, and deprovisioning resources. ```http GET /admin/provision/a7f8b9c2-4d5e-6f7a-8b9c-1d2e3f4a5b6c HTTP/1.1 Host: platform.example.com Authorization: DPoP xxxxxxxx DPoP: ``` ```http PUT /admin/provision/a7f8b9c2-4d5e-6f7a-8b9c-1d2e3f4a5b6c/activate HTTP/1.1 Host: platform.example.com Authorization: DPoP xxxxxxxx DPoP: ``` ```http DELETE /admin/provision/a7f8b9c2-4d5e-6f7a-8b9c-1d2e3f4a5b6c HTTP/1.1 Host: platform.example.com Authorization: DPoP xxxxxxxx DPoP: ``` -------------------------------- ### ESS Start Service Configuration Options Source: https://docs.inrupt.com/ess/latest/services/service-start Details on the configuration options available for the ESS Start Service, which are set during the installation process. ```APIDOC ## Configuration Options ### INRUPT_PROVISION_HTTP_BASE_URL - **Description**: The base URL of the Pod Provisioning Service. Requires a trailing slash (e.g., `https://provision.{ESS_DOMAIN}/`). - **Usage**: Used by the ESS Start application to determine the ESS’ Pod Provisioning endpoint. ### INRUPT_WEBID_HTTP_BASE_URL - **Description**: The base URL of the WebID Service. Requires a trailing slash (e.g., `https://id.{ESS DOMAIN}/`). - **Usage**: Used by the ESS Start application to determine the base URL of the ESS’ WebID Service endpoints. ### QUARKUS_LOG_LEVEL - **Description**: Logging level for the service. - **Default**: `INFO` ### QUARKUS_OIDC_AUTH_SERVER_URL - **Description**: The URL of the Solid OIDC Broker Service. ### QUARKUS_OIDC_CLIENT_ID - **Description**: The Solid-OIDC Client ID (URL that dereferences to a Client ID document) of the start app for signing in/up with the Identity Provider. - **Default**: `https://start.{ESS DOMAIN}/app/id` - **Related**: `INRUPT_START_CLIENT_ID`, `INRUPT_WEBID_ALLOWED_CLIENT_IDS` - **Important**: Ensure that `INRUPT_WEBID_ALLOWED_CLIENT_IDS` includes the value used for the Start service Client ID, defined in `INRUPT_START_CLIENT_ID`. ``` -------------------------------- ### Add Build and Start Scripts (package.json) Source: https://docs.inrupt.com/sdk/javascript-sdk/tutorial Adds 'build' and 'start' scripts to the 'scripts' section of the package.json file. The 'build' script compiles assets using webpack, and the 'start' script launches the development server. ```json "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack", "start": "webpack serve --open" } ``` -------------------------------- ### Install Cert-Manager Source: https://docs.inrupt.com/ess/latest/installation/appendix/appendix-setup-local-kubernetes Applies the cert-manager installation manifest from a GitHub release to the Kubernetes cluster. ```sh kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.13.2/cert-manager.yaml ``` -------------------------------- ### Navigate to Project Directory Source: https://docs.inrupt.com/sdk/javascript-sdk/tutorial Changes the current working directory to the newly created 'my-demo-app' folder. This command is essential for executing subsequent project setup commands within the correct context. ```shell cd my-demo-app ``` -------------------------------- ### Configure Purge Phases with Service Endpoints (Environment Variables) Source: https://docs.inrupt.com/ess/latest/services/service-platform-management/purger-application This example demonstrates how to configure multiple purgeable services within a phase using indexed environment properties. It shows how to define endpoints for services like OpenID, WebID, Provision, and Authorization, along with priority and delay settings for each phase. ```env INRUPT_PURGER_PHASES_PHASE1_SERVICES_OPENID_ENDPOINT=https://ess-openid INRUPT_PURGER_PHASES_PHASE1_SERVICES_WEBID_ENDPOINT=https://ess-webid INRUPT_PURGER_PHASES_PHASE1_PRIORITY=1 INRUPT_PURGER_PHASES_PHASE1_DELAY=PT5M INRUPT_PURGER_PHASES_PHASE2_SERVICES_PROVISION_ENDPOINT=https://ess-pod-provision INRUPT_PURGER_PHASES_PHASE2_SERVICES_AUTHORIZATION_ENDPOINT=https://ess-authorization-acp INRUPT_PURGER_PHASES_PHASE2_PRIORITY=2 ``` -------------------------------- ### Run Spring Boot Application (Java/Kotlin) Source: https://docs.inrupt.com/sdk/java-sdk/tutorial/step4 These commands initiate the Spring Boot application. The Java version uses Maven Wrapper (`./mvnw`), while the Kotlin version uses Gradle Wrapper (`./gradlew`). The application will run on http://localhost:8080 upon successful startup. ```shell ./mvnw spring-boot:run ``` ```shell ./gradlew bootRun ``` -------------------------------- ### Retrieve File from Inrupt Wallet Source: https://docs.inrupt.com/index Retrieves a file from the Inrupt Wallet. It initializes a session and then fetches the specified file using a GET request. The function returns the file content as text or throws an error if the session is not available. ```javascript async function getFile() { const session = await initializeAndLoginSession(); const walletContainer = "https://datawallet.inrupt.com/wallet"; const file = walletContainer + "/text.txt"; if (!session) { throw new Error("Session is undefined"); } const response = await session.fetch(file, { method: "GET", }); if (response.status === 200) { const fetchCredential = await response.text(); return fetchCredential; } } ``` -------------------------------- ### Creating and Modifying Things Source: https://docs.inrupt.com/sdk/javascript-sdk/read-and-write-rdf-data Demonstrates how to create a new Thing with a specific name and use the Fluent API to add properties and values. It also explains that solid-client functions return new objects rather than modifying existing ones. ```APIDOC ## POST /createThing and Fluent API ### Description Creates a new Thing (data entity) for a SolidDataset with a given name and uses the Fluent API (buildThing) to add properties and values. Note that these functions return new objects with modifications. ### Method POST (Conceptual - functions are called directly) ### Endpoint N/A (Client-side functions) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```javascript // Create a new Thing for "location"; Thing's URL will include the hash #location. // Use Fluent API to add properties to the new Thing, and // build a new Thing with the properties. // Note: solid-client functions do not modify objects passed in as arguments. // Instead the functions return new objects with the modifications. const locationThing = buildThing(createThing({ name: "location" })) .addStringNoLocale("https://schema.org/name", "Sample Lecture Hall") .addUrl(RDF.type, "https://schema.org/Place") .build(); ``` ### Response #### Success Response (200) Returns a new Thing object with the added properties. #### Response Example (Conceptual representation of the returned Thing object) ```json { "@id": "#location", "https://schema.org/name": [{"@value": "Sample Lecture Hall"}], "https://schema.org/type": [{"@id": "https://schema.org/Place"}] } ``` ``` -------------------------------- ### ESS 2.6: Use a Custom Start Application Source: https://docs.inrupt.com/ess Guide on integrating a custom start application in ESS 2.6. ```APIDOC ## ESS 2.6: Use a Custom Start Application ### Description This guide explains how to configure and use a custom start application with ESS version 2.6. ### Method N/A (Customization Guide) ### Endpoint N/A (Customization Guide) ### Parameters N/A ### Request Example N/A ### Response N/A ``` -------------------------------- ### POST /api/expenses/create Source: https://docs.inrupt.com/sdk/java-sdk/tutorial/step4 Creates a new expense record as an RDF resource on your Pod. Ensure you substitute 'your-root-container' with your actual root container path. ```APIDOC ## POST /api/expenses/create ### Description Creates a new expense record as an RDF resource on your Pod. ### Method POST ### Endpoint /api/expenses/create ### Parameters #### Query Parameters None #### Request Body - **identifier** (string) - Required - The full URL for the expense resource. - **merchantProvider** (string) - Required - The name of the merchant or provider. - **description** (string) - Required - A description of the expense. - **expenseDate** (string) - Required - The date of the expense in YYYY-MM-DD format. - **amount** (number) - Required - The amount of the expense. - **currency** (string) - Required - The currency of the expense (e.g., USD). - **category** (string) - Required - The category of the expense. ### Request Example ```json { "identifier": "https://storage.inrupt.com/your-root-container/expenses/20230315/expense1", "merchantProvider": "Example Restaurant", "description": "Team Lunch", "expenseDate": "2023-03-06", "amount": 100, "currency": "USD", "category": "Travel & Entertainment" } ``` ### Response #### Success Response (200) - **identifier** (string) - The URL of the created expense resource. - **merchantProvider** (string) - The name of the merchant or provider. - **expenseDate** (string) - The date of the expense. - **description** (string) - A description of the expense. - **amount** (number) - The amount of the expense. - **currency** (string) - The currency of the expense. - **category** (string) - The category of the expense. - **rdftype** (string) - The RDF type of the resource (e.g., https://schema.org/Invoice). #### Response Example ```json { "identifier": "https://storage.inrupt.com/your-root-container/expenses/20230315/expense1", "merchantProvider": "Example Restaurant", "expenseDate": "2023-03-06T00:00:00.000+00:00", "description": "Team Lunch", "amount": 100, "currency": "USD", "category": "Travel & Entertainment", "rdftype": "https://schema.org/Invoice" } ``` ### Error Handling - **ForbiddenException**: Ensure `your-root-container` is correctly substituted. - **PreconditionFailedException**: The resource may already exist at the specified identifier. ``` -------------------------------- ### POST /admin/provision Source: https://docs.inrupt.com/ess/latest/services/service-platform-management/platform-management-api Creates a new user provisioning session with a WebID in a setup state. Requires a Service Account access token and provides user data and optional compliance proof. ```APIDOC ## POST /admin/provision ### Description Create a new user account with WebID in setup state. ### Method POST ### Endpoint `https://platform.{ESS Domain}/admin/provision` ### Parameters #### Headers - **Authorization** (string) - Required - An access token for a Service Account that has write access to the provision endpoints. - **Content-Type** (string) - Required - `application/json` #### Request Body - **userData** (object) - Required - Contains user data. - **username** (string) - Required - The username for the user. - **proof** (string) - Optional - Compliance proof data. ### Request Example ```http POST /admin/provision HTTP/1.1 Host: platform.example.com Authorization: DPoP DPoP: Content-Type: application/json { "userData": { "username": "johndoe" }, "proof": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } ``` ### Response #### Success Response (201 Created) - **id** (string) - The provisioning session ID. - **state** (string) - The current state of the provisioning session (e.g., "setup"). - **webid** (array) - An array of WebIDs associated with the user. - **storage** (array) - An array of storage containers. - **createdAt** (string) - The timestamp when the session was created. - **proof** (string) - The compliance proof data. #### Response Example ```json { "id": "a7f8b9c2-4d5e-6f7a-8b9c-1d2e3f4a5b6c", "state": "setup", "webid": [ "https://id.example.com/johndoe" ], "storage": [], "createdAt": "2025-01-15T10:30:00Z", "proof": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } ``` ``` -------------------------------- ### Check Purge Status Request (HTTP Example) Source: https://docs.inrupt.com/ess/latest/services/service-platform-management/purger-service An example of an HTTP GET request to check the status of a previously initiated purge operation. It requires the Host and Authorization headers, and the purge ID in the URL. ```http GET /purge/status/xyz HTTP/1.1 Host: purger.example.com Authorization: Bearer xxxxxxxx ``` -------------------------------- ### Create and Build a Thing using Fluent API in @inrupt/solid-client Source: https://docs.inrupt.com/sdk/javascript-sdk/read-and-write-rdf-data Illustrates how to create a new 'Thing' (data entity) and populate it with properties using the Fluent API provided by @inrupt/solid-client. The `buildThing` function chains property additions like name and type. ```javascript // Create a new Thing for "book1"; Thing's URL will include the hash #book1. // Use Fluent API to add properties to the new Thing, and // build a new Thing with the properties. // Note: solid-client functions do not modify objects passed in as arguments. // Instead the functions return new objects with the modifications. const newBookThing1 = buildThing(createThing({ name: "book1" })) .addStringNoLocale("https://schema.org/name", "ABC123 of Example Literature") .addUrl(RDF.type, "https://schema.org/Book") .build(); ``` -------------------------------- ### Configure ESS Start Service with Custom Client ID Source: https://docs.inrupt.com/ess/latest/installation/customize-configurations/customization-start-apps/use-custom-start-app This YAML configuration defines a Kubernetes Deployment for the ESS start service. It sets the QUARKUS_OIDC_CLIENT_ID environment variable to a custom Solid-OIDC Client ID, enabling the use of a custom start application. This is part of the ESS installation customization process. ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: ess-start spec: template: spec: containers: - env: - name: QUARKUS_OIDC_CLIENT_ID value: https://mystart.example.com/appid/id name: ess-start ``` -------------------------------- ### User Account Provisioning Source: https://docs.inrupt.com/ess/latest/services/service-platform-management/platform-management-api This section details the process of provisioning a new user account, including creating the account, adding storage, configuring resources, and activating the account. ```APIDOC ## POST /admin/provision ### Description Creates a new user account and initiates the provisioning process, returning a session in a setup state with a WebID. ### Method POST ### Endpoint /admin/provision ### Parameters #### Request Body - **userData** (object) - Required - User data, including username. - **username** (string) - Required - The desired username for the new account. - **proof** (string) - Required - Compliance proof data. ### Request Example ```json { "userData": { "username": "johndoe" }, "proof": "compliance-proof-data" } ``` ### Response #### Success Response (200 OK) - **session** (object) - Information about the created session. - **webId** (string) - The WebID of the newly created user. ## PUT /admin/provision/{sessionId}/storage ### Description Adds a storage container to a user's session during the provisioning process. ### Method PUT ### Endpoint /admin/provision/{sessionId}/storage ### Parameters #### Path Parameters - **sessionId** (string) - Required - The ID of the session to add storage to. #### Request Body - (empty object) - No specific fields required for this operation. ### Response #### Success Response (200 OK) - **message** (string) - Confirmation that the storage container was added. ## PUT /admin/provision/{sessionId}/activate ### Description Activates a user account after provisioning is complete. This revokes Service Account access and grants the user full control. ### Method PUT ### Endpoint /admin/provision/{sessionId}/activate ### Parameters #### Path Parameters - **sessionId** (string) - Required - The ID of the session to activate. ### Response #### Success Response (200 OK) - **message** (string) - Confirmation that the account has been activated. ``` -------------------------------- ### ESS 2.6: Customize ESS Source: https://docs.inrupt.com/ess Guide to customizing the ESS installation for version 2.6. ```APIDOC ## ESS 2.6: Customize ESS ### Description This guide covers various aspects of customizing the Enterprise Solid Server (ESS) installation for version 2.6, including configuration options. ### Method N/A (Customization Guide) ### Endpoint N/A (Customization Guide) ### Parameters N/A ### Request Example N/A ### Response N/A ``` -------------------------------- ### Example Reprocessing Status Response Source: https://docs.inrupt.com/ess/latest/services/service-notification/notification-delivery-service An example JSON response for fetching the status of a reprocessing operation. It includes the operation ID, current status, start and last update timestamps, the associated subscription ID, the agent performing the action, and the action type. ```JSON { "id": "a1b2c3d4-e5f6-47g8-h9i0-j1k2l3m4n5o6", "status": "Active", "startedAt": "2025-04-10T12:00:00Z", "lastUpdatedAt": "2025-04-10T12:20:00Z", "subscription": "f8e7d6c5-b4a3-9876-5432-1fedcba98765", "agent": "https://id.example/alice", "action": "Retry" } ``` -------------------------------- ### Retrieve View Definition Request (HTTP) Source: https://docs.inrupt.com/ess/latest/services/service-pod-management/data-views-api An example HTTP GET request to retrieve a specific View Definition using its unique ID. Requires authentication headers. ```http GET /views/registry/550e8400-e29b-41d4-a716-446655440000 HTTP/1.1 Host: storage.example.com Authorization: DPoP DPoP: ``` -------------------------------- ### VIEW_RESOURCE Binding Example Response (HTTP) Source: https://docs.inrupt.com/ess/latest/services/service-pod-management/data-views-api An example HTTP response indicating successful creation of a VIEW_RESOURCE binding. It includes the location of the created view resource and details about the binding configuration. ```http HTTP/1.1 201 Created Location: https://storage.example.com/alice/shared/contact-view Content-Type: application/json { "id": "https://storage.example.com/alice/shared/contact-view", "viewResource": "https://storage.example.com/alice/shared/contact-view", "definitionUri": "https://storage.example.com/views/registry/550e8400-e29b-41d4-a716-446655440000", "sourceResource": "https://storage.example.com/alice/private/profile.json", "destinationResource": "https://storage.example.com/alice/shared/contact-view", "type": "VIEW_RESOURCE" } ``` -------------------------------- ### Authentication for Data Views API Requests Source: https://docs.inrupt.com/ess/latest/services/service-pod-management/data-views-api Specifies that all Data Views API requests require authentication using either DPoP or Bearer tokens. Provides an example of a GET request to the view registry with DPoP authentication headers. ```http GET /views/registry HTTP/1.1 Host: storage.example.com Authorization: DPoP DPoP: HTTP/1.1 200 OK ``` -------------------------------- ### Get All Resource Matchers using @inrupt/solid-client-js Source: https://docs.inrupt.com/security/authorization/acp This code retrieves all matchers from a resource's Access Control Resource (ACR) using `getResourceMatcherAll`. It provides an array of matchers for further processing. The snippet also includes an example of how to fetch a specific matcher by name. ```javascript const myResourceMatchers = acp_ess_2.getResourceMatcherAll(resourceWithAcr) // Loop through each matcher for processing. myResourceMatchers.forEach(matcher => { // ... }); const specificMatcher = acp_ess_2.getResourceMatcher( resourceWithAcr, "specify-the-name-of-matcher-to-get" ); ``` -------------------------------- ### Initialize npm Application Source: https://docs.inrupt.com/sdk/javascript-sdk/tutorial Initializes a new Node.js project using npm. It can either accept default settings or prompt the user for project configuration details. This creates a package.json file to manage project dependencies and scripts. ```shell npm init -y ``` ```shell npm init ``` -------------------------------- ### Delete File from Inrupt Wallet Source: https://docs.inrupt.com/index Deletes a file from the Inrupt Wallet. This function initializes a session and then sends a DELETE request to the specified file path. It returns a success message or throws an error if the session is not available. ```javascript async function deleteFile() { const session = await initializeAndLoginSession(); const walletContainer = "https://datawallet.inrupt.com/wallet"; const file = walletContainer + "/text.txt"; if (!session) { throw new Error("Session is undefined"); } const response = await session.fetch(file, { method: "DELETE", }); if (response.status === 200) { return "file deleted successfully"; } } ``` -------------------------------- ### Initialize and Log In to Inrupt Session Source: https://docs.inrupt.com/index Initializes a new Inrupt session and logs in using client credentials. It requires environment variables for CLIENT_ID and CLIENT_SECRET. The function returns the session object if successful, otherwise null. ```javascript async function initializeAndLoginSession() { const session = new Session(); await session.login({ clientId: process.env.CLIENT_ID, clientSecret: process.env.CLIENT_SECRET, oidcIssuer: "https://login.inrupt.com", tokenType: "Bearer", }); if (session.info.isLoggedIn && session.info.webId) { console.log("Session logged in successfully with WebID"); return session; } else { console.error("User is not logged in"); return null; } } ``` -------------------------------- ### Non-RDF Java Class Example Source: https://docs.inrupt.com/sdk/java-sdk/crud-rdf-data/modeling-rdf-data This Java code snippet shows a basic, non-RDF class named 'Expense' with private fields, a default constructor, and parameterized constructors, along with getters and setters for its properties. It serves as a starting point before converting it into an RDF resource. ```java public class Expense { private UUID _id; private Date date; private String description; // ... Additional fields public Expense() { } public Expense(date, description, //...) { this.date = date; this.description = descriptions; //... } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } // ... Additional getters/setters and other content } ``` -------------------------------- ### QPF Hypermedia Controls Example (Turtle) Source: https://docs.inrupt.com/ess/latest/services/service-query Illustrates the Hypermedia controls returned in a successful Quad Pattern Fragment (QPF) query response. It includes the search pattern template for querying data. ```turtle void:subset ; hydra:search [ hydra:mapping [ hydra:property sd:graph ; hydra:variable "graph" ] ; hydra:mapping [ hydra:property rdf:subject ; hydra:variable "subject" ] ; hydra:mapping [ hydra:property rdf:predicate ; hydra:variable "predicate" ] ; hydra:mapping [ hydra:property rdf:object ; hydra:variable "object" ] ; hydra:template "https://fragments.example.com/qpf?storage=https%3A%2F%2Fstorage.example.com%2Fa211ad26-zzzz-9999-8b20-acb3aed0e369%2F{&graph,subject,predicate,object}" ] . ``` -------------------------------- ### Kubernetes Startup Probe Configuration (YAML) Source: https://docs.inrupt.com/ess/latest/administration/health-checks Configures the startup probe for an ESS service. This probe checks if the service has successfully started by making an HTTPS GET request to the /q/health/started endpoint on port 8443. It allows Kubernetes to delay other probes until the service is fully initialized. ```yaml startupProbe: httpGet: path: /q/health/started port: 8443 scheme: HTTPS failureThreshold: 120 periodSeconds: 1 ``` -------------------------------- ### Create and Build a Thing using Fluent API (JavaScript) Source: https://docs.inrupt.com/sdk/javascript-sdk/read-and-write-rdf-data Demonstrates how to create a new Thing with a specific name and use the Fluent API (ThingBuilder) to add properties and values. This function returns a new Thing object with the modifications, rather than altering the original. ```javascript const locationThing = buildThing(createThing({ name: "location" })) .addStringNoLocale("https://schema.org/name", "Sample Lecture Hall") .addUrl(RDF.type, "https://schema.org/Place") .build(); ``` -------------------------------- ### Upload File to Inrupt Wallet Source: https://docs.inrupt.com/index Uploads a file to the Inrupt Wallet. This function first initializes a session, then reads a local file, and uploads it to a specified wallet container using a PUT request. It returns a success message or logs the response if an error occurs. ```javascript async function uploadFile() { const session = await initializeAndLoginSession(); const walletContainer = "https://datawallet.inrupt.com/wallet"; const path = "path/where/the/file/is/located" + "/text.txt"; const fileBuffer = await readFile(path); const formData = new FormData(); const file = new File([fileBuffer], path); formData.append("file", file); formData.append("fileName", fileName); const response = await session.fetch(walletContainer, { method: "PUT", body: formData, }); if (response.status === 200) { return "File uploaded successfully"; } else { console.log(response); } } ``` -------------------------------- ### Test API Endpoints with Curl (Shell) Source: https://docs.inrupt.com/sdk/java-sdk/tutorial/step4 This section provides `curl` commands to test various API endpoints of the running Spring Boot application. It includes examples for getting Pod URLs, creating, reading, updating, and deleting expense resources. Ensure you substitute placeholders like `SUBSTITUTE_YOUR_WEBID` and `your-root-container` with your actual values. ```shell curl -X GET http://localhost:8080/api/pods?webid=SUBSTITUTE_YOUR_WEBID ``` -------------------------------- ### HTTP Response Examples for Provisioning Sessions Source: https://docs.inrupt.com/ess/latest/services/service-platform-management/platform-management-api Example JSON responses from the Inrupt provisioning API. These illustrate the structure of data returned for provisioning session details, including status, storage information, and timestamps. ```json HTTP/1.1 201 Created Content-Type: application/json { "id": "a7f8b9c2-4d5e-6f7a-8b9c-1d2e3f4a5b6c", "state": "setup", "webid": [ "https://id.example.com/johndoe" ], "storage": [ "https://storage.example.com/a7f8b9c2-4d5e-6f7a-8b9c-1d2e3f4a5b6c/" ], "createdAt": "2025-01-15T10:30:00Z", "proof": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } ``` ```json HTTP/1.1 200 OK Content-Type: application/json { "id": "a7f8b9c2-4d5e-6f7a-8b9c-1d2e3f4a5b6c", "state": "setup", "webid": [ "https://id.example.com/johndoe" ], "storage": [ "https://storage.example.com/a7f8b9c2-4d5e-6f7a-8b9c-1d2e3f4a5b6c/" ], "createdAt": "2025-01-15T10:30:00Z", "proof": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } ``` ```json HTTP/1.1 200 OK Content-Type: application/json { "id": "a7f8b9c2-4d5e-6f7a-8b9c-1d2e3f4a5b6c", "state": "active", "createdAt": "2025-01-15T10:30:00Z", "activatedAt": "2025-01-15T10:45:00Z", "proof": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } ``` -------------------------------- ### ESS Start Service Endpoint Source: https://docs.inrupt.com/ess/latest/services/service-start The ESS Start Service hosts an application that serves as the starting point for the ESS user interface. This endpoint is used for user sign-up and login operations. ```APIDOC ## GET /websites/inrupt/start ### Description Provides access to the ESS Start Service application, which is the entry point for the ESS user interface. ### Method GET ### Endpoint https://start.{ESS Domain} ### Parameters None ### Request Example None ### Response #### Success Response (200) - **HTML** (string) - The HTML content of the ESS Start Service application. #### Response Example ```html ESS Start

Welcome to ESS Start

Sign up or log in to continue.

``` ```