diff --git a/spec.md b/spec.md
index 46f829d..e0941ef 100644
--- a/spec.md
+++ b/spec.md
@@ -445,29 +445,49 @@ sequenceDiagram
end
User->>Client: Requests connection to free.example.com/init
+ activate Client
Client->>Provider: Query: free.example.com/init
- Provider->>Client: Response: Initialization data
-
+ activate Provider
+ Provider-->Client: Response: Initialization data
+ deactivate Provider
+
Client->>Provider: Query: free.example.com/assets
+ activate Provider
note right of Client: The asset query URI
was included in the
initialization data
Provider->>Provider: Searches its database for assets
based on query parameters
- Provider->>Client: Response: List of assets
- Client->>User: Presents asset list
+ Provider-->Client: Response: List of assets
+ deactivate Provider
+
+ Client-->User: Presents asset list
+ deactivate Client
User->>Client: Selects asset from list
+ activate Client
+
Client->>Provider: Query: free.example.com/implementations?asset=
+ activate Provider
note right of Client: The implementations query URI and parameters
were included in the asset data
Provider->>Provider: Loads implementations
for this asset from its database
- Provider->>Client: Returns list of possible implementations
+ Provider-->Client: Returns list of possible implementations
+ deactivate Provider
+
Client->>Client: Validates proposed implementations and
selects those that it can handle
(based on metadata
about file formats and relationships)
- Client->>User: Presents implementation(s)
and asks for confirmation
+ Client-->User: Presents implementation(s)
and asks for confirmation
+ deactivate Client
User->>Client: Confirms asset import
+
loop For every component in implementation
+ activate Client
Client->>Provider: Initiates HTTP download of component file
- Provider->>Client: Transmits file
+ activate Provider
+ Provider-->Client: Transmits file
+ deactivate Provider
end
+ deactivate Client
+
Client->>Client: Processes files locally based
on implementation metadata
(usually by importing them
into the current project)
- Client->>User: Shows confirmation message
+ Client-->User: Shows confirmation message
note left of User: User can now utilize
the asset in their project.
+
```
### 3.9.2. Complete Version
@@ -487,51 +507,51 @@ sequenceDiagram
participant CDN-Service
end
- User->>Client: Requests connection to paid.example.com/init
+ User->>+Client: Requests connection to paid.example.com/init
note left of User: The provider URI might be
bookmarked in the client,
if it supports that.
- Client->>Provider: Query: paid.example.com/init
- Provider->>Client: Response: Initialization data, containing requirement for authentication
- Client->>User: Presents required headers
as a GUI/form
+ Client->>+Provider: Query: paid.example.com/init
+ Provider->>-Client: Response: Initialization data, containing requirement for authentication
+ Client->>+User: Presents required headers
as a GUI/form
note left of User: Some data
might be cached by the
client and does not need
to be re-entered.
User->>User: Fills out required header values
User->>Client: Confirms inputs of provider data.
- Client->>Provider: Query: paid.example.com/status
- Provider->>Client: Responds with status data
(Login confirmation, username, account balance, ...)
+ Client->>+Provider: Query: paid.example.com/status
+ Provider->>-Client: Responds with status data
(Login confirmation, username, account balance, ...)
User->>User: Fills out asset query
as defined by provider
(tags, categories, ...)
- User->>Client: Confirms choices and requests asset list
- Client->>Provider: Query: paid.example.com/assets?q=
+ User->>+Client: Confirms choices and requests asset list
+ Client->>+Provider: Query: paid.example.com/assets?q=
note right of Client: The asset query URI
was included in the
initialization data
Provider->>Provider: Searches its database for assets
based on query parameters
- Provider->>Client: Response: List of assets
+ Provider->>-Client: Response: List of assets
Client->>User: Presents asset list
- User->>Client: Selects asset from list
+ User->>+Client: Selects asset from list
- Client->>User: Presents available parameters
for querying implementations
as GUI/form
+ Client->>-User: Presents available parameters
for querying implementations
as GUI/form
User->>User: Fills out implementations query
(texture resolution,LOD,...)
- User->>Client: Confirms choices and
requests implementations
- Client->>Provider: Query: paid.example.com/implementations?asset=&resolution=
+ User->>+Client: Confirms choices and
requests implementations
+ Client->>+Provider: Query: paid.example.com/implementations?asset=&resolution=
note right of Client: The implementations query URI
was included in the asset data
Provider->>Provider: Loads implementations
for this asset from its database,
based on query
- Provider->>Client: Returns list of possible implementations
*without download information*
+ Provider->>-Client: Returns list of possible implementations
*without download information*
Client->>Client: Validates proposed implementations and
selects those that it can handle
(based on metadata
about file formats and relationships)
- Client->>User: Presents implementation(s)
and asks for confirmation
+ Client->>+User: Presents implementation(s)
and asks for confirmation
User->>User: Reviews suggested implementation(s)
(*price*,files, download size, etc.)
- User->>Client: Confirms asset import
+ User->>+Client: Confirms asset import
loop Possibly multiple times, depending on granularity of
provider's unlocking model
- Client->>Provider: Query: paid.example.com/unlock?asset=&component=
- Provider->>Client: Confirms the unlocking action.
+ Client->>+Provider: Query: paid.example.com/unlock?asset=&component=
+ Provider->>-Client: Confirms the unlocking action.
end
loop For every component
- Client->>Provider: Query: paid.example.com/downloads?asset=&component=
- Provider->> CDN-Service: Query: storage-api.example.com/generate-temp-dl-link?file=
- CDN-Service->>Provider: Responds with
temporary download link
- Provider->>Client: Responds with HTTP redirect to (temporary) download link
- Client->>CDN-Service: Follows HTTP redirect and initiates HTTP download of component file
- CDN-Service->>Client: Responds with file
+ Client->>+Provider: Query: paid.example.com/downloads?asset=&component=
+ Provider->>+ CDN-Service: Query: storage-api.example.com/generate-temp-dl-link?file=
+ CDN-Service->>-Provider: Responds with
temporary download link
+ Provider->>-Client: Responds with HTTP redirect to (temporary) download link
+ Client->>+CDN-Service: Follows HTTP redirect and initiates HTTP download of component file
+ CDN-Service->>-Client: Responds with file
end
Client->>Client: Processes files locally based
on implementation metadata
(usually by importing them
into the current project)