diff --git a/404.html b/404.html index 9e8cc920e..156c0495d 100644 --- a/404.html +++ b/404.html @@ -1,8 +1,8 @@ -404 Page not found - DataTrails +404 Page not found - DataTrails
\ No newline at end of file +Sign Up
\ No newline at end of file diff --git a/_redirects b/_redirects index a80d12da5..faa38df79 100644 --- a/_redirects +++ b/_redirects @@ -29,6 +29,7 @@ /docs/rkvst-basics/sharing-assets-with-obac/ /platform/administration/sharing-access-outside-your-tenant/ /platform/administration/sharing-assets-with-obac/ /platform/administration/sharing-access-outside-your-tenant/ /platform/administration/sharing-assets-outside-your-tenant/ /platform/administration/sharing-access-outside-your-tenant/ +/docs/developer-patterns/3rdparty-verification/ /developers/developer-patterns/3rdparty-verification/ /docs/beyond-the-basics/compliance-policies/ /platform/administration/compliance-policies/ ../quickstart/grouping-assets-by-location /platform/administration/grouping-assets-by-location/ /docs/rkvst-basics/grouping-assets-by-location/ /platform/administration/grouping-assets-by-location/ diff --git a/contributors/index.html b/contributors/index.html index 751d9f51f..b44e732ad 100644 --- a/contributors/index.html +++ b/contributors/index.html @@ -1,8 +1,8 @@ -Contributors - DataTrails +Contributors - DataTrails

Contributors

\ No newline at end of file +Sign Up

Contributors

\ No newline at end of file diff --git a/developers/api-reference/app-registrations-api/index.html b/developers/api-reference/app-registrations-api/index.html index 7b9251048..692085781 100644 --- a/developers/api-reference/app-registrations-api/index.html +++ b/developers/api-reference/app-registrations-api/index.html @@ -1,4 +1,4 @@ -App Registrations API - DataTrails +App Registrations API - DataTrails

App Registrations API

App Registrations API Reference

Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our @@ -137,7 +137,7 @@ ], "next_page_token": "eyJvcmlnX3JlcSI6eyJwYWdlX3NpemUiOjJ9LCJza2lwIjoyfQ==" }

Response ParameterTypeDescription
applicationsarrayDescribes a single application used for machine authentication
next_page_tokenstringPagination token. Empty on first request. On subsequent requests copied from response.
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized.
429Returned when a user exceeds their subscription’s rate limit for requests.

post  /archivist/iam/v1/applications/archivist/iam/v1/applications

Registers a new application

Description: Registers a new application, generating a client ID and secret for use in machine authentication. Regenerates the client secret for the application matching the supplied UUID. The response will include the client secret, but it will not be possible to retrieve it afterwards.

null
ParameterTypeDescription
custom_claimsobjectCustom claims to add to Application for use in access policies.
display_namestringHuman-readable display name for this Application.

null
ParameterTypeDescription
custom_claimsobjectCustom claims to add to Application for use in access policies.
display_namestringHuman-readable display name for this Application.
rolesarray

{
   "client_id": "ffaa0f30-a503-4de7-b085-d857ed34a7cd",
   "credentials": [
@@ -153,7 +153,7 @@
   "display_name": "test",
   "identity": "applications/ffaa0f30-a503-4de7-b085-d857ed34a7cd",
   "tenant_id": "tenant/fafb2d41-5237-45c7-9740-66d1635f549b"
-}
Response ParameterTypeDescription
client_idstringClient ID for use in OIDC client credentials flow
credentialsarrayDescribes a single time-limited secret
custom_claimsobjectCustom claims to add to Application for use in access policies.
display_namestringHuman-readable display name for this Application.
identitystringResource name for the application
tenant_idstringIdentity of the tenant owning this application
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
402Returned when the user’s quota of app registrations policies has been reached.
403Returned when the user is not authorized.
429Returned when a user exceeds their subscription’s rate limit for requests.

delete  /archivist/iam/v1/applications/archivist/iam/v1/applications/{uuid}

Delete an application

Description: Deletes the application matching the supplied UUID

ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized.
404Returned when the Application does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

get  /archivist/iam/v1/applications/archivist/iam/v1/applications/{uuid}

Fetch an application record

Description: Fetches the application record for the supplied UUID

Response ParameterTypeDescription
client_idstringClient ID for use in OIDC client credentials flow
credentialsarrayDescribes a single time-limited secret
custom_claimsobjectCustom claims to add to Application for use in access policies.
display_namestringHuman-readable display name for this Application.
identitystringResource name for the application
rolesarray
tenant_idstringIdentity of the tenant owning this application
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
402Returned when the user’s quota of app registrations policies has been reached.
403Returned when the user is not authorized.
429Returned when a user exceeds their subscription’s rate limit for requests.

delete  /archivist/iam/v1/applications/archivist/iam/v1/applications/{uuid}

Delete an application

Description: Deletes the application matching the supplied UUID

ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized.
404Returned when the Application does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

get  /archivist/iam/v1/applications/archivist/iam/v1/applications/{uuid}

Fetch an application record

Description: Fetches the application record for the supplied UUID

{
   "client_id": "ffaa0f30-a503-4de7-b085-d857ed34a7cd",
   "credentials": [
@@ -169,7 +169,7 @@
   "display_name": "test",
   "identity": "applications/ffaa0f30-a503-4de7-b085-d857ed34a7cd",
   "tenant_id": "tenant/fafb2d41-5237-45c7-9740-66d1635f549b"
-}
Response ParameterTypeDescription
client_idstringClient ID for use in OIDC client credentials flow
credentialsarrayDescribes a single time-limited secret
custom_claimsobjectCustom claims to add to Application for use in access policies.
display_namestringHuman-readable display name for this Application.
identitystringResource name for the application
tenant_idstringIdentity of the tenant owning this application
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized.
404Returned when the Application does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

patch  /archivist/iam/v1/applications/archivist/iam/v1/applications/{uuid}

Update an existing application

Description: Allows updating of the display name and custom claims for an application

Response ParameterTypeDescription
client_idstringClient ID for use in OIDC client credentials flow
credentialsarrayDescribes a single time-limited secret
custom_claimsobjectCustom claims to add to Application for use in access policies.
display_namestringHuman-readable display name for this Application.
identitystringResource name for the application
rolesarray
tenant_idstringIdentity of the tenant owning this application
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized.
404Returned when the Application does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

patch  /archivist/iam/v1/applications/archivist/iam/v1/applications/{uuid}

Update an existing application

Description: Allows updating of the display name and custom claims for an application

{
   "client_id": "ffaa0f30-a503-4de7-b085-d857ed34a7cd",
   "credentials": [
@@ -185,7 +185,7 @@
   "display_name": "test",
   "identity": "applications/ffaa0f30-a503-4de7-b085-d857ed34a7cd",
   "tenant_id": "tenant/fafb2d41-5237-45c7-9740-66d1635f549b"
-}
Response ParameterTypeDescription
client_idstringClient ID for use in OIDC client credentials flow
credentialsarrayDescribes a single time-limited secret
custom_claimsobjectCustom claims to add to Application for use in access policies.
display_namestringHuman-readable display name for this Application.
identitystringResource name for the application
tenant_idstringIdentity of the tenant owning this application
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized.
404Returned when the Application does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

post  /archivist/iam/v1/applications/archivist/iam/v1/applications/{uuid}:regenerate-secret

Regenerate the client secret for an application

Description: Regenerates the client secret for the application matching the supplied UUID. The response will include the client secret, but it will not be possible to retrieve it afterwards.

Response ParameterTypeDescription
client_idstringClient ID for use in OIDC client credentials flow
credentialsarrayDescribes a single time-limited secret
custom_claimsobjectCustom claims to add to Application for use in access policies.
display_namestringHuman-readable display name for this Application.
identitystringResource name for the application
rolesarray
tenant_idstringIdentity of the tenant owning this application
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized.
404Returned when the Application does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

post  /archivist/iam/v1/applications/archivist/iam/v1/applications/{uuid}:regenerate-secret

Regenerate the client secret for an application

Description: Regenerates the client secret for the application matching the supplied UUID. The response will include the client secret, but it will not be possible to retrieve it afterwards.

{
   "client_id": "ffaa0f30-a503-4de7-b085-d857ed34a7cd",
   "credentials": [
@@ -201,4 +201,4 @@
   "display_name": "test",
   "identity": "applications/ffaa0f30-a503-4de7-b085-d857ed34a7cd",
   "tenant_id": "tenant/fafb2d41-5237-45c7-9740-66d1635f549b"
-}
Response ParameterTypeDescription
client_idstringClient ID for use in OIDC client credentials flow
credentialsarrayDescribes a single time-limited secret
custom_claimsobjectCustom claims to add to Application for use in access policies.
display_namestringHuman-readable display name for this Application.
identitystringResource name for the application
tenant_idstringIdentity of the tenant owning this application
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized.
404Returned when the Application does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

← Massif blob pre-calculated offsets
Assets API →
\ No newline at end of file +}
Response ParameterTypeDescription
client_idstringClient ID for use in OIDC client credentials flow
credentialsarrayDescribes a single time-limited secret
custom_claimsobjectCustom claims to add to Application for use in access policies.
display_namestringHuman-readable display name for this Application.
identitystringResource name for the application
rolesarray
tenant_idstringIdentity of the tenant owning this application
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized.
404Returned when the Application does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

← Verified Replication of the Datatrails Transparency Logs
Assets API →
\ No newline at end of file diff --git a/developers/api-reference/assets-api/index.html b/developers/api-reference/assets-api/index.html index 0fb375d71..371801cd8 100644 --- a/developers/api-reference/assets-api/index.html +++ b/developers/api-reference/assets-api/index.html @@ -1,4 +1,4 @@ -Assets API - DataTrails +Assets API - DataTrails
Response ParameterTypeDescription
asset_attributesobjectkey value mapping of asset attributes
asset_identitystringidentity of a related asset resource assets/11bf5b37-e0b8-42e0-8dcf-dc8c4aefc000
behaviourstringThe behaviour used to create event. RecordEvidence
block_numberstringnumber of block event was commited on
confirmation_statusstringindicates if the event has been succesfully committed to the blockchain
event_attributesobjectkey value mapping of event attributes
fromstringwallet address for the creator of this event
identitystringidentity of a event resource
merklelog_entryobjectverifiable merkle mmr log entry details
operationstringThe operation represented by the event. Record
principal_acceptedobjectprincipal recorded by the server
principal_declaredobjectprincipal provided by the user
tenant_identitystringIdentity of the tenant the that created this event
timestamp_acceptedstringtime of event as recorded by the server
timestamp_committedstringtime of event as recorded in verifiable storage
timestamp_declaredstringtime of event as declared by the user
transaction_idstringhash of the transaction as a hex string 0x11bf5b37e0b842e08dcfdc8c4aefc000
transaction_indexstringindex of event within commited block
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
402Returned when the user’s quota of Events has been reached.
429Returned when a user exceeds their subscription’s rate limit for requests.

get  /archivist/v2/assets/archivist/v2/assets/{uuid}:publicurl

Retrieves the Asset public url

Description: Retrieves the public url for a specific Asset.

{
   "publicurl": "https://app.datatrails.ai/archivist/v2/publicassets/add30235-1424-4fda-840a-d5ef82c4c96f"
-}
Response ParameterTypeDescription
publicurlstring
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to view an Asset.
404Returned when the asset with the id does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

← App Registrations API
Attachments API →
\ No newline at end of file +}
Response ParameterTypeDescription
publicurlstring
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to view an Asset.
404Returned when the asset with the id does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

← App Registrations API
Attachments API →
\ No newline at end of file diff --git a/developers/api-reference/attachments-api/index.html b/developers/api-reference/attachments-api/index.html index 11f38a117..808cc7ebc 100644 --- a/developers/api-reference/attachments-api/index.html +++ b/developers/api-reference/attachments-api/index.html @@ -1,4 +1,4 @@ -Attachments API - DataTrails +Attachments API - DataTrails

Attachments API

Attachments API Reference

Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our @@ -103,4 +103,4 @@ "subject": "user-xxxx@example.com", "tenantid": "tenant/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "timestamp_accepted": "2019-11-07T15:31:49Z" -}

Response ParameterTypeDescription
hashblob hash.
identitystringblob identity.
issuerstringprincipal issuer.
mime_typestringhttp mime type.
scanned_bad_reasonstringif scanned as SCANNED_BAD contains a hint of scan result.
scanned_statusstringstatus of scan.
scanned_timestampstringdate and time when the attachments has been scanned.
sizeintegersize of the blob.
subjectstringprincipal subject.
tenantidstringidentity of the tenant the blob belongs to.
timestamp_acceptedstringdate and time when the request has been received.
ResponsesDescription
200A successful response.
400Returned when the request is badly formed.
404Returned when the underlying system can’t find the asset.

← Assets API
Blobs API →
\ No newline at end of file +}
Response ParameterTypeDescription
hashblob hash.
identitystringblob identity.
issuerstringprincipal issuer.
mime_typestringhttp mime type.
scanned_bad_reasonstringif scanned as SCANNED_BAD contains a hint of scan result.
scanned_statusstringstatus of scan.
scanned_timestampstringdate and time when the attachments has been scanned.
sizeintegersize of the blob.
subjectstringprincipal subject.
tenantidstringidentity of the tenant the blob belongs to.
timestamp_acceptedstringdate and time when the request has been received.
ResponsesDescription
200A successful response.
400Returned when the request is badly formed.
404Returned when the underlying system can’t find the asset.

← Assets API
Blobs API →
\ No newline at end of file diff --git a/developers/api-reference/blobs-api/index.html b/developers/api-reference/blobs-api/index.html index b9639d25e..2f35a1b96 100644 --- a/developers/api-reference/blobs-api/index.html +++ b/developers/api-reference/blobs-api/index.html @@ -1,4 +1,4 @@ -Blobs API - DataTrails +Blobs API - DataTrails
Response ParameterTypeDescription
hashblob hash.
identitystringblob identity.
issuerstringprincipal issuer.
mime_typestringhttp mime type.
scanned_bad_reasonstringif scanned as SCANNED_BAD contains a hint of scan result.
scanned_statusstringstatus of scan.
scanned_timestampstringdate and time when the attachments has been scanned.
sizeintegersize of the blob.
subjectstringprincipal subject.
tenantidstringidentity of the tenant the blob belongs to.
timestamp_acceptedstringdate and time when the request has been received.
ResponsesDescription
200A successful response.
400Returned when the request is badly formed.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to get the blob metadata.
429Returned when a user exceeds their subscription’s rate limit for requests.
500Returned when the underlying system returns an error.

← Attachments API
Compliance API →
\ No newline at end of file +}
Response ParameterTypeDescription
hashblob hash.
identitystringblob identity.
issuerstringprincipal issuer.
mime_typestringhttp mime type.
scanned_bad_reasonstringif scanned as SCANNED_BAD contains a hint of scan result.
scanned_statusstringstatus of scan.
scanned_timestampstringdate and time when the attachments has been scanned.
sizeintegersize of the blob.
subjectstringprincipal subject.
tenantidstringidentity of the tenant the blob belongs to.
timestamp_acceptedstringdate and time when the request has been received.
ResponsesDescription
200A successful response.
400Returned when the request is badly formed.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to get the blob metadata.
429Returned when a user exceeds their subscription’s rate limit for requests.
500Returned when the underlying system returns an error.

← Attachments API
Compliance API →
\ No newline at end of file diff --git a/developers/api-reference/caps-api/index.html b/developers/api-reference/caps-api/index.html index 6cc44a94c..f746be300 100644 --- a/developers/api-reference/caps-api/index.html +++ b/developers/api-reference/caps-api/index.html @@ -1,4 +1,4 @@ -Caps API - DataTrails +Caps API - DataTrails

Caps API

Caps API Reference

Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our @@ -24,4 +24,4 @@ } ] } -

These are the available values for “?service=”:

  • access_policies
  • applications
  • assets
  • blobs
  • compliance_policies
  • locations
  • tenancies/users

Caps OpenAPI Docs

API providing caps data for DataTrails APIs

get  /archivist/v1/caps/archivist/v1/caps

Returns caps for the given resource

Description: Returns caps for the given resource

ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to access the resource.
429Returned when a user exceeds their subscription’s rate limit for requests.

\ No newline at end of file +

These are the available values for “?service=”:

Caps OpenAPI Docs

API providing caps data for DataTrails APIs

get  /archivist/v1/caps/archivist/v1/caps

Returns caps for the given resource

Description: Returns caps for the given resource

ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to access the resource.
429Returned when a user exceeds their subscription’s rate limit for requests.

← Estate Information YAML Runner
\ No newline at end of file diff --git a/developers/api-reference/compliance-api/index.html b/developers/api-reference/compliance-api/index.html index 44c2c87b0..87026cae2 100644 --- a/developers/api-reference/compliance-api/index.html +++ b/developers/api-reference/compliance-api/index.html @@ -1,4 +1,4 @@ -Compliance API - DataTrails +Compliance API - DataTrails

Compliance API

Compliance API Reference

Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our @@ -193,4 +193,4 @@ "event_display_type": "Maintenance Performed", "identity": "compliance_policies/463fab3a-bae5-4349-8f76-f6454da20c9d", "time_period_seconds": 86800 -}

Response ParameterTypeDescription
asset_filterarrayFilter
closing_event_display_typestring
compliance_type
descriptionstring
display_namestring
dynamic_variabilitynumber
dynamic_windowstring
event_display_typestring
identitystring
richness_assertionsarrayFilter
time_period_secondsstring
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to access the requested resource.
404Returned when the asset with the id does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

← Blobs API
Events API →
\ No newline at end of file +}
Response ParameterTypeDescription
asset_filterarrayFilter
closing_event_display_typestring
compliance_type
descriptionstring
display_namestring
dynamic_variabilitynumber
dynamic_windowstring
event_display_typestring
identitystring
richness_assertionsarrayFilter
time_period_secondsstring
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to access the requested resource.
404Returned when the asset with the id does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

← Blobs API
Events API →
\ No newline at end of file diff --git a/developers/api-reference/events-api/index.html b/developers/api-reference/events-api/index.html index 8600fe2c4..e11816e17 100644 --- a/developers/api-reference/events-api/index.html +++ b/developers/api-reference/events-api/index.html @@ -1,4 +1,4 @@ -Events API - DataTrails +Events API - DataTrails
Response ParameterTypeDescription
asset_attributesobjectkey value mapping of asset attributes
asset_identitystringidentity of a related asset resource assets/11bf5b37-e0b8-42e0-8dcf-dc8c4aefc000
behaviourstringThe behaviour used to create event. RecordEvidence
block_numberstringnumber of block event was commited on
confirmation_statusstringindicates if the event has been succesfully committed to the blockchain
event_attributesobjectkey value mapping of event attributes
fromstringwallet address for the creator of this event
identitystringidentity of a event resource
merklelog_entryobjectverifiable merkle mmr log entry details
operationstringThe operation represented by the event. Record
principal_acceptedobjectprincipal recorded by the server
principal_declaredobjectprincipal provided by the user
tenant_identitystringIdentity of the tenant the that created this event
timestamp_acceptedstringtime of event as recorded by the server
timestamp_committedstringtime of event as recorded in verifiable storage
timestamp_declaredstringtime of event as declared by the user
transaction_idstringhash of the transaction as a hex string 0x11bf5b37e0b842e08dcfdc8c4aefc000
transaction_indexstringindex of event within commited block
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
402Returned when the user’s quota of Events has been reached.
429Returned when a user exceeds their subscription’s rate limit for requests.

get  /archivist/v2/assets/archivist/v2/assets/{uuid}:publicurl

Retrieves the Asset public url

Description: Retrieves the public url for a specific Asset.

{
   "publicurl": "https://app.datatrails.ai/archivist/v2/publicassets/add30235-1424-4fda-840a-d5ef82c4c96f"
-}
Response ParameterTypeDescription
publicurlstring
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to view an Asset.
404Returned when the asset with the id does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

← Compliance API
IAM Policies API →
\ No newline at end of file +}
Response ParameterTypeDescription
publicurlstring
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to view an Asset.
404Returned when the asset with the id does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

← Compliance API
IAM Policies API →
\ No newline at end of file diff --git a/developers/api-reference/iam-policies-api/index.html b/developers/api-reference/iam-policies-api/index.html index 83f0ab491..97db83b82 100644 --- a/developers/api-reference/iam-policies-api/index.html +++ b/developers/api-reference/iam-policies-api/index.html @@ -1,4 +1,4 @@ -IAM Policies API - DataTrails +IAM Policies API - DataTrails

IAM Policies API

IAM Policies API Reference

Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our @@ -636,4 +636,4 @@ } ], "page_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6InN0dW50aWR" -}

Response ParameterTypeDescription
access_policiesarrayDescribes an Access Policy for OBAC
next_page_tokenstringToken to retrieve the next page of results or empty if there are none.
ResponsesDescription
200A successful response.
400Returned when the request is badly formed.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to list the access policy.
404Returned when the identified access policy does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.
500Returned when the underlying storage system returns an error.

← Events API
IAM Subjects API →
\ No newline at end of file +}
Response ParameterTypeDescription
access_policiesarrayDescribes an Access Policy for OBAC
next_page_tokenstringToken to retrieve the next page of results or empty if there are none.
ResponsesDescription
200A successful response.
400Returned when the request is badly formed.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to list the access policy.
404Returned when the identified access policy does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.
500Returned when the underlying storage system returns an error.

← Events API
IAM Subjects API →
\ No newline at end of file diff --git a/developers/api-reference/iam-subjects-api/index.html b/developers/api-reference/iam-subjects-api/index.html index 0e700d0b2..2ebe8dd62 100644 --- a/developers/api-reference/iam-subjects-api/index.html +++ b/developers/api-reference/iam-subjects-api/index.html @@ -1,4 +1,4 @@ -IAM Subjects API - DataTrails +IAM Subjects API - DataTrails

IAM Subjects API

IAM Subjects API Reference

Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our @@ -160,4 +160,4 @@ "wallet_pub_key": [ "key1" ] -}

Response ParameterTypeDescription
confirmation_status
display_namestringCustomer friendly name for the subject.
identitystringUnique identification for the subject, Relative Resource Name
tenantstringTenent id
tessera_pub_keyarrayOrganisation’s tessara wallet keys (BNF)
wallet_addressarrayOrganisation’s wallet addresses
wallet_pub_keyarrayOrganisation’s public wallet keys (BNF)
ResponsesDescription
200A successful response.
400Returned when the request is badly formed.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to update the subject.
404Returned when the identified subject does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.
500Returned when the underlying storage system returns an error.

← IAM Policies API
Quickstart: SCITT Statements (Preview) →
\ No newline at end of file +}
Response ParameterTypeDescription
confirmation_status
display_namestringCustomer friendly name for the subject.
identitystringUnique identification for the subject, Relative Resource Name
tenantstringTenent id
tessera_pub_keyarrayOrganisation’s tessara wallet keys (BNF)
wallet_addressarrayOrganisation’s wallet addresses
wallet_pub_keyarrayOrganisation’s public wallet keys (BNF)
ResponsesDescription
200A successful response.
400Returned when the request is badly formed.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to update the subject.
404Returned when the identified subject does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.
500Returned when the underlying storage system returns an error.

← IAM Policies API
Quickstart: SCITT Statements (Preview) →
\ No newline at end of file diff --git a/developers/api-reference/index.html b/developers/api-reference/index.html index 01834260b..98626e44a 100644 --- a/developers/api-reference/index.html +++ b/developers/api-reference/index.html @@ -1,8 +1,8 @@ -API Reference - DataTrails +API Reference - DataTrails
\ No newline at end of file +Sign Up
\ No newline at end of file diff --git a/developers/api-reference/locations-api/index.html b/developers/api-reference/locations-api/index.html index 6168c001c..a16cdc9c5 100644 --- a/developers/api-reference/locations-api/index.html +++ b/developers/api-reference/locations-api/index.html @@ -1,4 +1,4 @@ -Locations API - DataTrails +Locations API - DataTrails
Response ParameterTypeDescription
location_identitystringThe location identity in the form: locations/{uuid}
permissionsSubject identities this location is shared with
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to access permissions for the location.
404Returned when the identified location does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

← Quickstart: SCITT Statements (Preview)
Public Assets API →
\ No newline at end of file +}
Response ParameterTypeDescription
location_identitystringThe location identity in the form: locations/{uuid}
permissionsSubject identities this location is shared with
ResponsesDescription
200A successful response.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to access permissions for the location.
404Returned when the identified location does not exist.
429Returned when a user exceeds their subscription’s rate limit for requests.

← Quickstart: SCITT Statements (Preview)
Public Assets API →
\ No newline at end of file diff --git a/developers/api-reference/public-assets-api/index.html b/developers/api-reference/public-assets-api/index.html index 333129c00..e2d896788 100644 --- a/developers/api-reference/public-assets-api/index.html +++ b/developers/api-reference/public-assets-api/index.html @@ -1,4 +1,4 @@ -Public Assets API - DataTrails +Public Assets API - DataTrails

Public Assets API

Public Assets API Reference

Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our @@ -274,4 +274,4 @@ } ], "next_page_token": "abcd" -}

Response ParameterTypeDescription
eventsarrayThis describes an Event.
next_page_tokenstringToken to retrieve the next page of results or empty if there are none.
ResponsesDescription
200A successful response.
206The number of events exceeds the servers limit. The approximate number of matching results is provided by the x-total-count header, the exact limit is available in the content-range header. The value format is ‘items 0-LIMIT/TOTAL’. Note that x-total-count is always present for 200 and 206 responses. It is the servers best available approximation. Similarly, in any result set, you may get a few more than LIMIT items.

← Locations API
Tenancies API →
\ No newline at end of file +}
Response ParameterTypeDescription
eventsarrayThis describes an Event.
next_page_tokenstringToken to retrieve the next page of results or empty if there are none.
ResponsesDescription
200A successful response.
206The number of events exceeds the servers limit. The approximate number of matching results is provided by the x-total-count header, the exact limit is available in the content-range header. The value format is ‘items 0-LIMIT/TOTAL’. Note that x-total-count is always present for 200 and 206 responses. It is the servers best available approximation. Similarly, in any result set, you may get a few more than LIMIT items.

← Locations API
Tenancies API →
\ No newline at end of file diff --git a/developers/api-reference/tenancies-api/index.html b/developers/api-reference/tenancies-api/index.html index 8c94fd0c0..ba2b9fe38 100644 --- a/developers/api-reference/tenancies-api/index.html +++ b/developers/api-reference/tenancies-api/index.html @@ -1,4 +1,4 @@ -Tenancies API - DataTrails +Tenancies API - DataTrails
Response ParameterTypeDescription
next_page_tokenstringToken to retrieve the next page of results or empty if there are none.
tenantsarrayTenant information for a user.
ResponsesDescription
200A successful response.
400Returned when the request is badly formed.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to read the user.
404Returned when the identified user don’t exist.
500Returned when the underlying storage system returns an error.

← Public Assets API
YAML Runner Components →
\ No newline at end of file +}
Response ParameterTypeDescription
next_page_tokenstringToken to retrieve the next page of results or empty if there are none.
tenantsarrayTenant information for a user.
ResponsesDescription
200A successful response.
400Returned when the request is badly formed.
401Returned when the user is not authenticated to the system.
403Returned when the user is not authorized to read the user.
404Returned when the identified user don’t exist.
500Returned when the underlying storage system returns an error.

← Public Assets API
YAML Runner Components →
\ No newline at end of file diff --git a/developers/developer-patterns/3rdparty-verification/index.html b/developers/developer-patterns/3rdparty-verification/index.html new file mode 100644 index 000000000..46fd51c46 --- /dev/null +++ b/developers/developer-patterns/3rdparty-verification/index.html @@ -0,0 +1,113 @@ +Verified Replication of the Datatrails Transparency Logs - DataTrails +

Verified Replication of the Datatrails Transparency Logs

Trust in DataTrails is not required, instead easily maintain a verified replica of a merkle log

Introduction

Without the measures described in this article, it is still extremely challenging to compromise a transparency solution based on DataTrails.

To do so, the systems of more than just DataTrails need to be compromised in very specific ways. +To illustrate this, consider this typical flow for how Data can be used in a transparent and tamper evident way with DataTrails.

Replicated Transparency Logs

This is already a very robust process. For this process to fail, the following steps must all be accomplished:

  1. The source of the Data, which may not be the Owner, must be compromised to substitute the malicious Data.
  2. Owner authentication of the Data, such as adding a signed digest in the metadata, must be compromised.
  3. The DataTrails SaaS database must be compromised.
  4. The DataTrails ledger must be compromised and re-built and re-signed.

Executing such an attack successfully would require significant effort and infiltration of both the Data source and DataTrails. +Nonetheless, for use-cases where even this small degree of trust in DataTrails is un-acceptable, the recipes in this article ensure the following guarantees are fully independent of DataTrails:

  1. The guarantee of non-falsifiability: Event data can not be falsified.
  2. The guarantee of non-repudiation: Event data can not be removed from the record (ie ‘shredded’ or deleted).
  3. The guarantee of provability: Event data held here and now can be proven to be identical to the data created there and then (creating these proofs does not require the original event data).
  4. The guarantee of demonstrable completeness: Series of events (trails), can be proven to be complete with no gaps or omissions.

These guarantees are “fail safe” against regular data corruption of the log data. +In the event of individual log entry corruption, verification checks would fail for that entry.

All modifications to the ledger which result in provable changes can be detected without a fully auditable replica. +By maintaining a fully auditable replica, continued verifiable operation is possible even if DataTrails is prevented from operating. +To provide this capability, checking that all metadata is exactly as was originally recorded, A copy of the metadata must also be replicated. +In cases where this capability is required, data retention remains manageable and has completely predictable storage requirements. +The log format makes it operational very simple to discard data that ceases to be interesting.

The metadata is returned to the Owner when the event is recorded and is available from the regular API endpoints to any other authorized party. +Obtaining the returned metadata is not covered in this article.

Replication Recipes

Environment Configuration for Veracity

The following recipes make use of these environment:

# DataTrails Public Tenant
+export PUBLIC_TENANT="tenant/6ea5cd00-c711-3649-6914-7b125928bbb4"
+
+# Synsation Demo Tenant
+# Replace TENANT with your Tenant ID to view your Tenant logs and events
+export TENANT="tenant/6a009b40-eb55-4159-81f0-69024f89f53c"
+

Maintaining a Tamper Evident Log Replica

Based on a window of assurance, a replica may be maintained with one command, once a week.

A guarantee that actions are only taken on verified data can be achieved by running the following command once a week:

veracity watch --horizon 180h | \
+  veracity \
+  replicate-logs --replicadir merklelogs
+

Run the following to see what was replicated:

find merklelogs -type f
+

Generates output similar to:

merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000001.log
+merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000000.log
+merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000000.sth
+merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000001.sth
+

A sensible value for --horizon is just a little (hours is more than enough) longer than the interval between updates. +To miss an update for a tenant, more than 16,000 events would need to be recorded in the interval.

Larger time horizons may trigger rate limiting

Initializing a Replica for All Tenants

If a replica of all DataTrails tenants is required, run the previous command with a very long horizon.

veracity watch --horizon 90000h | \
+  veracity \
+  replicate-logs --replicadir merklelogs
+

Having done this once, you should revert to using a horizon that is just a little longer than your update interval.

Limiting the Replica to Specific Tenants

The previous command will replicate the logs of all tenants. +This requires about 3.5 megabytes per 16,000 events.

To restrict a replica to a specific set of tenants, specify those tenants to the watch command.

A common requirement is the public attestation tenant and your own tenant, to accomplish this set $TENANT accordingly and run the following once a week.

veracity --tenant "$PUBLIC_TENANT,$TENANT" watch --horizon 180h | \
+  veracity \
+  replicate-logs --replicadir merklelogs
+

To initialize the replica, run the same command once but using an appropriately large --horizon

The remainder of this article discusses the commands replicate-logs and watch in more depth, covering how to replicate selective tenants, explaining the significance of the replicated materials.

How Veracity Supports Integrity and Inclusion Protection

DataTrail’s log format makes it simple to retain only the portions (massifs) of the log that are interesting. +Discarding un-interesting portions does not affect the independence or verifiability of the retained log.

See +Independently verifying DataTrails transparent merkle logs for a general introduction to veracity.

This diagram illustrates the logical flow when updating a local replica using veracity.


--- +config: +theme: classic +--- +sequenceDiagram +actor v as Verifier +box Runs locally to the verifier +participant V as Veracity +participant R as Replica +end +participant D as DataTrails +v -->> V: Safely update my replica to massif X please +V ->> D: Fetch and verify the remote massifs and seals up to X +V ->> R: Check the verified remote data is consistent with the replica +V ->> R: Update the replica with verified additions +V -->> v: All OK!

For the guarantees of non-falsifiability and non-repudiation to be independent of DataTrails, replication and verification of at least the most recently updated massif is necessary. +The replica must be updated often enough to capture all massifs. +As a massif, in the default tenant configuration, contains over 16,000 events, the frequency necessary to support this guarantee is both low, and completely determined by the specific tenant of interest.

Massifs verifying events that are no longer interesting can be safely discarded. +Remembering that the order that events were recorded matches the order of data in the log, it is usually the case that all massifs before a certain point can be discarded together.

Saving the API response data when events are recoded, or obtaining the metadata using the DataTrails events API is additionally required in order to support a full audit for data corruption.

When a a trusted local copy of the verifiable log is included in the “verify before use” process, it is reasonable to rely on DataTrails storage of the metadata. +If the DataTrails storage of the metadata is changed, the verification will “fail safe” against the local replicated log because the changed data will not verify against the local replica. +While this is a “false negative”, it ensures safety in the face of accidental or malicious damage to the DataTrails storage systems without the burden of maintaining copies of the metadata recorded in DataTrails. +Once the unsafe action is blocked, it is very use-case dependent what the appropriate next steps are. The common thread is that is critical that the action must be blocked in the first instance.

When the metadata is fetched, if it can be verified against the log replica, it proves that the DataTrails storage remains correct. +If it does not verify, it is proven that the metadata held by DataTrails is incorrect, though the Data being processed by the Consumer may still be correct and safe.

The veracity replicate-logs and watch are used to maintain the replica of the verifiable log.

  • veracity watch is used to give notice of which tenants have updates to their logs that need to be considered for replication.
  • veracity replicate-logs performs the activities in the diagram above. It can be directed to examine a specific tenant, or it can be provided with the output of veracity watch

Updating the Currently Open Massif

Every DataTrails log is a series of one or more massifs. +The last, called the head, is where verification data for new events are recorded. +Once the head is full, a new head automatically starts.

This means there are 3 basic scenarios veracity copes with when updating a replica.

  1. Updating the currently open replicated massif with the new additions in the DataTrails open massif.
  2. Replicating the start of a new open massif from DataTrails.
  3. Replicating a limited number of new massifs from DataTrails, performing local consistency checks only if the replicated massifs follow the latest local massif.

The first is the simplest to understand. In the diagram below the dashed boxes correspond to the open massifs.

The local replica of the open massif will always be equal or less in size than the remote. +Once veracity verifies the remote copy is consistent with the remote seal, it will then check the new data copied from the remote is consistent with its local copy of the open massif. +Consistent simply means it is an append, and that the remote has not “dropped” anything that it contained the last time it was replicated.

If there is any discrepancy in any of these checks, the current local data is left unchanged.

Replicating Transparency Logs with Veracity

Replicating the Next Open Massif

The local replica starts out only having Massifs 0 & 1. +And 1 happens to be complete. +On the next event recorded by DataTrails, a new remote massif, Massif 2, is created. +More events may be recorded before the replica is updated. +Each massif contains verification data for a little over 16,000 events. +Provided the replication commands are run before Massif 2 is also filled, we are dealing with this case.

The local Massif 1 is read because, before copying the remote Massif 2 into the local replica, its consistency against both the remote seal and the previous local massif, Massif 1, are checked.

Once those checks are successfully made, the local replica gains its initial copy of Massif 2.

Replicating The Next Open Massif with Veracity

Replicating, but Leaving a Gap

By default, veracity will fetch and verify all massifs, up to the requested, that follow on immediately after the most recent local massif. +In this case, where we request --massif 4 the default would be to fetch, verify and replicate Massifs 2, 3 & 4.

By default, a full tenant log is replicated. +The storage requirements are roughly 4mb per massif, and each massif has the verification data for about 16,000 events.

To provide a means to bound the size of the local replica and also to bound the amount of work, we provide the --ancestors option. +This specifies a fixed limit on the number of massifs that will be fetched. +In this example, the limit is 0, meaning massif 4 is fetched and verified, and we leave a gap between the local massifs 2 & the new local massif 4. +The gap means the consistency of the remote massif 4 is not checked against the local replica.

The command veracity replicate-logs --ancestors 0 --massif 4 requests that massif 4 is verified and then replicated locally, but prevents it from being verified for consistency against the current local replica.

Replicating The With Gaps

Replicating the Log for the Public Tenant

For illustration, we take a more detailed look at using watch and replicate-logs to replicate the public tenant verifiable log data.

veracity --tenant $PUBLIC_TENANT watch
+

Generates output similar to:

[
+  {
+    "massifindex": 1,
+    "tenant": "tenant/6ea5cd00-c711-3649-6914-7b125928bbb4",
+    "idcommitted": "0191c424e62d04b300",
+    "idconfirmed": "0191c424e62d04b300",
+    "lastmodified": "2024-09-05T21:43:58Z",
+    "massif": "v1/mmrs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000001.log",
+    "seal": "v1/mmrs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000001.sth"
+  }
+]
+

If instead you get:

error: no changes found
+

There has been no activity in any tenant for the default watch horizon (how far back we look for changes).

To set an explicit, and in this example very large, horizon try the following:

veracity watch --horizon 10000h
+

The watch command is used to determine the massifindex, even when you are only interested in a single tenant. +You then provide that index to the replicate-logs command using the --massif option:

veracity \
+    --tenant $PUBLIC_TENANT \
+    replicate-logs --massif 1 \
+    --replicadir merklelogs
+
+find merklelogs -type f
+

Generates output similar to:

merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000001.log
+merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000000.log
+merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000000.sth
+merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000001.sth
+

By default, all massifs up to and including the massif specified by --massif <N> are verified remotely and checked for consistency against the local replica (following the logical steps in the diagram above).

The numbered .log files are the verifiable data for your log.

The .sth files are +COSE Sign1 binary format signed messages. +Each .sth is associated with the identically numbered massif. +The log root material in the .sth signature attests to the entire state of the log up to the end of the associated massif. +The details of consuming the binary format of the seal and verifying the signature are beyond the scope of this article.

However, the implementation used by veracity can be found in the open source merkle log library maintained by DataTrails +go-datatrails-merklelog

Takeaways

  • To be sure mistaken, or malicious, changes to DataTrails data stores can always be detected run this command about once a week: +veracity --tenant $TENANT watch --horizon 180h | veracity replicate-logs --replicadir merklelogs
  • This process guarantees you can’t be misrepresented, any alternate version of events would be provably false.
  • To guarantee continued operation even if DataTrails is prevented from operating, a copy of the DataTrails metadata must be retained.
  • You can reasonably chose to trust DataTrails copy, because, even in the most extreme cases, it is “fail-safe” if DataTrails SaaS storage is compromised, when combined with a replicated verifiable merkle log.

\ No newline at end of file diff --git a/developers/developer-patterns/3rdparty-verification/replicated-data.png b/developers/developer-patterns/3rdparty-verification/replicated-data.png new file mode 100644 index 000000000..ca84510ab Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-data.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_100x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_100x0_resize_box_3.png new file mode 100644 index 000000000..327b68461 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_100x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_200x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_200x0_resize_box_3.png new file mode 100644 index 000000000..f32da7f32 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_200x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_500x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_500x0_resize_box_3.png new file mode 100644 index 000000000..31a78a3f7 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_500x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_800x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_800x0_resize_box_3.png new file mode 100644 index 000000000..73069450b Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_800x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_900x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_900x0_resize_box_3.png new file mode 100644 index 000000000..42f488aae Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-data_hud8dc02b70fbaff4c5bba1cdaa917d28f_1735747_900x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity-2.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity-2.png new file mode 100644 index 000000000..70fb2ed78 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity-2.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_100x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_100x0_resize_box_3.png new file mode 100644 index 000000000..770a52cd5 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_100x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_200x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_200x0_resize_box_3.png new file mode 100644 index 000000000..aa2333aa0 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_200x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_500x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_500x0_resize_box_3.png new file mode 100644 index 000000000..a98a30697 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_500x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_800x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_800x0_resize_box_3.png new file mode 100644 index 000000000..56a3e52be Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_800x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_900x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_900x0_resize_box_3.png new file mode 100644 index 000000000..c407545b0 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity-2_hu627a57ac4dfe17745a2cc64fabadb49e_2377823_900x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps.png new file mode 100644 index 000000000..dd969b2aa Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_100x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_100x0_resize_box_3.png new file mode 100644 index 000000000..df85b8808 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_100x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_200x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_200x0_resize_box_3.png new file mode 100644 index 000000000..87cc328d4 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_200x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_500x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_500x0_resize_box_3.png new file mode 100644 index 000000000..196410c8e Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_500x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_800x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_800x0_resize_box_3.png new file mode 100644 index 000000000..aa0f16b00 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_800x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_900x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_900x0_resize_box_3.png new file mode 100644 index 000000000..8f979f2eb Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity-gaps_huf5faa485887d84e403246fecae05a9e2_2502040_900x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity.png new file mode 100644 index 000000000..7db716a3e Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_100x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_100x0_resize_box_3.png new file mode 100644 index 000000000..c50f15b26 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_100x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_200x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_200x0_resize_box_3.png new file mode 100644 index 000000000..9c0253782 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_200x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_500x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_500x0_resize_box_3.png new file mode 100644 index 000000000..ac1169c97 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_500x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_800x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_800x0_resize_box_3.png new file mode 100644 index 000000000..f78327ec9 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_800x0_resize_box_3.png differ diff --git a/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_900x0_resize_box_3.png b/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_900x0_resize_box_3.png new file mode 100644 index 000000000..fbc4f1ec4 Binary files /dev/null and b/developers/developer-patterns/3rdparty-verification/replicated-veracity_hu0ec4b8cf04f1f64d8e03526eaf7d3627_1899025_900x0_resize_box_3.png differ diff --git a/developers/developer-patterns/containers-as-assets/index.html b/developers/developer-patterns/containers-as-assets/index.html index d0b6c0ebc..f4162882b 100644 --- a/developers/developer-patterns/containers-as-assets/index.html +++ b/developers/developer-patterns/containers-as-assets/index.html @@ -1,4 +1,4 @@ -Containers as Assets - DataTrails +Containers as Assets - DataTrails

Containers as Assets

Using DataTrails to Represent Containers

Represent Containers Using DataTrails

DataTrails Assets can be used to track the status, contents, location, and other key attributes of containers over time. This can also be done for containers within containers. For example, you may wish to track bags inside boxes that are inside a shipping container being transported on a train.

Create a Container Asset

A Container Asset is not a special type of asset, it is a label that is given to an Asset that has been created to represent a container. For more detail on the Asset creation process, please see our DataTrails Overview guide.
For this example, we will create a simple asset that we will call Shipping Container. Note that with DataTrails, we could also record more complex attributes such as size of the container, weight, location, or any other important details. For now, we will create a minimal Asset that includes the name and type.

Create the Shipping Container
curl -g -X GET \
      -H "$HOME/.datatrails/bearer-token.txt" \
      "https://app.datatrails.ai/archivist/v2/assets?attributes.within_container=Shipping%20Container" | jq
-

\ No newline at end of file +

← Creating Access Tokens Using a Custom Integration
Namespace →
\ No newline at end of file diff --git a/developers/developer-patterns/document-profile/index.html b/developers/developer-patterns/document-profile/index.html index 09746237d..e8230ac73 100644 --- a/developers/developer-patterns/document-profile/index.html +++ b/developers/developer-patterns/document-profile/index.html @@ -1,4 +1,4 @@ -Document Profile - DataTrails +Document Profile - DataTrails

Document Profile

Tracing the Lifecycle of a Document with DataTrails

The DataTrails document profile is a set of suggested Asset and Event attributes that allow you to trace the lifecycle of a document.

Profile Attribute Namespace

The document_ prefix is used to designate attributes that are part of the profile. Some of these are interpreted by DataTrails and others are guidelines.

Document Profile Asset Attributes

Asset AttributesMeaningRequirement
arc_profileDesignates that the Asset follows the document profileRequired, set as Document
document_hash_valueHash of the most recently published version of the documentRequired
document_hash_algAlgorithm used to compute document_hash_value (currently, only SHA-256 is supported)Required
document_documentAttachment containing the most recently uploaded version of the document being traced.Optional
document_versionSpecific version string for the most recent version of the documentOptional, but encouraged
document_statusLabel for filtering and accommodating critical document lifecycle events (Published, Withdrawn)Optional, enforced when using lifecycle events
document_portable_nameFormal name or identifier for document that persists across boundaries and throughout versionsOptional, not interpreted by DataTrails

Publish Event

Publish a new version of the document using special attributes interpreted by DataTrails for this event type.

Event AttributesMeaningRequirement
arc_display_typeTells DataTrails how to interpret EventRequired, must be set to Publish
document_version_authorsList of authors on this version of the documentOptional, see format below
Document Version Authors

You must express document_version_authors as a list of objects that have display_name as a property.

[
   {
@@ -16,4 +16,4 @@
   }
 ]
 
Asset AttributesMeaningRequirement
document_hash_valueHash of this version of the documentRequired
document_hash_algAlgorithm used for hashing. We only officially support SHA-256.Required
document_statusLabel for filtering and accommodating critical document lifecycle eventsRequired, must be Published
document_documentAttachment containing this version of the documentOptional
document_versionVersion string for the this version of the documentOptional

Withdraw Event

If a document is no longer required, or if for any reason it is decided that it should no longer be used, then a document can be withdrawn. -Withdrawal is optional and it is usually the final event in the document lifecycle. It can be reversed in DataTrails by publishing a new version.

Withdraw an entire document (mark that it is no longer considered current.)

Event AttributesMeaningRequirement
arc_display_typeTells DataTrails how to interpret EventRequired, must be set to Withdraw
document_withdrawal_reasonReason why document has been withdrawnOptional, but encouraged
Asset AttributesMeaningRequirement
document_statusLabel for filtering and accommodating critical document lifecycle eventsRequired, must be Withdrawn

\ No newline at end of file +Withdrawal is optional and it is usually the final event in the document lifecycle. It can be reversed in DataTrails by publishing a new version.

Withdraw an entire document (mark that it is no longer considered current.)

Event AttributesMeaningRequirement
arc_display_typeTells DataTrails how to interpret EventRequired, must be set to Withdraw
document_withdrawal_reasonReason why document has been withdrawnOptional, but encouraged
Asset AttributesMeaningRequirement
document_statusLabel for filtering and accommodating critical document lifecycle eventsRequired, must be Withdrawn

← Namespace
Software Package Profile →
\ No newline at end of file diff --git a/developers/developer-patterns/getting-access-tokens-using-app-registrations/index.html b/developers/developer-patterns/getting-access-tokens-using-app-registrations/index.html index 17589a55d..aa1ea9338 100644 --- a/developers/developer-patterns/getting-access-tokens-using-app-registrations/index.html +++ b/developers/developer-patterns/getting-access-tokens-using-app-registrations/index.html @@ -1,4 +1,4 @@ -Creating Access Tokens Using a Custom Integration - DataTrails +Creating Access Tokens Using a Custom Integration - DataTrails

Creating Access Tokens Using a Custom Integration

Creating Access Tokens for DataTrails

Non-interactive access to the DataTrails platform is managed by creating Integrations with either a Custom Integration or one of the built-in Integrations. This is done using either the Settings or Integrations menus in the DataTrails UI or by using the App Registrations API directly.

Note: App Registration is the old name for a Custom Integration.

Custom Integrations have a CLIENT_ID and a SECRET, these are used to authenticate with DataTrails IAM endpoints using JSON Web Tokens (JWT).

DataTrails authentication uses the industry-standard OIDC Client Credentials Flow.

The high level steps are:

  1. Create an Integration in the UI
  2. Define access permissions for the Integration in the UI
  3. Request an Access Token using the API
  4. Use the Access Token to make a REST API call to your tenancy.

Creating a Custom Integration

If you have already saved a CLIENT_ID and a SECRET, with the correct @@ -93,4 +93,4 @@ "iss": "https://app.datatrails.ai/appidpv1", "aud": "https://app.datatrails.ai/archivist" } -

\ No newline at end of file +

Containers as Assets →
\ No newline at end of file diff --git a/developers/developer-patterns/index.html b/developers/developer-patterns/index.html index d2e8a096e..f34495357 100644 --- a/developers/developer-patterns/index.html +++ b/developers/developer-patterns/index.html @@ -1,8 +1,8 @@ -Developer Patterns - DataTrails +Developer Patterns - DataTrails

Developer Patterns

This sub-section of the Developers subject area contains more detailed information on topics that cannot be covered by the API or YAML Runner references.

You will find articles on common developer tasks and concept guides that are relevant to developers.

Check out the articles below for more information!


Getting Access Tokens using App Registrations →
Containers as Assets →
Namespace →
Verifying Assets and Events with Simple Hash →
Navigating the Merkle Logs →
Massif Blob Offset Tables →
Document Profile →
Software Package Profile →

\ No newline at end of file +Sign Up

Developer Patterns

This sub-section of the Developers subject area contains more detailed information on topics that cannot be covered by the API or YAML Runner references.

You will find articles on common developer tasks and concept guides that are relevant to developers.

Check out the articles below for more information!


Getting Access Tokens using App Registrations →
Containers as Assets →
Namespace →
Verifying Assets and Events with Simple Hash →
Navigating the Merkle Logs →
Massif Blob Offset Tables →
Document Profile →
Software Package Profile →

\ No newline at end of file diff --git a/developers/developer-patterns/index.xml b/developers/developer-patterns/index.xml index 8759a807d..78a83bb5c 100644 --- a/developers/developer-patterns/index.xml +++ b/developers/developer-patterns/index.xml @@ -9,4 +9,6 @@ In this guide we&rsquo;ll explore how you can use Veracity to: Prove the inclusion of events that matter in the DataTrails merkle log with verify-included Explore the DataTrails merkle log using the node command Prerequisites Have downloaded and installed Veracity using the instructions found here Verifying Event Data DataTrails records the events that matter to your business and lets you prove them at a later date.Navigating the Merkle Loghttps://docs.datatrails.ai/developers/developer-patterns/navigating-merklelogs/Mon, 01 Jan 0001 00:00:00 +0000https://docs.datatrails.ai/developers/developer-patterns/navigating-merklelogs/This article explains how to navigate the Merkle Log, using the DataTrails Merkle Mountain Range implementation. DataTrails publishes the data necessary for immediately verifying events to highly available commodity cloud storage. &ldquo;Verifiable data&rdquo; is synonymous with log or transparency log. Once verifiable data is written to the log it is never changed. The log only grows, it never shrinks and data in it never moves within the log. To work with Merkle Log format, DataTrails provides open-source tooling for working in offline environments.Massif blob pre-calculated offsetshttps://docs.datatrails.ai/developers/developer-patterns/massif-blob-offset-tables/Mon, 01 Jan 0001 00:00:00 +0000https://docs.datatrails.ai/developers/developer-patterns/massif-blob-offset-tables/This page provides lookup tables for navigating the dynamic, but computable, offsets into the Merkle log binary format. The algorithms to reproduce this are relatively simple. DataTrails provides open-source implementations, but in many contexts it is simpler to use these pre-calculations. These tables can be made for any log configuration at any time, in part or in whole, without access to any specific log. -This is a quick review of the log format.Quickstart: SCITT Statements (Preview)https://docs.datatrails.ai/developers/developer-patterns/scitt-api/Wed, 09 Jun 2021 13:49:35 +0100https://docs.datatrails.ai/developers/developer-patterns/scitt-api/The SCITT API is currently in preview and subject to change The Supply Chain Integrity, Transparency and Trust (SCITT) initiative is a set of IETF standards for managing the compliance and auditability of goods and services across end-to-end supply chains. SCITT supports the ongoing verification of goods and services where the authenticity of entities, evidence, policy, and artifacts can be assured and the actions of entities can be guaranteed to be authorized, non-repudiable, immutable, and auditable. \ No newline at end of file +This is a quick review of the log format.Verified Replication of the Datatrails Transparency Logshttps://docs.datatrails.ai/developers/developer-patterns/3rdparty-verification/Thu, 22 Aug 2024 19:35:35 +0100https://docs.datatrails.ai/developers/developer-patterns/3rdparty-verification/Introduction Without the measures described in this article, it is still extremely challenging to compromise a transparency solution based on DataTrails. +To do so, the systems of more than just DataTrails need to be compromised in very specific ways. To illustrate this, consider this typical flow for how Data can be used in a transparent and tamper evident way with DataTrails. +Replicated Transparency Logs This is already a very robust process.Quickstart: SCITT Statements (Preview)https://docs.datatrails.ai/developers/developer-patterns/scitt-api/Wed, 09 Jun 2021 13:49:35 +0100https://docs.datatrails.ai/developers/developer-patterns/scitt-api/The SCITT API is currently in preview and subject to change The Supply Chain Integrity, Transparency and Trust (SCITT) initiative is a set of IETF standards for managing the compliance and auditability of goods and services across end-to-end supply chains. SCITT supports the ongoing verification of goods and services where the authenticity of entities, evidence, policy, and artifacts can be assured and the actions of entities can be guaranteed to be authorized, non-repudiable, immutable, and auditable. \ No newline at end of file diff --git a/developers/developer-patterns/massif-blob-offset-tables/index.html b/developers/developer-patterns/massif-blob-offset-tables/index.html index 68a085115..036616991 100644 --- a/developers/developer-patterns/massif-blob-offset-tables/index.html +++ b/developers/developer-patterns/massif-blob-offset-tables/index.html @@ -1,4 +1,4 @@ -Massif blob pre-calculated offsets - DataTrails +Massif blob pre-calculated offsets - DataTrails

Massif blob pre-calculated offsets

Lookup tables for navigating the dynamic, but computable, offsets into the Merkle log binary format

This page provides lookup tables for navigating the dynamic, but computable, offsets into the Merkle log binary format. The algorithms to reproduce this are relatively simple. @@ -126,4 +126,4 @@ } return sum; } -

← Navigating the Merkle Log
App Registrations API →
\ No newline at end of file +

← Navigating the Merkle Log
Verified Replication of the Datatrails Transparency Logs →
\ No newline at end of file diff --git a/developers/developer-patterns/namespace/index.html b/developers/developer-patterns/namespace/index.html index 178d3b748..034da124a 100644 --- a/developers/developer-patterns/namespace/index.html +++ b/developers/developer-patterns/namespace/index.html @@ -1,4 +1,4 @@ -Namespace - DataTrails +Namespace - DataTrails

Namespace

Using Namespace in an DataTrails Tenancy

Namespace is a tool that can be used to prevent unwanted interactions when multiple users are performing testing in the same Tenancy. Using two separate namespaces prevents collisions that may cause undesirable results by allowing multiple users to interact with the same Assets and Events without interrupting each other.

Namespace can be added as an attribute within the files you are testing, or as a variable in your Bash environment.

To add namespace as an attribute to your files, use the arc_namespace key. For example:

{
     "behaviours": ["RecordEvidence"],
@@ -22,4 +22,4 @@
 }
 

To use namespace as a variable, such as the date, add the argument to your Bash environment:

 export TEST_NAMESPACE=date
 

See -TEST_NAMESPACE in our GitHub repository for more information. TEST_NAMESPACE can also be added to your Bash profile to be automatically picked up when testing.

\ No newline at end of file +TEST_NAMESPACE in our GitHub repository for more information. TEST_NAMESPACE can also be added to your Bash profile to be automatically picked up when testing.

← Containers as Assets
Document Profile →
\ No newline at end of file diff --git a/developers/developer-patterns/navigating-merklelogs/index.html b/developers/developer-patterns/navigating-merklelogs/index.html index 2ea64780d..e53310a2d 100644 --- a/developers/developer-patterns/navigating-merklelogs/index.html +++ b/developers/developer-patterns/navigating-merklelogs/index.html @@ -1,4 +1,4 @@ -Navigating the Merkle Log - DataTrails +Navigating the Merkle Log - DataTrails

Navigating the Merkle Log

Accessing the data needed to verify from first principals

This article explains how to navigate the Merkle Log, using the DataTrails Merkle Mountain Range implementation.

DataTrails publishes the data necessary for immediately verifying events to highly available commodity cloud storage. “Verifiable data” is synonymous with log or transparency log. @@ -416,4 +416,4 @@ Snowflake ID scheme. The DataTrails implementation can be found at nextid.go ↩︎

  • Such a path of hashes is commonly referred to as a “proof”, a “witness”, and an “authentication path”. -A Merkle Tree is sometimes referred to as authenticated data structures or a verifiable data structure. For the purposes of this article, there is no meaningful difference. They are all the same thing. We stick to “verification” and “verifiable data structure” in this article. ↩︎

  • \ No newline at end of file +A Merkle Tree is sometimes referred to as authenticated data structures or a verifiable data structure. For the purposes of this article, there is no meaningful difference. They are all the same thing. We stick to “verification” and “verifiable data structure” in this article. ↩︎

    ← Independently verifying DataTrails transparent merkle logs
    Massif blob pre-calculated offsets →
    \ No newline at end of file diff --git a/developers/developer-patterns/scitt-api/index.html b/developers/developer-patterns/scitt-api/index.html index 19c9ac5e6..af9105850 100644 --- a/developers/developer-patterns/scitt-api/index.html +++ b/developers/developer-patterns/scitt-api/index.html @@ -1,4 +1,4 @@ -Quickstart: SCITT Statements (Preview) - DataTrails +Quickstart: SCITT Statements (Preview) - DataTrails

    Quickstart: SCITT Statements (Preview)

    How to push a collection of Statements using SCITT APIs

    The SCITT API is currently in preview and subject to change

    The Supply Chain Integrity, Transparency and Trust (SCITT) initiative is a set of IETF standards for managing the compliance and auditability of goods and services across end-to-end supply chains. @@ -64,4 +64,4 @@ https://app.datatrails.ai/archivist/v2/publicassets/-/events?event_attributes.subject=$SUBJECT | jq

    Coming soon: Filter on specific content types, such as what SBOMs have been registered, or which issuers have made statements.

    Summary

    The quickstart created a collection of statements for a given artifact. Over time, as new information is available, authors can publish new statements which verifiers and consumers can benefit from, making decisions specific to their environment.

    There are no limits to the types of additional statements that may be registered, which may include new vulnerability information, notifications of new versions, end of life (EOL) notifications, or more. -By using the content-type parameter, verifiers can filter to specific types, filter statements by the issuer, or other headers & metadata.

    For more information:

    \ No newline at end of file +By using the content-type parameter, verifiers can filter to specific types, filter statements by the issuer, or other headers & metadata.

    For more information:

    ← IAM Subjects API
    Locations API →
    \ No newline at end of file diff --git a/developers/developer-patterns/sitemap.xml b/developers/developer-patterns/sitemap.xml index 8c9a1c25b..27f25d57c 100644 --- a/developers/developer-patterns/sitemap.xml +++ b/developers/developer-patterns/sitemap.xml @@ -1 +1 @@ -/developers/developer-patterns/getting-access-tokens-using-app-registrations/2023-09-27T11:12:25+01:00weekly0.5/developers/developer-patterns/containers-as-assets/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/namespace/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/document-profile/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/software-package-profile/2023-06-26T11:56:01+01:00weekly0.5/developers/developer-patterns/veracity/2024-08-22T19:35:35+01:00weekly0.5/developers/developer-patterns/navigating-merklelogs/weekly0.5/developers/developer-patterns/massif-blob-offset-tables/weekly0.5/developers/developer-patterns/scitt-api/2021-06-09T13:49:35+01:00weekly0.5 \ No newline at end of file +/developers/developer-patterns/getting-access-tokens-using-app-registrations/2023-09-27T11:12:25+01:00weekly0.5/developers/developer-patterns/containers-as-assets/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/namespace/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/document-profile/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/software-package-profile/2023-06-26T11:56:01+01:00weekly0.5/developers/developer-patterns/veracity/2024-08-22T19:35:35+01:00weekly0.5/developers/developer-patterns/navigating-merklelogs/weekly0.5/developers/developer-patterns/massif-blob-offset-tables/weekly0.5/developers/developer-patterns/3rdparty-verification/2024-08-22T19:35:35+01:00weekly0.5/developers/developer-patterns/scitt-api/2021-06-09T13:49:35+01:00weekly0.5 \ No newline at end of file diff --git a/developers/developer-patterns/software-package-profile/index.html b/developers/developer-patterns/software-package-profile/index.html index 10fbe17c6..15c0ac2a7 100644 --- a/developers/developer-patterns/software-package-profile/index.html +++ b/developers/developer-patterns/software-package-profile/index.html @@ -1,4 +1,4 @@ -Software Package Profile - DataTrails +Software Package Profile - DataTrails

    Software Package Profile

    Sharing and Distributing a Software Bill of Materials with DataTrails

    Overview

    The DataTrails Software Package profile is a set of suggested Asset and Event attributes that enable the recording of an immutable and verifiable Software Bill of Materials (SBOM).

    The NTIA describes a SBOM as “a formal record containing the details and supply chain relationships of various components used in building software.

    Software Package Profile Asset Attributes

    NTIA AttributeAsset AttributesMeaningRequirement
    Author Namesbom_authorThe name of the Package AuthorRequired
    Supplier Namesbom_supplierThe name of the Package SupplierRequired
    Component Namesbom_component,(arc_display_name if appropriate)The name of the Software PackageRequired
    Version Stringsbom_versionThe version of the Software PackageRequired
    Unique Identifiersbom_uuidA unique identifier for the Package, DataTrails provides a Unique ID per asset but it may be preferred to include an existing internal reference insteadRequired
    N/Asbom_repoLink to the Git Repo of the ComponentOptional
    N/Asbom_release_notesLink to the release notes of the package versionOptional
    N/Asbom_licenseThe licensing used by the component (if specified)Optional

    Note: Software Package Profile Attribute Namespace

    The sbom_ prefix is used to designate attributes that are part of the profile. Some of these are interpreted by DataTrails and others are guidelines.

    Public SBOM

    In the API, you must express public as an asset attribute and have true as a property to make an SBOM public. The default is ‘false’. @@ -43,4 +43,4 @@ "public": true }

    Software Package Profile Event Types and Attributes

    Release Event

    A Release is the event used by a Supplier to provide an SBOM for their Software Package in DataTrails.

    The Release attributes tracked in DataTrails should minimally represent the base information required by the NTIA standard and be recorded in two, separate, lists of attributes; Asset Attributes would track details about the latest release of the SBOM at the time of the event creation, the Event Attributes then track details about the release of the SBOM that is being submitted.

    Release Event Attribute Namespace

    The sbom_ prefix is used to designate attributes that are part of the event and asset. Some of these are interpreted by DataTrails and others are guidelines

    NTIA AttributeEvent AttributesMeaningRequirement
    N/Aarc_display_typeTells DataTrails how to interpret EventRequired, must set to Release
    Author Namesbom_authorThe name of the Package AuthorRequired
    Supplier Namesbom_supplierThe name of the Package AuthorRequired
    Component Namesbom_componentThe name of the PackageRequired
    Version Stringsbom_versionThe version of the PackageRequired
    Unique Identifiersbom_uuidA unique identifier for the Package, DataTrails provides a Unique ID per asset but it may be preferred to include an existing internal reference insteadRequired
    N/Asbom_repoLink to the Git Repo of the ComponentOptional
    N/Asbom_release_notesLink to the release notes of the releaseOptional
    N/Asbom_licenseThe licensing used by the component (if specified)Optional
    N/Asbom_exceptionIf included value is always trueOptional
    N/Asbom_vuln_referenceIf this release resolves a specific vulnerability you can highlight a shared Vulnerability reference number(s)Optional
    NTIA AttributeAsset AttributesMeaningRequirement
    Author Namesbom_authorThe name of the Package AuthorRequired
    Supplier Namesbom_supplierThe name of the Package SupplierRequired
    Component Namesbom_component,(arc_display_name if appropriate)The name of the Software PackageRequired
    Version Stringsbom_versionThe version of the Software PackageRequired
    Unique Identifiersbom_uuidA unique identifier for the Package, DataTrails provides a Unique ID per asset but it may be preferred to include an existing internal reference insteadRequired
    N/Asbom_repoLink to the Git Repo of the ComponentOptional
    N/Asbom_release_notesLink to the release notes of the package versionOptional
    N/Asbom_licenseThe licensing used by the component (if specified)Optional
    Exception

    When used in tandem with Release Plan and Accepted events the exception is a useful record of when an emergency has caused a release to be pushed without needing an initial approval or plan.

    Release Plan and Release Accepted

    Release events can be optionally enhanced by using ‘Release Plan’ and ‘Release Accepted’ events alongside them.

    Release Plan events demonstrate an intent to introduce a new release, it should describe which version you want to release and who wants to release it. For example, it could include draft release notes explaining what is being updated and why it should be updated.

    Release Accepted events demonstrate an approval on a Release Plan to go forward, it may be that the plan details a need to introduce a fix for a specific vulnerability and the security team is needed to sign off the release going forward.

    These events are not essential to the process so can be omitted in a standard or minimal deployment but they are actively encouraged. As they should not affect the information about the latest Software Package Release there should be no Asset Attributes included, other NTIA attributes may also not be necessary or not available until release (e.g. Component Hash).

    The Key Attribute that should be recorded is the version of the release that is being planned and accepted.

    Release Plan

    Release Plan Event Attribute Namespace

    The sbom_planned_ prefix is used to designate attributes that are part of the event. Some of these are interpreted by DataTrails and others are guidelines.

    NTIA AttributeEvent AttributesMeaningRequirement
    N/Aarc_display_typeTells DataTrails how to interpret EventRequired, must set to Release Plan
    Component Namesbom_planned_componentThe planned name of the PackageRequired
    Version Stringsbom_planned_versionThe planned version of the PackageRequired
    N/Asbom_planned_referenceA reference number for the plan (such as internal change request number)Required
    N/Asbom_planned_dateThe planned release dateRequired
    N/Asbom_planned_captainThe planned Release Captain (a common term for someone who is responsible for performing a Release; someone like an Owner in Agile serves a different purpose but may also be used if appropriate). This is mandatory as it describes who should be responsible for the releaseRequired
    Author Namesbom_planned_authorThe planned name of the Package AuthorOptional
    Supplier Namesbom_planned_supplierThe planned name of the Package SupplierOptional
    Component Hashsbom_planned_hashThe planned hash of the component files/installation (per version)Optional
    Unique Identifiersbom_planned_uuidThe planned unique identifier for the Package, DataTrails provides a Unique ID per asset but it may be preferred to include an existing internal reference insteadOptional
    N/Asbom_planned_licenseIf there is an intended change to the license this may be neededOptional
    N/Asbom_planned_vuln_referenceIf this release intends to resolve a specific vulnerability you can highlight a shared Vulnerability reference number(s)Optional

    Release Accepted Event

    Release Accepted Event Attribute Namespace

    The sbom_accepted_ prefix is used to designate attributes that are part of the event. Some of these are interpreted by DataTrails and others are guidelines.

    NTIA AttributeEvent AttributesMeaningRequirement
    N/Aarc_display_typeTells DataTrails how to interpret EventRequired, must set to Release Accepted
    Component Namesbom_accepted_componentThe accepted name of the PackageRequired
    Version Stringsbom_accepted_versionThe accepted version of the PackageRequired
    N/Asbom_accepted_referenceThe reference number of the associated planRequired
    N/Asbom_accepted_dateThe accepted release dateRequired
    N/Asbom_accepted_captainThe accepted Release Captain (a common term for someone who is responsible for performing a Release; someone like an Owner in Agile serves a different purpose but may also be used if appropriate). This is mandatory as it describes who should be responsible for the releaseRequired
    N/Asbom_accepted_approverDescribes who has accepted the planRequired
    Author Namesbom_accepted_authorThe accepted name of the Package AuthorOptional
    Supplier Namesbom_accepted_supplierThe accepted name of the Package SupplierOptional
    Component Hashsbom_accepted_hashThe accepted hash of the component files/installation (per version)Optional
    Unique Identifiersbom_accepted_uuidThe accepted unique identifier for the Package, DataTrails provides a Unique ID per asset but it may be preferred to include an existing internal reference insteadOptional
    N/Asbom_accepted_vuln_referenceIf this release intends to resolve a specific vulnerability you can highlight a shared Vulnerability reference number(s)Optional

    Patch Event

    Patches are often supplied to customer in an Out-Of-Band procedure to address critical bugs or vulnerabilities, usually with a short-term turnaround that can be outside the normal release cadence.

    It is typically expected a Patch should contain its own SBOM separate to the Primary SBOM.

    Patch Event Attribute Namespace

    The sbom_patch_ prefix is used to designate attributes that are part of the event. Some of these are interpreted by DataTrails and others are guidelines.

    NTIA AttributeEvent AttributesMeaningRequirement
    N/Aarc_display_typeTells DataTrails how to interpret EventRequired, must set to Patch
    Component Namesbom_patch_target_componentThe component the Patch targetsRequired
    Version Stringsbom_patch_versionThe version string of the PatchRequired
    Author Namesbom_patch_authorThe name of the Patch AuthorRequired
    Supplier Namesbom_patch_supplierThe name of the Patch SupplierRequired
    Component Hashsbom_patch_hashThe hash of the Patch files/installation (per version)Required
    Unique Identifiersbom_patch_uuidThe accepted unique identifier for the Package, DataTrails provides a Unique ID per asset but it may be preferred to include an existing internal reference insteadRequired
    N/Asbom_patch_target_versionThe version of the component the patch is targeted/built fromRequired
    N/Asbom_patch_repoLink to the Git Repo/Fork/Branch of the Component (if different to the latest release repo)Optional
    N/Asbom_patch_licenseThe licensing used by the component (if specified and different to the latest release license)Optional
    N/Asbom_patch_vuln_referenceIf this patch resolves a specific vulnerability you can highlight a shared Vulnerability reference numberOptional

    Vulnerability Disclosure and Update

    These Event types are used for vulnerability management. -The first is to disclose knowledge of a vulnerability and the second is to update the status of the vulnerability after investigation is complete.

    Vulnerability Disclosure Event Attribute Namespace

    The vuln_ prefix is used to designate attributes that are part of the event. All of these are interpreted by DataTrails.

    Vulnerability Disclosure

    Event AttributesMeaningRequirement
    arc_display_typeTells DataTrails how to interpret EventRequired, must set to Vulnerability Disclosure
    vuln_nameFriendly Name for the VulnerabilityRequired
    vuln_referenceReference Number (e.g. internal tracking number), useful when there may be multiple updates to a vulnerability during an investigation and for referencing when a particular release is expected to solve a vulnerabilityRequired
    vuln_idSpecific ID of Vulnerability (e.g CVE-2018-0171)Required
    vuln_categoryType of Vulnerability (e.g. CVE)Required
    vuln_severitySeverity of Vulnerability (e.g. HIGH)Required
    vuln_statusWhether the Vulnerability actually affects your component or is being investigated (e.g Known_not_affected)Required
    vuln_authorAuthor of Vulnerability DisclosureRequired
    vuln_target_componentAffected ComponentRequired
    vuln_target_versionAffected Version(s)Required

    Vulnerability Update

    Event AttributesMeaningRequirement
    arc_display_typeTells DataTrails how to interpret EventRequired, must set to Vulnerability Update
    vuln_nameFriendly Name for the VulnerabilityRequired
    vuln_referenceReference Number (e.g. internal tracking number), useful when there may be multiple updates to a vulnerability during an investigation and for referencing when a particular release is expected to solve a vulnerabilityRequired
    vuln_idSpecific ID of Vulnerability (e.g CVE-2018-0171)Required
    vuln_categoryType of Vulnerability (e.g. CVE)Required
    vuln_severitySeverity of Vulnerability (e.g. HIGH)Required
    vuln_statusWhether the Vulnerability actually affects your component or is being investigated (e.g Known_not_affected)Required
    vuln_authorAuthor of Vulnerability DisclosureRequired
    vuln_target_componentAffected ComponentRequired
    vuln_target_versionAffected Version(s)Required

    EOL Event

    EOL Event Attribute Namespace

    The sbom_eol_ prefix is used to designate attributes that are part of the event. All of these are interpreted by DataTrails.

    An event to mark the Package as End of Life.

    NTIA AttributeEvent AttributesMeaningRequirement
    N/Aarc_display_typeTells DataTrails how to interpret EventRequired, must set to EOL
    Component Namesbom_eol_target_componentThe component the EOL targetsRequired
    Version Stringsbom_eol_target_versionThe version string affected by the EOLRequired
    Author Namesbom_eol_authorThe name of the EOL AuthorRequired
    Unique Identifiersbom_eol_uuidThe accepted unique identifier for the Package, DataTrails provides a Unique ID per asset but it may be preferred to include an existing internal reference insteadRequired
    N/Asbom_eol_target_dateThe date on which the EOL will be activeRequired

    ← Document Profile
    Independently verifying DataTrails transparent merkle logs →
    \ No newline at end of file +The first is to disclose knowledge of a vulnerability and the second is to update the status of the vulnerability after investigation is complete.

    Vulnerability Disclosure Event Attribute Namespace

    The vuln_ prefix is used to designate attributes that are part of the event. All of these are interpreted by DataTrails.

    Vulnerability Disclosure

    Event AttributesMeaningRequirement
    arc_display_typeTells DataTrails how to interpret EventRequired, must set to Vulnerability Disclosure
    vuln_nameFriendly Name for the VulnerabilityRequired
    vuln_referenceReference Number (e.g. internal tracking number), useful when there may be multiple updates to a vulnerability during an investigation and for referencing when a particular release is expected to solve a vulnerabilityRequired
    vuln_idSpecific ID of Vulnerability (e.g CVE-2018-0171)Required
    vuln_categoryType of Vulnerability (e.g. CVE)Required
    vuln_severitySeverity of Vulnerability (e.g. HIGH)Required
    vuln_statusWhether the Vulnerability actually affects your component or is being investigated (e.g Known_not_affected)Required
    vuln_authorAuthor of Vulnerability DisclosureRequired
    vuln_target_componentAffected ComponentRequired
    vuln_target_versionAffected Version(s)Required

    Vulnerability Update

    Event AttributesMeaningRequirement
    arc_display_typeTells DataTrails how to interpret EventRequired, must set to Vulnerability Update
    vuln_nameFriendly Name for the VulnerabilityRequired
    vuln_referenceReference Number (e.g. internal tracking number), useful when there may be multiple updates to a vulnerability during an investigation and for referencing when a particular release is expected to solve a vulnerabilityRequired
    vuln_idSpecific ID of Vulnerability (e.g CVE-2018-0171)Required
    vuln_categoryType of Vulnerability (e.g. CVE)Required
    vuln_severitySeverity of Vulnerability (e.g. HIGH)Required
    vuln_statusWhether the Vulnerability actually affects your component or is being investigated (e.g Known_not_affected)Required
    vuln_authorAuthor of Vulnerability DisclosureRequired
    vuln_target_componentAffected ComponentRequired
    vuln_target_versionAffected Version(s)Required

    EOL Event

    EOL Event Attribute Namespace

    The sbom_eol_ prefix is used to designate attributes that are part of the event. All of these are interpreted by DataTrails.

    An event to mark the Package as End of Life.

    NTIA AttributeEvent AttributesMeaningRequirement
    N/Aarc_display_typeTells DataTrails how to interpret EventRequired, must set to EOL
    Component Namesbom_eol_target_componentThe component the EOL targetsRequired
    Version Stringsbom_eol_target_versionThe version string affected by the EOLRequired
    Author Namesbom_eol_authorThe name of the EOL AuthorRequired
    Unique Identifiersbom_eol_uuidThe accepted unique identifier for the Package, DataTrails provides a Unique ID per asset but it may be preferred to include an existing internal reference insteadRequired
    N/Asbom_eol_target_dateThe date on which the EOL will be activeRequired

    ← Document Profile
    Independently verifying DataTrails transparent merkle logs →
    \ No newline at end of file diff --git a/developers/developer-patterns/veracity/index.html b/developers/developer-patterns/veracity/index.html index 49ba1ff2b..1a2287d42 100644 --- a/developers/developer-patterns/veracity/index.html +++ b/developers/developer-patterns/veracity/index.html @@ -1,4 +1,4 @@ -Independently verifying DataTrails transparent merkle logs - DataTrails +Independently verifying DataTrails transparent merkle logs - DataTrails

    The value returned is the hash stored at that node:

    26c7061166187363dd156f4f5f1f517a39323af3c70d572de28c5206de160ec2
     

    Leaf nodes in the merkle log contain the hash of the event data (plus some metadata, see this article) while -intermediate nodes hash together the content of their left and right children.

    \ No newline at end of file +intermediate nodes hash together the content of their left and right children.

    ← Software Package Profile
    Navigating the Merkle Log →
    \ No newline at end of file diff --git a/developers/index.html b/developers/index.html index 8b00efc0f..9d889c6f5 100644 --- a/developers/index.html +++ b/developers/index.html @@ -1,8 +1,8 @@ -Developers - DataTrails +Developers - DataTrails

    Developers

    If you are a developer who is looking to easily add provenance to their data, this section is for you.
    You may be building a new application or looking for a way to add functionality to something that you already use every day.

    The DataTrails REST API, python SDK, or the YAML runner provide a simple way for you to integrate a provenance layer into your existing data platform so that you do not need to change the way that your users work.

    Check out the sub-sections below for more information!

    Developer Patterns →
    Go here for information on setting up an App Registration, requesting an Access Token together with other developer concepts and user profile descriptions.

    API Reference →
    The DataTrails REST API endpoint examples and definitions can be found here.

    YAML Runner Reference →
    The YAML reference contains information and examples for those who work with YAML files and would prefer to use this method to access the API.

    Additional resources are available from our Python SDK and the Python Samples.

    \ No newline at end of file +Sign Up

    Developers

    If you are a developer who is looking to easily add provenance to their data, this section is for you.
    You may be building a new application or looking for a way to add functionality to something that you already use every day.

    The DataTrails REST API, python SDK, or the YAML runner provide a simple way for you to integrate a provenance layer into your existing data platform so that you do not need to change the way that your users work.

    Check out the sub-sections below for more information!

    Developer Patterns →
    Go here for information on setting up an App Registration, requesting an Access Token together with other developer concepts and user profile descriptions.

    API Reference →
    The DataTrails REST API endpoint examples and definitions can be found here.

    YAML Runner Reference →
    The YAML reference contains information and examples for those who work with YAML files and would prefer to use this method to access the API.

    Additional resources are available from our Python SDK and the Python Samples.

    \ No newline at end of file diff --git a/developers/sitemap.xml b/developers/sitemap.xml index 151fb61e4..3ab0e92df 100644 --- a/developers/sitemap.xml +++ b/developers/sitemap.xml @@ -1 +1 @@ -/developers/developer-patterns/2023-05-31T10:14:18+01:00weekly0.5/developers/yaml-reference/2023-05-31T10:14:18+01:00weekly0.5/developers/api-reference/2021-06-09T10:19:37+01:00weekly0.5/developers/developer-patterns/getting-access-tokens-using-app-registrations/2023-09-27T11:12:25+01:00weekly0.5/developers/developer-patterns/containers-as-assets/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/namespace/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/document-profile/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/software-package-profile/2023-06-26T11:56:01+01:00weekly0.5/developers/developer-patterns/veracity/2024-08-22T19:35:35+01:00weekly0.5/developers/developer-patterns/navigating-merklelogs/weekly0.5/developers/developer-patterns/massif-blob-offset-tables/weekly0.5/developers/developer-patterns/scitt-api/2021-06-09T13:49:35+01:00weekly0.5/developers/yaml-reference/story-runner-components/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/assets/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/events/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/locations/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/subjects/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/compliance/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/estate-info/2021-06-09T11:39:03+01:00weekly0.5/developers/api-reference/app-registrations-api/2021-06-09T11:39:03+01:00weekly0.5/developers/api-reference/assets-api/2021-06-09T11:39:03+01:00weekly0.5/developers/api-reference/attachments-api/2021-06-09T12:05:02+01:00weekly0.5/developers/api-reference/blobs-api/2021-06-09T13:32:57+01:00weekly0.5/developers/api-reference/compliance-api/2021-06-09T12:07:13+01:00weekly0.5/developers/api-reference/events-api/2021-06-09T11:48:40+01:00weekly0.5/developers/api-reference/iam-policies-api/2021-06-09T12:02:15+01:00weekly0.5/developers/api-reference/iam-subjects-api/2021-06-09T12:02:15+01:00weekly0.5/developers/api-reference/locations-api/2021-06-09T11:56:23+01:00weekly0.5/developers/api-reference/public-assets-api/2021-06-09T11:56:23+01:00weekly0.5/developers/api-reference/tenancies-api/2021-06-09T13:29:57+01:00weekly0.5/developers/api-reference/caps-api/2024-03-05T11:30:29+00:00weekly0.5 \ No newline at end of file +/developers/developer-patterns/2023-05-31T10:14:18+01:00weekly0.5/developers/yaml-reference/2023-05-31T10:14:18+01:00weekly0.5/developers/api-reference/2021-06-09T10:19:37+01:00weekly0.5/developers/developer-patterns/getting-access-tokens-using-app-registrations/2023-09-27T11:12:25+01:00weekly0.5/developers/developer-patterns/containers-as-assets/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/namespace/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/document-profile/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/software-package-profile/2023-06-26T11:56:01+01:00weekly0.5/developers/developer-patterns/veracity/2024-08-22T19:35:35+01:00weekly0.5/developers/developer-patterns/navigating-merklelogs/weekly0.5/developers/developer-patterns/massif-blob-offset-tables/weekly0.5/developers/developer-patterns/3rdparty-verification/2024-08-22T19:35:35+01:00weekly0.5/developers/developer-patterns/scitt-api/2021-06-09T13:49:35+01:00weekly0.5/developers/yaml-reference/story-runner-components/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/assets/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/events/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/locations/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/subjects/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/compliance/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/estate-info/2021-06-09T11:39:03+01:00weekly0.5/developers/api-reference/app-registrations-api/2021-06-09T11:39:03+01:00weekly0.5/developers/api-reference/assets-api/2021-06-09T11:39:03+01:00weekly0.5/developers/api-reference/attachments-api/2021-06-09T12:05:02+01:00weekly0.5/developers/api-reference/blobs-api/2021-06-09T13:32:57+01:00weekly0.5/developers/api-reference/compliance-api/2021-06-09T12:07:13+01:00weekly0.5/developers/api-reference/events-api/2021-06-09T11:48:40+01:00weekly0.5/developers/api-reference/iam-policies-api/2021-06-09T12:02:15+01:00weekly0.5/developers/api-reference/iam-subjects-api/2021-06-09T12:02:15+01:00weekly0.5/developers/api-reference/locations-api/2021-06-09T11:56:23+01:00weekly0.5/developers/api-reference/public-assets-api/2021-06-09T11:56:23+01:00weekly0.5/developers/api-reference/tenancies-api/2021-06-09T13:29:57+01:00weekly0.5/developers/api-reference/caps-api/2024-03-05T11:30:29+00:00weekly0.5 \ No newline at end of file diff --git a/developers/yaml-reference/assets/index.html b/developers/yaml-reference/assets/index.html index c218d4c66..e450ead6b 100644 --- a/developers/yaml-reference/assets/index.html +++ b/developers/yaml-reference/assets/index.html @@ -1,4 +1,4 @@ -Assets YAML Runner - DataTrails +Assets YAML Runner - DataTrails

    Assets YAML Runner

    Asset Actions Used with the Yaml Runner

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    Assets Create

    Adding an asset_label allows your Asset to be referenced in later steps of the story. For example, if you want to add a Compliance Policy for the Asset after it is created.

    The arc_namespace (for the Asset) and the namespace (for the location) are used to distinguish between Assets and Locations created between runs of the story. Usually, these field values are derived from an environment variable ARCHIVIST_NAMESPACE (default value is namespace).

    The optional confirm: true entry means that the YAML Runner will wait for the Asset to be committed before moving on to the next step. This is beneficial if the Asset will be referenced in later steps.

    For example:

    ---
     steps:
    @@ -83,4 +83,4 @@
           description: Wait for all Assets in the wipp namespace to be confirmed
         attrs:
           arc_namespace: wipp
    -

    \ No newline at end of file +

    ← YAML Runner Components
    Events YAML Runner →
    \ No newline at end of file diff --git a/developers/yaml-reference/compliance/index.html b/developers/yaml-reference/compliance/index.html index 039fe6b42..ff5d09112 100644 --- a/developers/yaml-reference/compliance/index.html +++ b/developers/yaml-reference/compliance/index.html @@ -1,4 +1,4 @@ -Compliance Policies YAML Runner - DataTrails +Compliance Policies YAML Runner - DataTrails

    Compliance Policies YAML Runner

    Compliance Policy Actions Used with the Yaml Runner

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    Compliance Policies Create

    This action creates a Compliance Policy that assets may be tested against.

    The specific fields required for creating Compliance Policies vary depending on the type of policy being used. Please see the Compliance Policies section for details regarding Compliance Policy types and YAML Runner examples of each.

    For example, a COMPLIANCE_RICHNESS policy that asserts radiation level must be less than 7:

    ---
    @@ -29,4 +29,4 @@
           description: Check Compliance of EV pump 1.
           report: true
           asset_label: ev pump 1
    -

    \ No newline at end of file +

    ← Subjects YAML Runner
    Estate Information YAML Runner →
    \ No newline at end of file diff --git a/developers/yaml-reference/estate-info/index.html b/developers/yaml-reference/estate-info/index.html index 2ab9f44d8..244663f9e 100644 --- a/developers/yaml-reference/estate-info/index.html +++ b/developers/yaml-reference/estate-info/index.html @@ -1,4 +1,4 @@ -Estate Information YAML Runner - DataTrails +Estate Information YAML Runner - DataTrails

    Estate Information YAML Runner

    Retrieve Estate Info Using the Yaml Runner

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    Composite Estate Info

    This action returns a report on the current number of Assets, Events, and locations in your DataTrails estate.

    ---
     steps:
       - step:
           action: COMPOSITE_ESTATE_INFO
           description: Estate Info Report
    -

    \ No newline at end of file +

    ← Compliance Policies YAML Runner
    Caps API →
    \ No newline at end of file diff --git a/developers/yaml-reference/events/index.html b/developers/yaml-reference/events/index.html index efe596ff4..7b5227ac9 100644 --- a/developers/yaml-reference/events/index.html +++ b/developers/yaml-reference/events/index.html @@ -1,4 +1,4 @@ -Events YAML Runner - DataTrails +Events YAML Runner - DataTrails

    Events YAML Runner

    Event Actions Used with the Yaml Runner

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    Events Create

    The asset_label must match the setting when the Asset was created in an earlier step. The asset_label may also be specified as the Asset ID of an existing Asset, in the form assets/<asset-id>.

    There are a few optional settings that can be used when creating Events. attachments uploads the attachment to DataTrails and the response is added to the Event before posting. location creates the location if it does not exist and adds it to the Event. The sbom setting uploads the SBOM to DataTrails and adds the response to the Event before posting.

    confirm: true tells the YAML Runner to wait for the Event to be committed before moving to the next step. This is optional and only necessary if your workflow requires 3rd parties (public or other DataTrails tenancies) to immediately view the Event. @@ -89,4 +89,4 @@ arc_display_type: open asset_attrs: arc_display_type: door -

    \ No newline at end of file +

    ← Assets YAML Runner
    Locations YAML Runner →
    \ No newline at end of file diff --git a/developers/yaml-reference/index.html b/developers/yaml-reference/index.html index 1aea54a8f..b866a8fe3 100644 --- a/developers/yaml-reference/index.html +++ b/developers/yaml-reference/index.html @@ -1,8 +1,8 @@ -YAML Reference - DataTrails +YAML Reference - DataTrails
    \ No newline at end of file +Sign Up
    \ No newline at end of file diff --git a/developers/yaml-reference/locations/index.html b/developers/yaml-reference/locations/index.html index 9e5f8c02a..4f9f267b3 100644 --- a/developers/yaml-reference/locations/index.html +++ b/developers/yaml-reference/locations/index.html @@ -1,4 +1,4 @@ -Locations YAML Runner - DataTrails +Locations YAML Runner - DataTrails

    Locations YAML Runner

    Location Actions Used with the Yaml Runner

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    Locations Create If Not Exists

    This action checks to see if the location you are looking to create already exists, and if not, executes the creation of your new location. The action checks for a location with the same identifier to verify that the location does not already exist.

    If this action is executed as part of a series of YAML Runner steps, the location created can be referenced in later steps using the key location_label.

    When you create your location, you may also add location attributes. In the example below, information such as the facility address and type have been included, as well as contact information for the location’s reception:

    ---
     steps:
    @@ -43,4 +43,4 @@
           print_response: true
         attrs:
           director: John Smith
    -

    \ No newline at end of file +

    ← Events YAML Runner
    Subjects YAML Runner →
    \ No newline at end of file diff --git a/developers/yaml-reference/story-runner-components/index.html b/developers/yaml-reference/story-runner-components/index.html index f8f08fda2..1c40dcd1d 100644 --- a/developers/yaml-reference/story-runner-components/index.html +++ b/developers/yaml-reference/story-runner-components/index.html @@ -1,4 +1,4 @@ -YAML Runner Components - DataTrails +YAML Runner Components - DataTrails

    YAML Runner Components

    Common Keys Used for the Yaml Runner

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    KeyValue
    actionRequired for every operation, the action specifies what function will be performed.
    descriptionOptional string that describes what the step is doing. For example, “Create the Asset My First Container”.
    asset_labelFor a series of steps run as one file, the Asset label could be a friendly name used by later steps to refer back to an Asset created in a previous step. If the Asset already exists, this field may be used to reference the Asset ID in the form assets/<asset-id>.
    location_labelFor a series of steps run as one file, the location label could be a friendly name used by later steps to refer back to a location created in a previous step. If the location already exists, this field may be used to reference the Location ID in the form locations/<location-id>.
    subject_labelFor a series of steps run as one file, the Subject label could be a friendly name used by later steps to refer back to a Subject created in a previous step. If the Subject already exists, this field may be used to reference the Subject ID in the form subjects/<subject-id>.
    print_responseSpecifying this field as true emits a JSON representation of the response, useful for debugging purposes.
    wait_timeOptional field specifying a number of seconds the story runner will pause before executing the next step. Useful for demonstration and/or testing Compliance Policies.

    Each step of the YAML Runner follows the same general pattern:

    ---
     steps:
    @@ -23,4 +23,4 @@
           --client-id <your-client-id> \
           --client-secret <your-client-secret> \
           <path-to-yaml-file>
    -

    \ No newline at end of file +

    ← Tenancies API
    Assets YAML Runner →
    \ No newline at end of file diff --git a/developers/yaml-reference/subjects/index.html b/developers/yaml-reference/subjects/index.html index 9a7944835..0b9ff6daa 100644 --- a/developers/yaml-reference/subjects/index.html +++ b/developers/yaml-reference/subjects/index.html @@ -1,4 +1,4 @@ -Subjects YAML Runner - DataTrails +Subjects YAML Runner - DataTrails

    Subjects YAML Runner

    Subject Actions Used with the Yaml Runner

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    Subjects Create

    This action creates a Subject using their wallet_pub_key and tessera_pub_key. Adding a subject_label allows the Subject to be referenced in later YAML Runner steps.

    ---
     steps:
    @@ -90,4 +90,4 @@
           print_response: true
           subject_label: A subject
     ``
    -

    \ No newline at end of file +

    ← Locations YAML Runner
    Compliance Policies YAML Runner →
    \ No newline at end of file diff --git a/docs/developer-patterns/3rdparty-verification/index.html b/docs/developer-patterns/3rdparty-verification/index.html new file mode 100644 index 000000000..90974b22c --- /dev/null +++ b/docs/developer-patterns/3rdparty-verification/index.html @@ -0,0 +1,2 @@ +https://docs.datatrails.ai/developers/developer-patterns/3rdparty-verification/ + \ No newline at end of file diff --git a/glossary/common-datatrails-terms/index.html b/glossary/common-datatrails-terms/index.html index 031d59a66..2dcf77511 100644 --- a/glossary/common-datatrails-terms/index.html +++ b/glossary/common-datatrails-terms/index.html @@ -1,4 +1,4 @@ -Common DataTrails Terms - DataTrails +Common DataTrails Terms - DataTrails

    Common DataTrails Terms

    Select a term for more information.

    TermDefinition
    ABACAttribute-Based Access Control; policy that allows you to grant fine-grain access to members of your Tenancy
    access policygrants chosen Asset and Event access to stakeholders
    actorperson/machine/software integration that created a particular entry on the provenance record
    administratoruser with permission to see all Asset and Event information within a Tenancy, and to grant access to other users
    anchoredSimple Hash events are committed to the blockchain by hashing them in batches. The hash recorded on the chain is called the anchor
    asseta DataTrails Asset is an entry in your tenancy, which has a collection of attributes that describes its current state and a complete life history of Events
    asset attributeskey-value pairs that represent information about an Asset
    asset IDthe permanent unique identifier for an Asset, under which all provenance information (Events) can be found
    audit traila formal record of activities (Events) that are made against a piece of data (an Asset)
    bearer tokenaccess token for DataTrails API; created using Custom Integration credentials
    behaviorsdetail what class of events in an Asset lifecycle you might wish to record
    compliance policyuser-defined rule sets that Assets can be tested against
    custom integrationclient ID and client secret credentials that are used to access the DataTrails API. Formerly known as an App Registration
    document hashcryptographic ‘fingerprint’ of a file or document that proves it is unmodified
    document statuswhen dealing with Document profile Assets in DataTrails you can attach certain lifecycle stage metadata to them such as ‘Draft’, ‘Published’, or ‘Withdrawn’ in order to properly convey whether or not someone checking provenance of the document should rely on a particular version
    eventtracks key moments of an Asset lifecycle; details of Who Did What When to an Asset
    event attributeskey-value pairs that represent information about an Event
    event IDunique identifier for an entry in the provenance record that means it can be shared and found later
    event typeevents in DataTrails are labeled with a ’type’ that signify what kind of evidence they relate to, for instance a ‘Publish’ event on a document, or a ‘Shipping’ event on physical goods. Event types can be very useful for defining access control rules as well as filtering the audit trail for specific kinds of information
    integrationbuilt-in API functionality that allows DataTrails to connect to third party products such as Dropbox
    leafa leaf is the term used for a node in the Merkle tree. It is labeled with a hash of the data block that it contains. Each leaf is stored in a massif
    linked foldera folder that has been selected to be linked to DataTrails during the configuration of an Integration
    massifthe Merkle log is divided into massifs each of which stores the verification data for a fixed number of leaves
    Merkle logthe Merkle log is the name for the verifiable data structure that is used by DataTrails to store the Event transaction data. It is append only and is based on a type of Merkle tree that is built from multiple massifs
    Merkle Mountain Range (MMR)As the massifs grow and multiply, the structure is called a Merkle Mountain Range (MMR) representing the multiple peaks. Its key characteristic is that previously added values, and also the organization of those values, does not change as new entries are appended to the log
    metadatastructured information about a file. In DataTrails this metadata is recorded in the Asset and Event attributes
    OBACOrganization-Based Access Control; policy allows sharing with the Administrator of another organization
    operationclass of Event being recorded
    organizationany entity with a distinct DataTrails account who publishes or verifies provenance information on the platform
    principal_acceptedthe actual user principal information belonging to the credential used to access the DataTrails REST interface
    principal_declaredan optional user-supplied value that tells who performed an Event
    proof mechanismmethod by which information on the DataTrails tamper evident ledger can be verified
    provenancethe version and ownership history of a piece of data. With DataTrails this is an immutable audit trail to prove Who Did What When to any piece of data
    public assetAssets that can be used to publicly assert data, accessible by URL without the need for a DataTrails account
    selectoridentifying attribute the Yaml Runner will use to check if your Asset exists already before attempting to create it
    simple hashProof Mechanism that commits information to the DataTrails blockchain in batches; value can confirm that information in the batch has not changed
    tenancyan organization’s private area within DataTrails, containing Asset and Event data
    tenant display namedisplayed only within own Tenancy for easy identification and switching
    tenant_acceptedthe time an event was actually received on the DataTrails REST interface
    tenant_committedthe time an event was confirmed distributed to all DLT nodes in the value chain
    tenant_declaredan optional user-supplied value that tells when an Event happened
    transactionfinal commitment of data to the Distributed Ledger Technology so that it is sealed and cannot be modified, tampered or erased
    unlinked foldera folder that has not been selected to be linked to DataTrails during the configuration or reconfiguration of an Integration
    verified domaintenancy name visible to others in place of the tenancy ID when viewing the Asset Overview of a public Asset or a shared private Asset. Must be verified by the DataTrails team
    verified organizationan organization which has paid to have their domain verified and displayed in place of their tenancy ID in Instaproof results and in the Asset Overview
    versionwhen dealing with Document profile Assets in DataTrails you can differentiate ‘final’ or ‘published’ versions of a document from other provenance information such as reviews or downloads

    \ No newline at end of file +Glossary

    Common DataTrails Terms

    Select a term for more information.

    TermDefinition
    ABACAttribute-Based Access Control; policy that allows you to grant fine-grain access to members of your Tenancy
    access policygrants chosen Asset and Event access to stakeholders
    actorperson/machine/software integration that created a particular entry on the provenance record
    administratoruser with permission to see all Asset and Event information within a Tenancy, and to grant access to other users
    anchoredSimple Hash events are committed to the blockchain by hashing them in batches. The hash recorded on the chain is called the anchor
    asseta DataTrails Asset is an entry in your tenancy, which has a collection of attributes that describes its current state and a complete life history of Events
    asset attributeskey-value pairs that represent information about an Asset
    asset IDthe permanent unique identifier for an Asset, under which all provenance information (Events) can be found
    audit traila formal record of activities (Events) that are made against a piece of data (an Asset)
    bearer tokenaccess token for DataTrails API; created using Custom Integration credentials
    behaviorsdetail what class of events in an Asset lifecycle you might wish to record
    compliance policyuser-defined rule sets that Assets can be tested against
    custom integrationclient ID and client secret credentials that are used to access the DataTrails API. Formerly known as an App Registration
    document hashcryptographic ‘fingerprint’ of a file or document that proves it is unmodified
    document statuswhen dealing with Document profile Assets in DataTrails you can attach certain lifecycle stage metadata to them such as ‘Draft’, ‘Published’, or ‘Withdrawn’ in order to properly convey whether or not someone checking provenance of the document should rely on a particular version
    eventtracks key moments of an Asset lifecycle; details of Who Did What When to an Asset
    event attributeskey-value pairs that represent information about an Event
    event IDunique identifier for an entry in the provenance record that means it can be shared and found later
    event typeevents in DataTrails are labeled with a ’type’ that signify what kind of evidence they relate to, for instance a ‘Publish’ event on a document, or a ‘Shipping’ event on physical goods. Event types can be very useful for defining access control rules as well as filtering the audit trail for specific kinds of information
    integrationbuilt-in API functionality that allows DataTrails to connect to third party products such as Dropbox
    leafa leaf is the term used for a node in the Merkle tree. It is labeled with a hash of the data block that it contains. Each leaf is stored in a massif
    linked foldera folder that has been selected to be linked to DataTrails during the configuration of an Integration
    massifthe Merkle log is divided into massifs each of which stores the verification data for a fixed number of leaves
    Merkle logthe Merkle log is the name for the verifiable data structure that is used by DataTrails to store the Event transaction data. It is append only and is based on a type of Merkle tree that is built from multiple massifs
    Merkle Mountain Range (MMR)As the massifs grow and multiply, the structure is called a Merkle Mountain Range (MMR) representing the multiple peaks. Its key characteristic is that previously added values, and also the organization of those values, does not change as new entries are appended to the log
    metadatastructured information about a file. In DataTrails this metadata is recorded in the Asset and Event attributes
    OBACOrganization-Based Access Control; policy allows sharing with the Administrator of another organization
    operationclass of Event being recorded
    organizationany entity with a distinct DataTrails account who publishes or verifies provenance information on the platform
    principal_acceptedthe actual user principal information belonging to the credential used to access the DataTrails REST interface
    principal_declaredan optional user-supplied value that tells who performed an Event
    proof mechanismmethod by which information on the DataTrails tamper evident ledger can be verified
    provenancethe version and ownership history of a piece of data. With DataTrails this is an immutable audit trail to prove Who Did What When to any piece of data
    public assetAssets that can be used to publicly assert data, accessible by URL without the need for a DataTrails account
    selectoridentifying attribute the Yaml Runner will use to check if your Asset exists already before attempting to create it
    simple hashProof Mechanism that commits information to the DataTrails blockchain in batches; value can confirm that information in the batch has not changed
    tenancyan organization’s private area within DataTrails, containing Asset and Event data
    tenant display namedisplayed only within own Tenancy for easy identification and switching
    tenant_acceptedthe time an event was actually received on the DataTrails REST interface
    tenant_committedthe time an event was confirmed distributed to all DLT nodes in the value chain
    tenant_declaredan optional user-supplied value that tells when an Event happened
    transactionfinal commitment of data to the Distributed Ledger Technology so that it is sealed and cannot be modified, tampered or erased
    unlinked foldera folder that has not been selected to be linked to DataTrails during the configuration or reconfiguration of an Integration
    verified domaintenancy name visible to others in place of the tenancy ID when viewing the Asset Overview of a public Asset or a shared private Asset. Must be verified by the DataTrails team
    verified organizationan organization which has paid to have their domain verified and displayed in place of their tenancy ID in Instaproof results and in the Asset Overview
    versionwhen dealing with Document profile Assets in DataTrails you can differentiate ‘final’ or ‘published’ versions of a document from other provenance information such as reviews or downloads

    Reserved Attributes →
    \ No newline at end of file diff --git a/glossary/index.html b/glossary/index.html index ba0d1ea69..212b0dbac 100644 --- a/glossary/index.html +++ b/glossary/index.html @@ -1,8 +1,8 @@ -Glossary - DataTrails +Glossary - DataTrails

    Glossary

    Select an option to to find out more about the terms used by DataTrails.

    • Common DataTrails Terms: A list of terms used by DataTrails.
    • Reserved Attributes: A list of Asset attributes that are used by the DataTrails platform and have a specific purpose.

    \ No newline at end of file +Sign Up

    Glossary

    Select an option to to find out more about the terms used by DataTrails.

    • Common DataTrails Terms: A list of terms used by DataTrails.
    • Reserved Attributes: A list of Asset attributes that are used by the DataTrails platform and have a specific purpose.

    \ No newline at end of file diff --git a/glossary/reserved-attributes/index.html b/glossary/reserved-attributes/index.html index d4235b676..1619680fb 100644 --- a/glossary/reserved-attributes/index.html +++ b/glossary/reserved-attributes/index.html @@ -1,4 +1,4 @@ -Reserved Attributes - DataTrails +Reserved Attributes - DataTrails

    Reserved Attributes

    Reserved attributes are asset attributes that are used by the DataTrails platform and have a specific purpose. All reserved attributes have the arc_ prefix.

    Select an attribute to see an example of it in use.

    Asset Attributes

    AttributeMeaning
    arc_descriptionbrief description of Asset or Event being recorded
    arc_display_namefriendly name identifier for Assets, Events, and policies
    arc_display_typeclassification of the type of Asset being traced that can be used for grouping or access control
    arc_home_location_identityphysical location to which an Asset nominally ‘belongs’. NOT related to the Asset’s position in space. For that, use arc_gis_* (below)
    arc_primary_imagean image attachment that will display as the thumbnail of an Asset

    Event Attributes

    AttributeMeaning
    arc_correlation_valuelinks Events together for evaluation in Compliance Policies
    arc_gis_lattags the Event as having happened at a particular latitude. Used in the DataTrails UI for mapping
    arc_gis_lngtags the Event as having happened at a particular longitude. Used in the DataTrails UI for mapping
    arc_descriptionbrief description of the Event being recorded
    arc_display_typeclassification of the type of Event being performed that can be used for grouping or access control
    arc_primary_imagean image attachment that will display as the thumbnail of the Event

    \ No newline at end of file +Glossary

    Reserved Attributes

    Reserved attributes are asset attributes that are used by the DataTrails platform and have a specific purpose. All reserved attributes have the arc_ prefix.

    Select an attribute to see an example of it in use.

    Asset Attributes

    AttributeMeaning
    arc_descriptionbrief description of Asset or Event being recorded
    arc_display_namefriendly name identifier for Assets, Events, and policies
    arc_display_typeclassification of the type of Asset being traced that can be used for grouping or access control
    arc_home_location_identityphysical location to which an Asset nominally ‘belongs’. NOT related to the Asset’s position in space. For that, use arc_gis_* (below)
    arc_primary_imagean image attachment that will display as the thumbnail of an Asset

    Event Attributes

    AttributeMeaning
    arc_correlation_valuelinks Events together for evaluation in Compliance Policies
    arc_gis_lattags the Event as having happened at a particular latitude. Used in the DataTrails UI for mapping
    arc_gis_lngtags the Event as having happened at a particular longitude. Used in the DataTrails UI for mapping
    arc_descriptionbrief description of the Event being recorded
    arc_display_typeclassification of the type of Event being performed that can be used for grouping or access control
    arc_primary_imagean image attachment that will display as the thumbnail of the Event

    \ No newline at end of file diff --git a/index.html b/index.html index b7a18ee0b..043945189 100644 --- a/index.html +++ b/index.html @@ -1,8 +1,8 @@ -DataTrails - Provenance as a Service to boost confidence in digital decisions. +DataTrails - Provenance as a Service to boost confidence in digital decisions.
    \ No newline at end of file +Sign Up
    \ No newline at end of file diff --git a/index.min.2169bac53c9501da53226a5d8f31eb46176aa81bff8bf89abfd0f8819a23ba785de12b881051f4996d03f209837ad7ff3c681b5ce69d43fd1388c69fec54c5d0.js b/index.min.f27b568387425eb7833c7f0b9d85322b100b3157a6c9b93ffa6ed20a099de6b6434ed85c8f0b3a8ebff7d8f2624c2a42475c47e87b0ed2e46d307ec3025c1348.js similarity index 97% rename from index.min.2169bac53c9501da53226a5d8f31eb46176aa81bff8bf89abfd0f8819a23ba785de12b881051f4996d03f209837ad7ff3c681b5ce69d43fd1388c69fec54c5d0.js rename to index.min.f27b568387425eb7833c7f0b9d85322b100b3157a6c9b93ffa6ed20a099de6b6434ed85c8f0b3a8ebff7d8f2624c2a42475c47e87b0ed2e46d307ec3025c1348.js index d6845f842..b5febc802 100644 --- a/index.min.2169bac53c9501da53226a5d8f31eb46176aa81bff8bf89abfd0f8819a23ba785de12b881051f4996d03f209837ad7ff3c681b5ce69d43fd1388c69fec54c5d0.js +++ b/index.min.f27b568387425eb7833c7f0b9d85322b100b3157a6c9b93ffa6ed20a099de6b6434ed85c8f0b3a8ebff7d8f2624c2a42475c47e87b0ed2e46d307ec3025c1348.js @@ -7115,7 +7115,336 @@ By comparison, our Administrator, Jill, can see the full details of the Asset: IAM Policies API Reference.

    -`},{id:21,href:"https://docs.datatrails.ai/platform/administration/dropbox-integration/",title:"Dropbox Integration",description:"Integrating with Dropbox",content:`

    The Dropbox Integration

    +`},{id:21,href:"https://docs.datatrails.ai/developers/developer-patterns/3rdparty-verification/",title:"Verified Replication of the Datatrails Transparency Logs",description:"Supporting verified replication of DataTrails merkle logs",content:`

    Introduction

    +

    Without the measures described in this article, it is still extremely challenging to compromise a transparency solution based on DataTrails.

    +

    To do so, the systems of more than just DataTrails need to be compromised in very specific ways. +To illustrate this, consider this typical flow for how Data can be used in a transparent and tamper evident way with DataTrails.

    + + +
    + + + +
    Replicated Transparency Logs
    +
    + + + + + + +

    This is already a very robust process. For this process to fail, the following steps must all be accomplished:

    +
      +
    1. The source of the Data, which may not be the Owner, must be compromised to substitute the malicious Data.
    2. +
    3. Owner authentication of the Data, such as adding a signed digest in the metadata, must be compromised.
    4. +
    5. The DataTrails SaaS database must be compromised.
    6. +
    7. The DataTrails ledger must be compromised and re-built and re-signed.
    8. +
    +

    Executing such an attack successfully would require significant effort and infiltration of both the Data source and DataTrails. +Nonetheless, for use-cases where even this small degree of trust in DataTrails is un-acceptable, the recipes in this article ensure the following guarantees are fully independent of DataTrails:

    +
      +
    1. The guarantee of non-falsifiability: Event data can not be falsified.
    2. +
    3. The guarantee of non-repudiation: Event data can not be removed from the record (ie ‘shredded’ or deleted).
    4. +
    5. The guarantee of provability: Event data held here and now can be proven to be identical to the data created there and then (creating these proofs does not require the original event data).
    6. +
    7. The guarantee of demonstrable completeness: Series of events (trails), can be proven to be complete with no gaps or omissions.
    8. +
    +

    These guarantees are “fail safe” against regular data corruption of the log data. +In the event of individual log entry corruption, verification checks would fail for that entry.

    +

    All modifications to the ledger which result in provable changes can be detected without a fully auditable replica. +By maintaining a fully auditable replica, continued verifiable operation is possible even if DataTrails is prevented from operating. +To provide this capability, checking that all metadata is exactly as was originally recorded, A copy of the metadata must also be replicated. +In cases where this capability is required, data retention remains manageable and has completely predictable storage requirements. +The log format makes it operational very simple to discard data that ceases to be interesting.

    +
    +
    The metadata is returned to the Owner when the event is recorded and is available from the regular API endpoints to any other authorized party. +Obtaining the returned metadata is not covered in this article.
    +
    +

    Replication Recipes

    +

    Environment Configuration for Veracity

    +

    The following recipes make use of these environment:

    +
    # DataTrails Public Tenant
    +export PUBLIC_TENANT="tenant/6ea5cd00-c711-3649-6914-7b125928bbb4"
    +
    +# Synsation Demo Tenant
    +# Replace TENANT with your Tenant ID to view your Tenant logs and events
    +export TENANT="tenant/6a009b40-eb55-4159-81f0-69024f89f53c"
    +

    Maintaining a Tamper Evident Log Replica

    +

    Based on a window of assurance, a replica may be maintained with one command, once a week.

    +

    A guarantee that actions are only taken on verified data can be achieved by running the following command once a week:

    + +
    +
    veracity watch --horizon 180h | \\
    +  veracity \\
    +  replicate-logs --replicadir merklelogs
    +

    Run the following to see what was replicated:

    +
    find merklelogs -type f
    +

    Generates output similar to:

    +
    merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000001.log
    +merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000000.log
    +merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000000.sth
    +merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000001.sth
    +
    + +

    A sensible value for --horizon is just a little (hours is more than enough) longer than the interval between updates. +To miss an update for a tenant, more than 16,000 events would need to be recorded in the interval.

    +
    +
    Larger time horizons may trigger rate limiting
    +
    +

    Initializing a Replica for All Tenants

    +

    If a replica of all DataTrails tenants is required, run the previous command with a very long horizon.

    + +
    +
    veracity watch --horizon 90000h | \\
    +  veracity \\
    +  replicate-logs --replicadir merklelogs
    +
    + +

    Having done this once, you should revert to using a horizon that is just a little longer than your update interval.

    +

    Limiting the Replica to Specific Tenants

    +

    The previous command will replicate the logs of all tenants. +This requires about 3.5 megabytes per 16,000 events.

    +

    To restrict a replica to a specific set of tenants, specify those tenants to the watch command.

    +

    A common requirement is the public attestation tenant and your own tenant, to accomplish this set $TENANT accordingly and run the following once a week.

    + +
    +
    veracity --tenant "$PUBLIC_TENANT,$TENANT" watch --horizon 180h | \\
    +  veracity \\
    +  replicate-logs --replicadir merklelogs
    +
    + +

    To initialize the replica, run the same command once but using an appropriately large --horizon

    +

    The remainder of this article discusses the commands replicate-logs and watch in more depth, covering how to replicate selective tenants, explaining the significance of the replicated materials.

    +

    How Veracity Supports Integrity and Inclusion Protection

    +

    DataTrail’s log format makes it simple to retain only the portions (massifs) of the log that are interesting. +Discarding un-interesting portions does not affect the independence or verifiability of the retained log.

    +

    See +Independently verifying DataTrails transparent merkle logs for a general introduction to veracity.

    +

    This diagram illustrates the logical flow when updating a local replica using veracity.

    +
    +
    + --- +config: + theme: classic +--- +sequenceDiagram + actor v as Verifier + box Runs locally to the verifier + participant V as Veracity + participant R as Replica + end + participant D as DataTrails + + v -->> V: Safely update my replica to massif X please + V ->> D: Fetch and verify the remote massifs and seals up to X + V ->> R: Check the verified remote data is consistent with the replica + V ->> R: Update the replica with verified additions + V -->> v: All OK! +
    + +
    +

    For the guarantees of non-falsifiability and non-repudiation to be independent of DataTrails, replication and verification of at least the most recently updated massif is necessary. +The replica must be updated often enough to capture all massifs. +As a massif, in the default tenant configuration, contains over 16,000 events, the frequency necessary to support this guarantee is both low, and completely determined by the specific tenant of interest.

    +

    Massifs verifying events that are no longer interesting can be safely discarded. +Remembering that the order that events were recorded matches the order of data in the log, it is usually the case that all massifs before a certain point can be discarded together.

    +

    Saving the API response data when events are recoded, or obtaining the metadata using the DataTrails events API is additionally required in order to support a full audit for data corruption.

    +

    When a a trusted local copy of the verifiable log is included in the “verify before use” process, it is reasonable to rely on DataTrails storage of the metadata. +If the DataTrails storage of the metadata is changed, the verification will “fail safe” against the local replicated log because the changed data will not verify against the local replica. +While this is a “false negative”, it ensures safety in the face of accidental or malicious damage to the DataTrails storage systems without the burden of maintaining copies of the metadata recorded in DataTrails. +Once the unsafe action is blocked, it is very use-case dependent what the appropriate next steps are. The common thread is that is critical that the action must be blocked in the first instance.

    +

    When the metadata is fetched, if it can be verified against the log replica, it proves that the DataTrails storage remains correct. +If it does not verify, it is proven that the metadata held by DataTrails is incorrect, though the Data being processed by the Consumer may still be correct and safe.

    +

    The veracity replicate-logs and watch are used to maintain the replica of the verifiable log.

    + +

    Updating the Currently Open Massif

    +

    Every DataTrails log is a series of one or more massifs. +The last, called the head, is where verification data for new events are recorded. +Once the head is full, a new head automatically starts.

    +

    This means there are 3 basic scenarios veracity copes with when updating a replica.

    +
      +
    1. Updating the currently open replicated massif with the new additions in the DataTrails open massif.
    2. +
    3. Replicating the start of a new open massif from DataTrails.
    4. +
    5. Replicating a limited number of new massifs from DataTrails, performing local consistency checks only if the replicated massifs follow the latest local massif.
    6. +
    +

    The first is the simplest to understand. In the diagram below the dashed boxes correspond to the open massifs.

    +

    The local replica of the open massif will always be equal or less in size than the remote. +Once veracity verifies the remote copy is consistent with the remote seal, it will then check the new data copied from the remote is consistent with its local copy of the open massif. +Consistent simply means it is an append, and that the remote has not “dropped” anything that it contained the last time it was replicated.

    +

    If there is any discrepancy in any of these checks, the current local data is left unchanged.

    + + +
    + + + +
    Replicating Transparency Logs with Veracity
    +
    + + + + + + +

    Replicating the Next Open Massif

    +

    The local replica starts out only having Massifs 0 & 1. +And 1 happens to be complete. +On the next event recorded by DataTrails, a new remote massif, Massif 2, is created. +More events may be recorded before the replica is updated. +Each massif contains verification data for a little over 16,000 events. +Provided the replication commands are run before Massif 2 is also filled, we are dealing with this case.

    +

    The local Massif 1 is read because, before copying the remote Massif 2 into the local replica, its consistency against both the remote seal and the previous local massif, Massif 1, are checked.

    +

    Once those checks are successfully made, the local replica gains its initial copy of Massif 2.

    + + +
    + + + +
    Replicating The Next Open Massif with Veracity
    +
    + + + + + + +

    Replicating, but Leaving a Gap

    +

    By default, veracity will fetch and verify all massifs, up to the requested, that follow on immediately after the most recent local massif. +In this case, where we request --massif 4 the default would be to fetch, verify and replicate Massifs 2, 3 & 4.

    +

    By default, a full tenant log is replicated. +The storage requirements are roughly 4mb per massif, and each massif has the verification data for about 16,000 events.

    +

    To provide a means to bound the size of the local replica and also to bound the amount of work, we provide the --ancestors option. +This specifies a fixed limit on the number of massifs that will be fetched. +In this example, the limit is 0, meaning massif 4 is fetched and verified, and we leave a gap between the local massifs 2 & the new local massif 4. +The gap means the consistency of the remote massif 4 is not checked against the local replica.

    +

    The command veracity replicate-logs --ancestors 0 --massif 4 requests that massif 4 is verified and then replicated locally, but prevents it from being verified for consistency against the current local replica.

    + + +
    + + + +
    Replicating The With Gaps
    +
    + + + + + + +

    Replicating the Log for the Public Tenant

    +

    For illustration, we take a more detailed look at using watch and replicate-logs to replicate the public tenant verifiable log data.

    + +
    +
    veracity --tenant $PUBLIC_TENANT watch
    +

    Generates output similar to:

    +
    [
    +  {
    +    "massifindex": 1,
    +    "tenant": "tenant/6ea5cd00-c711-3649-6914-7b125928bbb4",
    +    "idcommitted": "0191c424e62d04b300",
    +    "idconfirmed": "0191c424e62d04b300",
    +    "lastmodified": "2024-09-05T21:43:58Z",
    +    "massif": "v1/mmrs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000001.log",
    +    "seal": "v1/mmrs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000001.sth"
    +  }
    +]
    +

    If instead you get:

    +
    error: no changes found
    +

    There has been no activity in any tenant for the default watch horizon (how far back we look for changes).

    +

    To set an explicit, and in this example very large, horizon try the following:

    +
    veracity watch --horizon 10000h
    +
    + +

    The watch command is used to determine the massifindex, even when you are only interested in a single tenant. +You then provide that index to the replicate-logs command using the --massif option:

    + +
    +
    veracity \\
    +    --tenant $PUBLIC_TENANT \\
    +    replicate-logs --massif 1 \\
    +    --replicadir merklelogs
    +
    +find merklelogs -type f
    +

    Generates output similar to:

    +
    merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000001.log
    +merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000000.log
    +merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000000.sth
    +merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000001.sth
    +
    + +

    By default, all massifs up to and including the massif specified by --massif <N> are verified remotely and checked for consistency against the local replica (following the logical steps in the diagram above).

    +

    The numbered .log files are the verifiable data for your log.

    +

    The .sth files are +COSE Sign1 binary format signed messages. +Each .sth is associated with the identically numbered massif. +The log root material in the .sth signature attests to the entire state of the log up to the end of the associated massif. +The details of consuming the binary format of the seal and verifying the signature are beyond the scope of this article.

    +

    However, the implementation used by veracity can be found in the open source merkle log library maintained by DataTrails +go-datatrails-merklelog

    +

    Takeaways

    + +`},{id:22,href:"https://docs.datatrails.ai/platform/administration/dropbox-integration/",title:"Dropbox Integration",description:"Integrating with Dropbox",content:`

    The Dropbox Integration

    Connecting your DataTrails tenancy to your Dropbox account will allow you to automatically record and maintain the provenance metadata of your files in an immutable Audit Trail.

    DataTrails uses transparent and auditable distributed ledger technology to maintain an immutable trail of provenance metadata independent of, but in concert with, the original file in Dropbox. The original data never enters the DataTrails system and remains on Dropbox. @@ -7470,7 +7799,7 @@ You would disconnect in Dropbox if you no longer wish to use DataTrails for prov

    This is how to connect and disconnect DataTrails and Dropbox, it is that simple! Please see our FAQ for more information.

    -`},{id:22,href:"https://docs.datatrails.ai/platform/administration/compliance-policies/",title:"Compliance Policies",description:"Creating and Managing Compliance Policies",content:`

    Creating a Compliance Policy

    +`},{id:23,href:"https://docs.datatrails.ai/platform/administration/compliance-policies/",title:"Compliance Policies",description:"Creating and Managing Compliance Policies",content:`

    Creating a Compliance Policy

    Compliance Policies are user-defined rule sets that Assets can be tested against. Compliance Policies only need to be created once; all applicable Assets will be tested against that policy thereafter.

    For example, a policy might assert that “Maintenance Alarm Events must be addressed by a Maintenance Report Event, recorded within 72 hours of the alarm”. This creates a Compliance Policy in the system which any Asset can be tested against as needed.

    As compliance is ensured by a regular series of Events, an Audit Trail builds up over time that allows compliance to be checked for the entire lifetime of the Asset.

    @@ -7827,7 +8156,7 @@ An example response for a non-compliant Asset

    "next_page_token": "", "compliant_at": "2024-01-17T10:16:12Z" } -`},{id:23,href:"https://docs.datatrails.ai/platform/administration/grouping-assets-by-location/",title:"Grouping Assets by Location",description:"Adding a Location",content:`

    Locations associate an Asset with a ‘home’ that can help when governing sharing policies with OBAC and ABAC. Locations do not need pinpoint precision and can be named by site, building, or other logical grouping.

    +`},{id:24,href:"https://docs.datatrails.ai/platform/administration/grouping-assets-by-location/",title:"Grouping Assets by Location",description:"Adding a Location",content:`

    Locations associate an Asset with a ‘home’ that can help when governing sharing policies with OBAC and ABAC. Locations do not need pinpoint precision and can be named by site, building, or other logical grouping.

    It may be useful to indicate an Asset’s origin. For example, if tracking traveling consultant’s laptops, you may wish to associate them with a ‘home’ office.

    Caution: It is important to recognize that the location does not necessarily denote the Asset’s current position in space; it simply determines which facility the Asset belongs to. For things that move around, use GIS coordinates on Events instead. See @@ -8393,7 +8722,7 @@ For more information on creating Events, please visit

    -`},{id:24,href:"https://docs.datatrails.ai/developers/api-reference/app-registrations-api/",title:"App Registrations API",description:"App Registrations API Reference",content:`
    +`},{id:25,href:"https://docs.datatrails.ai/developers/api-reference/app-registrations-api/",title:"App Registrations API",description:"App Registrations API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -8762,6 +9091,16 @@ If you are looking for a simple way to test our API you might prefer our Human-readable display name for this Application. + + roles + array + + + + + + + @@ -8851,6 +9190,16 @@ If you are looking for a simple way to test our API you might prefer our Resource name for the application + + roles + array + + + + + + + tenant_id string @@ -9075,6 +9424,16 @@ If you are looking for a simple way to test our API you might prefer our Resource name for the application + + roles + array + + + + + + + tenant_id string @@ -9235,6 +9594,16 @@ If you are looking for a simple way to test our API you might prefer our Resource name for the application + + roles + array + + + + + + + tenant_id string @@ -9393,6 +9762,16 @@ If you are looking for a simple way to test our API you might prefer our Resource name for the application + + roles + array + + + + + + + tenant_id string @@ -9449,7 +9828,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`},{id:25,href:"https://docs.datatrails.ai/developers/api-reference/assets-api/",title:"Assets API",description:"Assets API Reference",content:`

    +`},{id:26,href:"https://docs.datatrails.ai/developers/api-reference/assets-api/",title:"Assets API",description:"Assets API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -11499,7 +11878,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`},{id:26,href:"https://docs.datatrails.ai/developers/api-reference/attachments-api/",title:"Attachments API",description:"Attachments API Reference",content:`
    +`},{id:27,href:"https://docs.datatrails.ai/developers/api-reference/attachments-api/",title:"Attachments API",description:"Attachments API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -12620,7 +12999,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`},{id:27,href:"https://docs.datatrails.ai/developers/api-reference/blobs-api/",title:"Blobs API",description:"Blobs API Reference",content:`
    +`},{id:28,href:"https://docs.datatrails.ai/developers/api-reference/blobs-api/",title:"Blobs API",description:"Blobs API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -13167,7 +13546,7 @@ For information on Attachments and how to implement them, please refer to

    -`},{id:28,href:"https://docs.datatrails.ai/developers/api-reference/compliance-api/",title:"Compliance API",description:"Compliance API Reference",content:`
    +`},{id:29,href:"https://docs.datatrails.ai/developers/api-reference/compliance-api/",title:"Compliance API",description:"Compliance API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -14479,7 +14858,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`},{id:29,href:"https://docs.datatrails.ai/developers/api-reference/events-api/",title:"Events API",description:"Events API Reference",content:`
    +`},{id:30,href:"https://docs.datatrails.ai/developers/api-reference/events-api/",title:"Events API",description:"Events API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -16605,7 +16984,7 @@ For example:

    -`},{id:30,href:"https://docs.datatrails.ai/developers/api-reference/iam-policies-api/",title:"IAM Policies API",description:"IAM Policies API Reference",content:`
    +`},{id:31,href:"https://docs.datatrails.ai/developers/api-reference/iam-policies-api/",title:"IAM Policies API",description:"IAM Policies API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -18298,7 +18677,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`},{id:31,href:"https://docs.datatrails.ai/developers/api-reference/iam-subjects-api/",title:"IAM Subjects API",description:"IAM Subjects API Reference",content:`
    +`},{id:32,href:"https://docs.datatrails.ai/developers/api-reference/iam-subjects-api/",title:"IAM Subjects API",description:"IAM Subjects API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -19215,7 +19594,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`},{id:32,href:"https://docs.datatrails.ai/developers/developer-patterns/scitt-api/",title:"Quickstart: SCITT Statements (Preview)",description:"Getting Started with SCITT: creating a collection of statements (Preview)",content:`
    +`},{id:33,href:"https://docs.datatrails.ai/developers/developer-patterns/scitt-api/",title:"Quickstart: SCITT Statements (Preview)",description:"Getting Started with SCITT: creating a collection of statements (Preview)",content:`
    The SCITT API is currently in preview and subject to change

    The Supply Chain Integrity, Transparency and Trust (SCITT) initiative is a set of @@ -19345,7 +19724,7 @@ By using the content-type parameter, verifiers can filter to specific types, fil

  • SCITT.io
  • -`},{id:33,href:"https://docs.datatrails.ai/developers/api-reference/locations-api/",title:"Locations API",description:"Locations API Reference",content:`

    +`},{id:34,href:"https://docs.datatrails.ai/developers/api-reference/locations-api/",title:"Locations API",description:"Locations API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -20490,7 +20869,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`},{id:34,href:"https://docs.datatrails.ai/developers/api-reference/public-assets-api/",title:"Public Assets API",description:"Public Assets API Reference",content:`
    +`},{id:35,href:"https://docs.datatrails.ai/developers/api-reference/public-assets-api/",title:"Public Assets API",description:"Public Assets API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -21332,7 +21711,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`},{id:35,href:"https://docs.datatrails.ai/developers/api-reference/tenancies-api/",title:"Tenancies API",description:"Tenancies API Reference",content:`
    +`},{id:36,href:"https://docs.datatrails.ai/developers/api-reference/tenancies-api/",title:"Tenancies API",description:"Tenancies API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -22467,7 +22846,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`},{id:36,href:"https://docs.datatrails.ai/developers/yaml-reference/story-runner-components/",title:"YAML Runner Components",description:"Common Keys Used for the Yaml Runner",content:`
    +`},{id:37,href:"https://docs.datatrails.ai/developers/yaml-reference/story-runner-components/",title:"YAML Runner Components",description:"Common Keys Used for the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -22529,7 +22908,7 @@ If you are looking for a simple way to test our API you might prefer our --client-id <your-client-id> \\ --client-secret <your-client-secret> \\ <path-to-yaml-file> -
    `},{id:37,href:"https://docs.datatrails.ai/developers/yaml-reference/assets/",title:"Assets YAML Runner",description:"Asset Actions Used with the Yaml Runner",content:`
    +`},{id:38,href:"https://docs.datatrails.ai/developers/yaml-reference/assets/",title:"Assets YAML Runner",description:"Asset Actions Used with the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -22651,7 +23030,7 @@ If this is not needed then do not wait for confirmation.

    description: Wait for all Assets in the wipp namespace to be confirmed attrs: arc_namespace: wipp -
    `},{id:38,href:"https://docs.datatrails.ai/developers/yaml-reference/events/",title:"Events YAML Runner",description:"Event Actions Used with the Yaml Runner",content:`
    +`},{id:39,href:"https://docs.datatrails.ai/developers/yaml-reference/events/",title:"Events YAML Runner",description:"Event Actions Used with the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -22753,7 +23132,7 @@ If this is not needed then do not wait for confirmation.

    arc_display_type: open asset_attrs: arc_display_type: door -
    `},{id:39,href:"https://docs.datatrails.ai/developers/yaml-reference/locations/",title:"Locations YAML Runner",description:"Location Actions Used with the Yaml Runner",content:`
    +`},{id:40,href:"https://docs.datatrails.ai/developers/yaml-reference/locations/",title:"Locations YAML Runner",description:"Location Actions Used with the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -22802,7 +23181,7 @@ If this is not needed then do not wait for confirmation.

    print_response: true attrs: director: John Smith -
    `},{id:40,href:"https://docs.datatrails.ai/developers/yaml-reference/subjects/",title:"Subjects YAML Runner",description:"Subject Actions Used with the Yaml Runner",content:`
    +`},{id:41,href:"https://docs.datatrails.ai/developers/yaml-reference/subjects/",title:"Subjects YAML Runner",description:"Subject Actions Used with the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -22912,7 +23291,7 @@ If this is not needed then do not wait for confirmation.

    print_response: true subject_label: A subject \`\` -
    `},{id:41,href:"https://docs.datatrails.ai/developers/yaml-reference/compliance/",title:"Compliance Policies YAML Runner",description:"Compliance Policy Actions Used with the Yaml Runner",content:`
    +`},{id:42,href:"https://docs.datatrails.ai/developers/yaml-reference/compliance/",title:"Compliance Policies YAML Runner",description:"Compliance Policy Actions Used with the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -22946,7 +23325,7 @@ If this is not needed then do not wait for confirmation.

    description: Check Compliance of EV pump 1. report: true asset_label: ev pump 1 -
    `},{id:42,href:"https://docs.datatrails.ai/developers/yaml-reference/estate-info/",title:"Estate Information YAML Runner",description:"Retrieve Estate Info Using the Yaml Runner",content:`
    +`},{id:43,href:"https://docs.datatrails.ai/developers/yaml-reference/estate-info/",title:"Estate Information YAML Runner",description:"Retrieve Estate Info Using the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -22959,7 +23338,7 @@ If this is not needed then do not wait for confirmation.

    - step: action: COMPOSITE_ESTATE_INFO description: Estate Info Report -
    `},{id:43,href:"https://docs.datatrails.ai/developers/developer-patterns/",title:"Developer Patterns",description:"",content:`
    +
    `},{id:44,href:"https://docs.datatrails.ai/developers/developer-patterns/",title:"Developer Patterns",description:"",content:`

    Developer Patterns

    This sub-section of the Developers subject area contains more detailed information on topics that cannot be covered by the API or YAML Runner references.

    @@ -22975,7 +23354,7 @@ If this is not needed then do not wait for confirmation.

    Software Package Profile →

    -`},{id:44,href:"https://docs.datatrails.ai/developers/api-reference/caps-api/",title:"Caps API",description:"Caps API Reference",content:`
    +`},{id:45,href:"https://docs.datatrails.ai/developers/api-reference/caps-api/",title:"Caps API",description:"Caps API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -23093,7 +23472,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`},{id:45,href:"https://docs.datatrails.ai/platform/administration/",title:"Administration",description:"",content:`
    +`},{id:46,href:"https://docs.datatrails.ai/platform/administration/",title:"Administration",description:"",content:`

    Administration

    This section is for Tenancy Administrators who need to know how to manage their Users and configure access to Assets.

    @@ -23107,7 +23486,7 @@ If you are looking for a simple way to test our API you might prefer our Grouping Assets by Location →

    -`},{id:46,href:"https://docs.datatrails.ai/developers/yaml-reference/",title:"YAML Reference",description:"",content:`
    +`},{id:47,href:"https://docs.datatrails.ai/developers/yaml-reference/",title:"YAML Reference",description:"",content:`

    YAML Runner Reference

    This sub-section of the Developers subject area contains articles that describe and define the functionality of the DataTrails YAML Runner.

    @@ -23121,7 +23500,7 @@ If you are looking for a simple way to test our API you might prefer our Estate Information YAML Runner →

    -`},{id:47,href:"https://docs.datatrails.ai/developers/api-reference/",title:"API Reference",description:"",content:`
    +`},{id:48,href:"https://docs.datatrails.ai/developers/api-reference/",title:"API Reference",description:"",content:`

    API Reference

    This sub-section of the Developers subject area contains articles that describe and define the DataTrails REST API endpoints.

    @@ -23140,7 +23519,7 @@ If you are looking for a simple way to test our API you might prefer our Tenancy Caps API →

    -`},{id:48,href:"https://docs.datatrails.ai/platform/overview/",title:"Overview",description:"",content:`
    +`},{id:49,href:"https://docs.datatrails.ai/platform/overview/",title:"Overview",description:"",content:`

    Overview

    Begin your DataTrails journey here.

    @@ -23156,7 +23535,7 @@ If you are looking for a simple way to test our API you might prefer our Public Attestation →

    -`},{id:49,href:"https://docs.datatrails.ai/developers/",title:"Developers",description:"DataTrails developer documentation",content:`
    +`},{id:50,href:"https://docs.datatrails.ai/developers/",title:"Developers",description:"DataTrails developer documentation",content:`

    Developers

    If you are a developer who is looking to easily add provenance to their data, this section is for you.
    @@ -23184,7 +23563,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`},{id:50,href:"https://docs.datatrails.ai/platform/",title:"Platform",description:"DataTrails Platform and configuration documentation",content:`
    +`},{id:51,href:"https://docs.datatrails.ai/platform/",title:"Platform",description:"DataTrails Platform and configuration documentation",content:`

    Platform

    If you are new to DataTrails, this is the place to start.

    @@ -30319,7 +30698,336 @@ By comparison, our Administrator, Jill, can see the full details of the Asset: IAM Policies API Reference.

    -`}).add({id:21,href:"https://docs.datatrails.ai/platform/administration/dropbox-integration/",title:"Dropbox Integration",description:"Integrating with Dropbox",content:`

    The Dropbox Integration

    +`}).add({id:21,href:"https://docs.datatrails.ai/developers/developer-patterns/3rdparty-verification/",title:"Verified Replication of the Datatrails Transparency Logs",description:"Supporting verified replication of DataTrails merkle logs",content:`

    Introduction

    +

    Without the measures described in this article, it is still extremely challenging to compromise a transparency solution based on DataTrails.

    +

    To do so, the systems of more than just DataTrails need to be compromised in very specific ways. +To illustrate this, consider this typical flow for how Data can be used in a transparent and tamper evident way with DataTrails.

    + + +
    + + + +
    Replicated Transparency Logs
    +
    + + + + + + +

    This is already a very robust process. For this process to fail, the following steps must all be accomplished:

    +
      +
    1. The source of the Data, which may not be the Owner, must be compromised to substitute the malicious Data.
    2. +
    3. Owner authentication of the Data, such as adding a signed digest in the metadata, must be compromised.
    4. +
    5. The DataTrails SaaS database must be compromised.
    6. +
    7. The DataTrails ledger must be compromised and re-built and re-signed.
    8. +
    +

    Executing such an attack successfully would require significant effort and infiltration of both the Data source and DataTrails. +Nonetheless, for use-cases where even this small degree of trust in DataTrails is un-acceptable, the recipes in this article ensure the following guarantees are fully independent of DataTrails:

    +
      +
    1. The guarantee of non-falsifiability: Event data can not be falsified.
    2. +
    3. The guarantee of non-repudiation: Event data can not be removed from the record (ie ‘shredded’ or deleted).
    4. +
    5. The guarantee of provability: Event data held here and now can be proven to be identical to the data created there and then (creating these proofs does not require the original event data).
    6. +
    7. The guarantee of demonstrable completeness: Series of events (trails), can be proven to be complete with no gaps or omissions.
    8. +
    +

    These guarantees are “fail safe” against regular data corruption of the log data. +In the event of individual log entry corruption, verification checks would fail for that entry.

    +

    All modifications to the ledger which result in provable changes can be detected without a fully auditable replica. +By maintaining a fully auditable replica, continued verifiable operation is possible even if DataTrails is prevented from operating. +To provide this capability, checking that all metadata is exactly as was originally recorded, A copy of the metadata must also be replicated. +In cases where this capability is required, data retention remains manageable and has completely predictable storage requirements. +The log format makes it operational very simple to discard data that ceases to be interesting.

    +
    +
    The metadata is returned to the Owner when the event is recorded and is available from the regular API endpoints to any other authorized party. +Obtaining the returned metadata is not covered in this article.
    +
    +

    Replication Recipes

    +

    Environment Configuration for Veracity

    +

    The following recipes make use of these environment:

    +
    # DataTrails Public Tenant
    +export PUBLIC_TENANT="tenant/6ea5cd00-c711-3649-6914-7b125928bbb4"
    +
    +# Synsation Demo Tenant
    +# Replace TENANT with your Tenant ID to view your Tenant logs and events
    +export TENANT="tenant/6a009b40-eb55-4159-81f0-69024f89f53c"
    +

    Maintaining a Tamper Evident Log Replica

    +

    Based on a window of assurance, a replica may be maintained with one command, once a week.

    +

    A guarantee that actions are only taken on verified data can be achieved by running the following command once a week:

    + +
    +
    veracity watch --horizon 180h | \\
    +  veracity \\
    +  replicate-logs --replicadir merklelogs
    +

    Run the following to see what was replicated:

    +
    find merklelogs -type f
    +

    Generates output similar to:

    +
    merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000001.log
    +merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000000.log
    +merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000000.sth
    +merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000001.sth
    +
    + +

    A sensible value for --horizon is just a little (hours is more than enough) longer than the interval between updates. +To miss an update for a tenant, more than 16,000 events would need to be recorded in the interval.

    +
    +
    Larger time horizons may trigger rate limiting
    +
    +

    Initializing a Replica for All Tenants

    +

    If a replica of all DataTrails tenants is required, run the previous command with a very long horizon.

    + +
    +
    veracity watch --horizon 90000h | \\
    +  veracity \\
    +  replicate-logs --replicadir merklelogs
    +
    + +

    Having done this once, you should revert to using a horizon that is just a little longer than your update interval.

    +

    Limiting the Replica to Specific Tenants

    +

    The previous command will replicate the logs of all tenants. +This requires about 3.5 megabytes per 16,000 events.

    +

    To restrict a replica to a specific set of tenants, specify those tenants to the watch command.

    +

    A common requirement is the public attestation tenant and your own tenant, to accomplish this set $TENANT accordingly and run the following once a week.

    + +
    +
    veracity --tenant "$PUBLIC_TENANT,$TENANT" watch --horizon 180h | \\
    +  veracity \\
    +  replicate-logs --replicadir merklelogs
    +
    + +

    To initialize the replica, run the same command once but using an appropriately large --horizon

    +

    The remainder of this article discusses the commands replicate-logs and watch in more depth, covering how to replicate selective tenants, explaining the significance of the replicated materials.

    +

    How Veracity Supports Integrity and Inclusion Protection

    +

    DataTrail’s log format makes it simple to retain only the portions (massifs) of the log that are interesting. +Discarding un-interesting portions does not affect the independence or verifiability of the retained log.

    +

    See +Independently verifying DataTrails transparent merkle logs for a general introduction to veracity.

    +

    This diagram illustrates the logical flow when updating a local replica using veracity.

    +
    +
    + --- +config: + theme: classic +--- +sequenceDiagram + actor v as Verifier + box Runs locally to the verifier + participant V as Veracity + participant R as Replica + end + participant D as DataTrails + + v -->> V: Safely update my replica to massif X please + V ->> D: Fetch and verify the remote massifs and seals up to X + V ->> R: Check the verified remote data is consistent with the replica + V ->> R: Update the replica with verified additions + V -->> v: All OK! +
    + +
    +

    For the guarantees of non-falsifiability and non-repudiation to be independent of DataTrails, replication and verification of at least the most recently updated massif is necessary. +The replica must be updated often enough to capture all massifs. +As a massif, in the default tenant configuration, contains over 16,000 events, the frequency necessary to support this guarantee is both low, and completely determined by the specific tenant of interest.

    +

    Massifs verifying events that are no longer interesting can be safely discarded. +Remembering that the order that events were recorded matches the order of data in the log, it is usually the case that all massifs before a certain point can be discarded together.

    +

    Saving the API response data when events are recoded, or obtaining the metadata using the DataTrails events API is additionally required in order to support a full audit for data corruption.

    +

    When a a trusted local copy of the verifiable log is included in the “verify before use” process, it is reasonable to rely on DataTrails storage of the metadata. +If the DataTrails storage of the metadata is changed, the verification will “fail safe” against the local replicated log because the changed data will not verify against the local replica. +While this is a “false negative”, it ensures safety in the face of accidental or malicious damage to the DataTrails storage systems without the burden of maintaining copies of the metadata recorded in DataTrails. +Once the unsafe action is blocked, it is very use-case dependent what the appropriate next steps are. The common thread is that is critical that the action must be blocked in the first instance.

    +

    When the metadata is fetched, if it can be verified against the log replica, it proves that the DataTrails storage remains correct. +If it does not verify, it is proven that the metadata held by DataTrails is incorrect, though the Data being processed by the Consumer may still be correct and safe.

    +

    The veracity replicate-logs and watch are used to maintain the replica of the verifiable log.

    +
      +
    • veracity watch is used to give notice of which tenants have updates to their logs that need to be considered for replication.
    • +
    • veracity replicate-logs performs the activities in the diagram above. It can be directed to examine a specific tenant, or it can be provided with the output of veracity watch
    • +
    +

    Updating the Currently Open Massif

    +

    Every DataTrails log is a series of one or more massifs. +The last, called the head, is where verification data for new events are recorded. +Once the head is full, a new head automatically starts.

    +

    This means there are 3 basic scenarios veracity copes with when updating a replica.

    +
      +
    1. Updating the currently open replicated massif with the new additions in the DataTrails open massif.
    2. +
    3. Replicating the start of a new open massif from DataTrails.
    4. +
    5. Replicating a limited number of new massifs from DataTrails, performing local consistency checks only if the replicated massifs follow the latest local massif.
    6. +
    +

    The first is the simplest to understand. In the diagram below the dashed boxes correspond to the open massifs.

    +

    The local replica of the open massif will always be equal or less in size than the remote. +Once veracity verifies the remote copy is consistent with the remote seal, it will then check the new data copied from the remote is consistent with its local copy of the open massif. +Consistent simply means it is an append, and that the remote has not “dropped” anything that it contained the last time it was replicated.

    +

    If there is any discrepancy in any of these checks, the current local data is left unchanged.

    + + +
    + + + +
    Replicating Transparency Logs with Veracity
    +
    + + + + + + +

    Replicating the Next Open Massif

    +

    The local replica starts out only having Massifs 0 & 1. +And 1 happens to be complete. +On the next event recorded by DataTrails, a new remote massif, Massif 2, is created. +More events may be recorded before the replica is updated. +Each massif contains verification data for a little over 16,000 events. +Provided the replication commands are run before Massif 2 is also filled, we are dealing with this case.

    +

    The local Massif 1 is read because, before copying the remote Massif 2 into the local replica, its consistency against both the remote seal and the previous local massif, Massif 1, are checked.

    +

    Once those checks are successfully made, the local replica gains its initial copy of Massif 2.

    + + +
    + + + +
    Replicating The Next Open Massif with Veracity
    +
    + + + + + + +

    Replicating, but Leaving a Gap

    +

    By default, veracity will fetch and verify all massifs, up to the requested, that follow on immediately after the most recent local massif. +In this case, where we request --massif 4 the default would be to fetch, verify and replicate Massifs 2, 3 & 4.

    +

    By default, a full tenant log is replicated. +The storage requirements are roughly 4mb per massif, and each massif has the verification data for about 16,000 events.

    +

    To provide a means to bound the size of the local replica and also to bound the amount of work, we provide the --ancestors option. +This specifies a fixed limit on the number of massifs that will be fetched. +In this example, the limit is 0, meaning massif 4 is fetched and verified, and we leave a gap between the local massifs 2 & the new local massif 4. +The gap means the consistency of the remote massif 4 is not checked against the local replica.

    +

    The command veracity replicate-logs --ancestors 0 --massif 4 requests that massif 4 is verified and then replicated locally, but prevents it from being verified for consistency against the current local replica.

    + + +
    + + + +
    Replicating The With Gaps
    +
    + + + + + + +

    Replicating the Log for the Public Tenant

    +

    For illustration, we take a more detailed look at using watch and replicate-logs to replicate the public tenant verifiable log data.

    + +
    +
    veracity --tenant $PUBLIC_TENANT watch
    +

    Generates output similar to:

    +
    [
    +  {
    +    "massifindex": 1,
    +    "tenant": "tenant/6ea5cd00-c711-3649-6914-7b125928bbb4",
    +    "idcommitted": "0191c424e62d04b300",
    +    "idconfirmed": "0191c424e62d04b300",
    +    "lastmodified": "2024-09-05T21:43:58Z",
    +    "massif": "v1/mmrs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000001.log",
    +    "seal": "v1/mmrs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000001.sth"
    +  }
    +]
    +

    If instead you get:

    +
    error: no changes found
    +

    There has been no activity in any tenant for the default watch horizon (how far back we look for changes).

    +

    To set an explicit, and in this example very large, horizon try the following:

    +
    veracity watch --horizon 10000h
    +
    + +

    The watch command is used to determine the massifindex, even when you are only interested in a single tenant. +You then provide that index to the replicate-logs command using the --massif option:

    + +
    +
    veracity \\
    +    --tenant $PUBLIC_TENANT \\
    +    replicate-logs --massif 1 \\
    +    --replicadir merklelogs
    +
    +find merklelogs -type f
    +

    Generates output similar to:

    +
    merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000001.log
    +merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifs/0000000000000000.log
    +merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000000.sth
    +merklelogs/tenant/6ea5cd00-c711-3649-6914-7b125928bbb4/0/massifseals/0000000000000001.sth
    +
    + +

    By default, all massifs up to and including the massif specified by --massif <N> are verified remotely and checked for consistency against the local replica (following the logical steps in the diagram above).

    +

    The numbered .log files are the verifiable data for your log.

    +

    The .sth files are +COSE Sign1 binary format signed messages. +Each .sth is associated with the identically numbered massif. +The log root material in the .sth signature attests to the entire state of the log up to the end of the associated massif. +The details of consuming the binary format of the seal and verifying the signature are beyond the scope of this article.

    +

    However, the implementation used by veracity can be found in the open source merkle log library maintained by DataTrails +go-datatrails-merklelog

    +

    Takeaways

    +
      +
    • To be sure mistaken, or malicious, changes to DataTrails data stores can always be detected run this command about once a week: +veracity --tenant $TENANT watch --horizon 180h | veracity replicate-logs --replicadir merklelogs
    • +
    • This process guarantees you can’t be misrepresented, any alternate version of events would be provably false.
    • +
    • To guarantee continued operation even if DataTrails is prevented from operating, a copy of the DataTrails metadata must be retained.
    • +
    • You can reasonably chose to trust DataTrails copy, because, even in the most extreme cases, it is “fail-safe” if DataTrails SaaS storage is compromised, when combined with a replicated verifiable merkle log.
    • +
    +`}).add({id:22,href:"https://docs.datatrails.ai/platform/administration/dropbox-integration/",title:"Dropbox Integration",description:"Integrating with Dropbox",content:`

    The Dropbox Integration

    Connecting your DataTrails tenancy to your Dropbox account will allow you to automatically record and maintain the provenance metadata of your files in an immutable Audit Trail.

    DataTrails uses transparent and auditable distributed ledger technology to maintain an immutable trail of provenance metadata independent of, but in concert with, the original file in Dropbox. The original data never enters the DataTrails system and remains on Dropbox. @@ -30674,7 +31382,7 @@ You would disconnect in Dropbox if you no longer wish to use DataTrails for prov

    This is how to connect and disconnect DataTrails and Dropbox, it is that simple! Please see our FAQ for more information.

    -`}).add({id:22,href:"https://docs.datatrails.ai/platform/administration/compliance-policies/",title:"Compliance Policies",description:"Creating and Managing Compliance Policies",content:`

    Creating a Compliance Policy

    +`}).add({id:23,href:"https://docs.datatrails.ai/platform/administration/compliance-policies/",title:"Compliance Policies",description:"Creating and Managing Compliance Policies",content:`

    Creating a Compliance Policy

    Compliance Policies are user-defined rule sets that Assets can be tested against. Compliance Policies only need to be created once; all applicable Assets will be tested against that policy thereafter.

    For example, a policy might assert that “Maintenance Alarm Events must be addressed by a Maintenance Report Event, recorded within 72 hours of the alarm”. This creates a Compliance Policy in the system which any Asset can be tested against as needed.

    As compliance is ensured by a regular series of Events, an Audit Trail builds up over time that allows compliance to be checked for the entire lifetime of the Asset.

    @@ -31031,7 +31739,7 @@ An example response for a non-compliant Asset

    "next_page_token": "", "compliant_at": "2024-01-17T10:16:12Z" } -
    `}).add({id:23,href:"https://docs.datatrails.ai/platform/administration/grouping-assets-by-location/",title:"Grouping Assets by Location",description:"Adding a Location",content:`

    Locations associate an Asset with a ‘home’ that can help when governing sharing policies with OBAC and ABAC. Locations do not need pinpoint precision and can be named by site, building, or other logical grouping.

    +
    `}).add({id:24,href:"https://docs.datatrails.ai/platform/administration/grouping-assets-by-location/",title:"Grouping Assets by Location",description:"Adding a Location",content:`

    Locations associate an Asset with a ‘home’ that can help when governing sharing policies with OBAC and ABAC. Locations do not need pinpoint precision and can be named by site, building, or other logical grouping.

    It may be useful to indicate an Asset’s origin. For example, if tracking traveling consultant’s laptops, you may wish to associate them with a ‘home’ office.

    Caution: It is important to recognize that the location does not necessarily denote the Asset’s current position in space; it simply determines which facility the Asset belongs to. For things that move around, use GIS coordinates on Events instead. See @@ -31597,7 +32305,7 @@ For more information on creating Events, please visit

    -`}).add({id:24,href:"https://docs.datatrails.ai/developers/api-reference/app-registrations-api/",title:"App Registrations API",description:"App Registrations API Reference",content:`
    +`}).add({id:25,href:"https://docs.datatrails.ai/developers/api-reference/app-registrations-api/",title:"App Registrations API",description:"App Registrations API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -31966,6 +32674,16 @@ If you are looking for a simple way to test our API you might prefer our Human-readable display name for this Application. + + roles + array + + + + + + + @@ -32055,6 +32773,16 @@ If you are looking for a simple way to test our API you might prefer our Resource name for the application + + roles + array + + + + + + + tenant_id string @@ -32279,6 +33007,16 @@ If you are looking for a simple way to test our API you might prefer our Resource name for the application + + roles + array + + + + + + + tenant_id string @@ -32439,6 +33177,16 @@ If you are looking for a simple way to test our API you might prefer our Resource name for the application + + roles + array + + + + + + + tenant_id string @@ -32597,6 +33345,16 @@ If you are looking for a simple way to test our API you might prefer our Resource name for the application + + roles + array + + + + + + + tenant_id string @@ -32653,7 +33411,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`}).add({id:25,href:"https://docs.datatrails.ai/developers/api-reference/assets-api/",title:"Assets API",description:"Assets API Reference",content:`

    +`}).add({id:26,href:"https://docs.datatrails.ai/developers/api-reference/assets-api/",title:"Assets API",description:"Assets API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -34703,7 +35461,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`}).add({id:26,href:"https://docs.datatrails.ai/developers/api-reference/attachments-api/",title:"Attachments API",description:"Attachments API Reference",content:`
    +`}).add({id:27,href:"https://docs.datatrails.ai/developers/api-reference/attachments-api/",title:"Attachments API",description:"Attachments API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -35824,7 +36582,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`}).add({id:27,href:"https://docs.datatrails.ai/developers/api-reference/blobs-api/",title:"Blobs API",description:"Blobs API Reference",content:`
    +`}).add({id:28,href:"https://docs.datatrails.ai/developers/api-reference/blobs-api/",title:"Blobs API",description:"Blobs API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -36371,7 +37129,7 @@ For information on Attachments and how to implement them, please refer to

    -`}).add({id:28,href:"https://docs.datatrails.ai/developers/api-reference/compliance-api/",title:"Compliance API",description:"Compliance API Reference",content:`
    +`}).add({id:29,href:"https://docs.datatrails.ai/developers/api-reference/compliance-api/",title:"Compliance API",description:"Compliance API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -37683,7 +38441,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`}).add({id:29,href:"https://docs.datatrails.ai/developers/api-reference/events-api/",title:"Events API",description:"Events API Reference",content:`
    +`}).add({id:30,href:"https://docs.datatrails.ai/developers/api-reference/events-api/",title:"Events API",description:"Events API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -39809,7 +40567,7 @@ For example:

    -`}).add({id:30,href:"https://docs.datatrails.ai/developers/api-reference/iam-policies-api/",title:"IAM Policies API",description:"IAM Policies API Reference",content:`
    +`}).add({id:31,href:"https://docs.datatrails.ai/developers/api-reference/iam-policies-api/",title:"IAM Policies API",description:"IAM Policies API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -41502,7 +42260,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`}).add({id:31,href:"https://docs.datatrails.ai/developers/api-reference/iam-subjects-api/",title:"IAM Subjects API",description:"IAM Subjects API Reference",content:`
    +`}).add({id:32,href:"https://docs.datatrails.ai/developers/api-reference/iam-subjects-api/",title:"IAM Subjects API",description:"IAM Subjects API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -42419,7 +43177,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`}).add({id:32,href:"https://docs.datatrails.ai/developers/developer-patterns/scitt-api/",title:"Quickstart: SCITT Statements (Preview)",description:"Getting Started with SCITT: creating a collection of statements (Preview)",content:`
    +`}).add({id:33,href:"https://docs.datatrails.ai/developers/developer-patterns/scitt-api/",title:"Quickstart: SCITT Statements (Preview)",description:"Getting Started with SCITT: creating a collection of statements (Preview)",content:`
    The SCITT API is currently in preview and subject to change

    The Supply Chain Integrity, Transparency and Trust (SCITT) initiative is a set of @@ -42549,7 +43307,7 @@ By using the content-type parameter, verifiers can filter to specific types, fil

  • SCITT.io
  • -`}).add({id:33,href:"https://docs.datatrails.ai/developers/api-reference/locations-api/",title:"Locations API",description:"Locations API Reference",content:`

    +`}).add({id:34,href:"https://docs.datatrails.ai/developers/api-reference/locations-api/",title:"Locations API",description:"Locations API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -43694,7 +44452,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`}).add({id:34,href:"https://docs.datatrails.ai/developers/api-reference/public-assets-api/",title:"Public Assets API",description:"Public Assets API Reference",content:`
    +`}).add({id:35,href:"https://docs.datatrails.ai/developers/api-reference/public-assets-api/",title:"Public Assets API",description:"Public Assets API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -44536,7 +45294,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`}).add({id:35,href:"https://docs.datatrails.ai/developers/api-reference/tenancies-api/",title:"Tenancies API",description:"Tenancies API Reference",content:`
    +`}).add({id:36,href:"https://docs.datatrails.ai/developers/api-reference/tenancies-api/",title:"Tenancies API",description:"Tenancies API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -45671,7 +46429,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`}).add({id:36,href:"https://docs.datatrails.ai/developers/yaml-reference/story-runner-components/",title:"YAML Runner Components",description:"Common Keys Used for the Yaml Runner",content:`
    +`}).add({id:37,href:"https://docs.datatrails.ai/developers/yaml-reference/story-runner-components/",title:"YAML Runner Components",description:"Common Keys Used for the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -45733,7 +46491,7 @@ If you are looking for a simple way to test our API you might prefer our --client-id <your-client-id> \\ --client-secret <your-client-secret> \\ <path-to-yaml-file> -
    `}).add({id:37,href:"https://docs.datatrails.ai/developers/yaml-reference/assets/",title:"Assets YAML Runner",description:"Asset Actions Used with the Yaml Runner",content:`
    +
    `}).add({id:38,href:"https://docs.datatrails.ai/developers/yaml-reference/assets/",title:"Assets YAML Runner",description:"Asset Actions Used with the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -45855,7 +46613,7 @@ If this is not needed then do not wait for confirmation.

    description: Wait for all Assets in the wipp namespace to be confirmed attrs: arc_namespace: wipp -
    `}).add({id:38,href:"https://docs.datatrails.ai/developers/yaml-reference/events/",title:"Events YAML Runner",description:"Event Actions Used with the Yaml Runner",content:`
    +
    `}).add({id:39,href:"https://docs.datatrails.ai/developers/yaml-reference/events/",title:"Events YAML Runner",description:"Event Actions Used with the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -45957,7 +46715,7 @@ If this is not needed then do not wait for confirmation.

    arc_display_type: open asset_attrs: arc_display_type: door -
    `}).add({id:39,href:"https://docs.datatrails.ai/developers/yaml-reference/locations/",title:"Locations YAML Runner",description:"Location Actions Used with the Yaml Runner",content:`
    +
    `}).add({id:40,href:"https://docs.datatrails.ai/developers/yaml-reference/locations/",title:"Locations YAML Runner",description:"Location Actions Used with the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -46006,7 +46764,7 @@ If this is not needed then do not wait for confirmation.

    print_response: true attrs: director: John Smith -
    `}).add({id:40,href:"https://docs.datatrails.ai/developers/yaml-reference/subjects/",title:"Subjects YAML Runner",description:"Subject Actions Used with the Yaml Runner",content:`
    +
    `}).add({id:41,href:"https://docs.datatrails.ai/developers/yaml-reference/subjects/",title:"Subjects YAML Runner",description:"Subject Actions Used with the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -46116,7 +46874,7 @@ If this is not needed then do not wait for confirmation.

    print_response: true subject_label: A subject \`\` -
    `}).add({id:41,href:"https://docs.datatrails.ai/developers/yaml-reference/compliance/",title:"Compliance Policies YAML Runner",description:"Compliance Policy Actions Used with the Yaml Runner",content:`
    +
    `}).add({id:42,href:"https://docs.datatrails.ai/developers/yaml-reference/compliance/",title:"Compliance Policies YAML Runner",description:"Compliance Policy Actions Used with the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -46150,7 +46908,7 @@ If this is not needed then do not wait for confirmation.

    description: Check Compliance of EV pump 1. report: true asset_label: ev pump 1 -
    `}).add({id:42,href:"https://docs.datatrails.ai/developers/yaml-reference/estate-info/",title:"Estate Information YAML Runner",description:"Retrieve Estate Info Using the Yaml Runner",content:`
    +
    `}).add({id:43,href:"https://docs.datatrails.ai/developers/yaml-reference/estate-info/",title:"Estate Information YAML Runner",description:"Retrieve Estate Info Using the Yaml Runner",content:`

    Note: To use the YAML Runner you will need to install the datatrails-archivist python package.

    Click here for installation instructions.

    @@ -46163,7 +46921,7 @@ If this is not needed then do not wait for confirmation.

    - step: action: COMPOSITE_ESTATE_INFO description: Estate Info Report -
    `}).add({id:43,href:"https://docs.datatrails.ai/developers/developer-patterns/",title:"Developer Patterns",description:"",content:`
    +
    `}).add({id:44,href:"https://docs.datatrails.ai/developers/developer-patterns/",title:"Developer Patterns",description:"",content:`

    Developer Patterns

    This sub-section of the Developers subject area contains more detailed information on topics that cannot be covered by the API or YAML Runner references.

    @@ -46179,7 +46937,7 @@ If this is not needed then do not wait for confirmation.

    Software Package Profile →

    -`}).add({id:44,href:"https://docs.datatrails.ai/developers/api-reference/caps-api/",title:"Caps API",description:"Caps API Reference",content:`
    +`}).add({id:45,href:"https://docs.datatrails.ai/developers/api-reference/caps-api/",title:"Caps API",description:"Caps API Reference",content:`

    Note: This page is primarily intended for developers who will be writing applications that will use DataTrails for provenance. If you are looking for a simple way to test our API you might prefer our Postman collection, the @@ -46297,7 +47055,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`}).add({id:45,href:"https://docs.datatrails.ai/platform/administration/",title:"Administration",description:"",content:`
    +`}).add({id:46,href:"https://docs.datatrails.ai/platform/administration/",title:"Administration",description:"",content:`

    Administration

    This section is for Tenancy Administrators who need to know how to manage their Users and configure access to Assets.

    @@ -46311,7 +47069,7 @@ If you are looking for a simple way to test our API you might prefer our Grouping Assets by Location →

    -`}).add({id:46,href:"https://docs.datatrails.ai/developers/yaml-reference/",title:"YAML Reference",description:"",content:`
    +`}).add({id:47,href:"https://docs.datatrails.ai/developers/yaml-reference/",title:"YAML Reference",description:"",content:`

    YAML Runner Reference

    This sub-section of the Developers subject area contains articles that describe and define the functionality of the DataTrails YAML Runner.

    @@ -46325,7 +47083,7 @@ If you are looking for a simple way to test our API you might prefer our Estate Information YAML Runner →

    -`}).add({id:47,href:"https://docs.datatrails.ai/developers/api-reference/",title:"API Reference",description:"",content:`
    +`}).add({id:48,href:"https://docs.datatrails.ai/developers/api-reference/",title:"API Reference",description:"",content:`

    API Reference

    This sub-section of the Developers subject area contains articles that describe and define the DataTrails REST API endpoints.

    @@ -46344,7 +47102,7 @@ If you are looking for a simple way to test our API you might prefer our Tenancy Caps API →

    -`}).add({id:48,href:"https://docs.datatrails.ai/platform/overview/",title:"Overview",description:"",content:`
    +`}).add({id:49,href:"https://docs.datatrails.ai/platform/overview/",title:"Overview",description:"",content:`

    Overview

    Begin your DataTrails journey here.

    @@ -46360,7 +47118,7 @@ If you are looking for a simple way to test our API you might prefer our Public Attestation →

    -`}).add({id:49,href:"https://docs.datatrails.ai/developers/",title:"Developers",description:"DataTrails developer documentation",content:`
    +`}).add({id:50,href:"https://docs.datatrails.ai/developers/",title:"Developers",description:"DataTrails developer documentation",content:`

    Developers

    If you are a developer who is looking to easily add provenance to their data, this section is for you.
    @@ -46388,7 +47146,7 @@ If you are looking for a simple way to test our API you might prefer our

    -`}).add({id:50,href:"https://docs.datatrails.ai/platform/",title:"Platform",description:"DataTrails Platform and configuration documentation",content:`
    +`}).add({id:51,href:"https://docs.datatrails.ai/platform/",title:"Platform",description:"DataTrails Platform and configuration documentation",content:`

    Platform

    If you are new to DataTrails, this is the place to start.

    diff --git a/platform/administration/compliance-policies/index.html b/platform/administration/compliance-policies/index.html index 647d760f2..9dbbdc44d 100644 --- a/platform/administration/compliance-policies/index.html +++ b/platform/administration/compliance-policies/index.html @@ -1,4 +1,4 @@ -Compliance Policies - DataTrails +Compliance Policies - DataTrails
    \ No newline at end of file +

    \ No newline at end of file diff --git a/platform/administration/dropbox-integration/index.html b/platform/administration/dropbox-integration/index.html index 74557cf24..04b35dc71 100644 --- a/platform/administration/dropbox-integration/index.html +++ b/platform/administration/dropbox-integration/index.html @@ -1,4 +1,4 @@ -Dropbox Integration - DataTrails +Dropbox Integration - DataTrails
    \ No newline at end of file +FAQ for more information.

    \ No newline at end of file diff --git a/platform/administration/grouping-assets-by-location/index.html b/platform/administration/grouping-assets-by-location/index.html index 37d8e92aa..c6d36078d 100644 --- a/platform/administration/grouping-assets-by-location/index.html +++ b/platform/administration/grouping-assets-by-location/index.html @@ -1,4 +1,4 @@ -Grouping Assets by Location - DataTrails +Grouping Assets by Location - DataTrails
    Note - You need to include the full locations/<location-id> reference as using only the UUID will not be recognized.

  • In the following screenshot, note the location of our Asset has been updated

    Completed update of Asset Location

  • \ No newline at end of file diff --git a/platform/administration/identity-and-access-management/index.html b/platform/administration/identity-and-access-management/index.html index ea8365546..1eecdf6fc 100644 --- a/platform/administration/identity-and-access-management/index.html +++ b/platform/administration/identity-and-access-management/index.html @@ -1,4 +1,4 @@ -Identity and Access Management - DataTrails +Identity and Access Management - DataTrails
    \ No newline at end of file diff --git a/platform/administration/sharing-access-inside-your-tenant/index.html b/platform/administration/sharing-access-inside-your-tenant/index.html index 5c3375cbd..c5901788b 100644 --- a/platform/administration/sharing-access-inside-your-tenant/index.html +++ b/platform/administration/sharing-access-inside-your-tenant/index.html @@ -1,4 +1,4 @@ -Managing Internal Access to Your Tenant - DataTrails +Managing Internal Access to Your Tenant - DataTrails

    Why is it important to verify my organization’s domain?

    Getting your organization’s domain verified indicates that you are who you say you are. This helps close the trust gap inherent to information sharing between organizations or with the public.

    Without domain verification, the Organization is noted as the publisher’s Tenant ID. Verifying your domain not only shows that this information comes from a legitimate actor on behalf of the organization, but also replaces the Tenant ID with your domain name so consumers can more easily identify the publishing organization. For example, someone attesting information on behalf of DataTrails would have datatrails.ai.

    Organization without Verified Domain
    Organization with Verified Domain
    Note: You do not see the badge if you are logged into DataTrails.
    Organization seen when logged in

    How can I get my organization’s domain verified?

    The DataTrails team is happy to help you obtain your verified domain badge. Please contact support@datatrails.ai from an email address which includes the domain you wish to verify. For example, email us from @datatrails.ai to verify the datatrails.ai domain. We will send you a confirmation email to make sure that the details are correct.

    In order to protect our user community, it is important for us to verify that the person making the request is authorized to do so by the owner of the domain. We will carry out some internal checks based on the information that we have been given and we may request further evidence from you to prove that you own or control the domain in question. Typically, this will be in the form of public company information or domain registration records. Please be prepared to share this evidence with us.

    Checking the Verified Domain of an External Organization

    If an organization has a verified domain with DataTrails, it will be displayed when you view a Public Asset they have published. You may also retrieve this information via the API if you know the organization’s Tenant ID.

    curl -v -X GET \
          -H "@$HOME/.datatrails/bearer-token.txt" \
          https://app.datatrails.ai/archivist/v1/tenancies/{uuid}:publicinfo
    -

    \ No newline at end of file +

    \ No newline at end of file diff --git a/platform/index.html b/platform/index.html index 421f0ec19..4e4f5058a 100644 --- a/platform/index.html +++ b/platform/index.html @@ -1,8 +1,8 @@ -Platform - DataTrails +Platform - DataTrails

    Platform

    If you are new to DataTrails, this is the place to start.

    The foundations of understanding the DataTrails platform are explained in the Overview. This will introduce the basic (and not so basic) concepts and take you through creating your first Asset and registering the first Event of your audit trail.

    The Administration section will show you how to manage your Tenancy and control access to your Assets.

    Check out the sub-sections below for more information!

    Overview →
    Core concepts and tasks
    Administration →
    Create users, set access rights and share Assets
    \ No newline at end of file +Sign Up

    Platform

    If you are new to DataTrails, this is the place to start.

    The foundations of understanding the DataTrails platform are explained in the Overview. This will introduce the basic (and not so basic) concepts and take you through creating your first Asset and registering the first Event of your audit trail.

    The Administration section will show you how to manage your Tenancy and control access to your Assets.

    Check out the sub-sections below for more information!

    Overview →
    Core concepts and tasks
    Administration →
    Create users, set access rights and share Assets
    \ No newline at end of file diff --git a/platform/overview/advanced-concepts/index.html b/platform/overview/advanced-concepts/index.html index eddf08f22..64d5f0dbc 100644 --- a/platform/overview/advanced-concepts/index.html +++ b/platform/overview/advanced-concepts/index.html @@ -1,4 +1,4 @@ -Advanced Concepts - DataTrails +Advanced Concepts - DataTrails
    The first Event will always be the Asset Creation. In the next section, we will cover how to create your own Events for your Asset.

    \ No newline at end of file diff --git a/platform/overview/creating-an-event-against-an-asset/index.html b/platform/overview/creating-an-event-against-an-asset/index.html index 13cffead8..cd0c141e6 100644 --- a/platform/overview/creating-an-event-against-an-asset/index.html +++ b/platform/overview/creating-an-event-against-an-asset/index.html @@ -1,4 +1,4 @@ -Creating an Event Against an Asset - DataTrails +Creating an Event Against an Asset - DataTrails
    \ No newline at end of file diff --git a/platform/overview/instaproof/index.html b/platform/overview/instaproof/index.html index 4eded9e80..68480b203 100644 --- a/platform/overview/instaproof/index.html +++ b/platform/overview/instaproof/index.html @@ -1,4 +1,4 @@ -Instaproof - DataTrails +Instaproof - DataTrails

    The first Event in the Event History will always be the Document Registration. In the next section, we will cover how to create your own Events for your Document.

    \ No newline at end of file diff --git a/platform/overview/registering-an-event-against-a-document-profile-asset/index.html b/platform/overview/registering-an-event-against-a-document-profile-asset/index.html index 159785a02..6cc5fb837 100644 --- a/platform/overview/registering-an-event-against-a-document-profile-asset/index.html +++ b/platform/overview/registering-an-event-against-a-document-profile-asset/index.html @@ -1,4 +1,4 @@ -Registering an Event Against a Document Profile Asset - DataTrails +Registering an Event Against a Document Profile Asset - DataTrails
    ← Registering a Document Profile Asset
    Instaproof →
    \ No newline at end of file +

    \ No newline at end of file diff --git a/sales/contactus/index.html b/sales/contactus/index.html index 6f52a6d56..92c165a50 100644 --- a/sales/contactus/index.html +++ b/sales/contactus/index.html @@ -1,8 +1,8 @@ -Contact Us - DataTrails +Contact Us - DataTrails
    \ No newline at end of file +Sign Up
    \ No newline at end of file diff --git a/sales/index.html b/sales/index.html index 49a57e809..5eacbbeef 100644 --- a/sales/index.html +++ b/sales/index.html @@ -1,8 +1,8 @@ -Sales - DataTrails +Sales - DataTrails
    \ No newline at end of file +Sign Up \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 85b02dd9e..7cca7e0a5 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -/usecases/responsible-ai/2024-03-14T11:33:27+00:00weekly0.5/platform/overview/introduction/2021-06-14T10:57:58+01:00weekly0.5/developers/developer-patterns/getting-access-tokens-using-app-registrations/2023-09-27T11:12:25+01:00weekly0.5/platform/overview/core-concepts/2021-06-14T10:57:58+01:00weekly0.5/usecases/authenticity-media-files/2021-05-31T15:18:01+01:00weekly0.5/usecases/sc-state-machine/2024-03-26T14:03:01+00:00weekly0.5/platform/overview/advanced-concepts/2024-03-19T10:57:58+01:00weekly0.5/developers/developer-patterns/containers-as-assets/2021-05-31T15:18:01+01:00weekly0.5/usecases/sc-asset-lifecycle/2024-03-26T14:02:53+00:00weekly0.5/developers/developer-patterns/namespace/2021-05-31T15:18:01+01:00weekly0.5/platform/overview/creating-an-asset/2021-05-18T14:52:25+01:00weekly0.5/usecases/sc-chain-of-custody/2024-03-26T14:03:19+00:00weekly0.5/platform/overview/creating-an-event-against-an-asset/2021-05-18T15:32:01+01:00weekly0.5/platform/overview/registering-a-document-profile-asset/2023-06-29T15:11:03+01:00weekly0.5/developers/developer-patterns/document-profile/2021-05-31T15:18:01+01:00weekly0.5/platform/overview/registering-an-event-against-a-document-profile-asset/2023-07-26T13:07:55+01:00weekly0.5/developers/developer-patterns/software-package-profile/2023-06-26T11:56:01+01:00weekly0.5/platform/overview/instaproof/2023-07-18T12:10:19+01:00weekly0.5/developers/developer-patterns/veracity/2024-08-22T19:35:35+01:00weekly0.5/platform/overview/public-attestation/2021-05-18T14:52:25+01:00weekly0.5/usecases/bill-of-materials/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/navigating-merklelogs/weekly0.5/platform/administration/identity-and-access-management/2021-06-14T10:57:58+01:00weekly0.5/developers/developer-patterns/massif-blob-offset-tables/weekly0.5/platform/administration/verified-domain/2021-05-18T14:52:25+01:00weekly0.5/platform/administration/sharing-access-inside-your-tenant/2021-05-18T15:33:03+01:00weekly0.5/platform/administration/sharing-access-outside-your-tenant/2021-05-18T15:33:31+01:00weekly0.5/platform/administration/dropbox-integration/2023-09-15T13:18:42+01:00weekly0.5/platform/administration/compliance-policies/2021-05-18T14:52:25+01:00weekly0.5/platform/administration/grouping-assets-by-location/2021-05-18T15:32:27+01:00weekly0.5/glossary/common-datatrails-terms/2022-10-19T07:39:44-07:00weekly0.5/glossary/reserved-attributes/2022-10-19T07:39:44-07:00weekly0.5/developers/api-reference/app-registrations-api/2021-06-09T11:39:03+01:00weekly0.5/developers/api-reference/assets-api/2021-06-09T11:39:03+01:00weekly0.5/developers/api-reference/attachments-api/2021-06-09T12:05:02+01:00weekly0.5/developers/api-reference/blobs-api/2021-06-09T13:32:57+01:00weekly0.5/developers/api-reference/compliance-api/2021-06-09T12:07:13+01:00weekly0.5/developers/api-reference/events-api/2021-06-09T11:48:40+01:00weekly0.5/developers/api-reference/iam-policies-api/2021-06-09T12:02:15+01:00weekly0.5/developers/api-reference/iam-subjects-api/2021-06-09T12:02:15+01:00weekly0.5/developers/developer-patterns/scitt-api/2021-06-09T13:49:35+01:00weekly0.5/developers/api-reference/locations-api/2021-06-09T11:56:23+01:00weekly0.5/developers/api-reference/public-assets-api/2021-06-09T11:56:23+01:00weekly0.5/developers/api-reference/tenancies-api/2021-06-09T13:29:57+01:00weekly0.5/developers/yaml-reference/story-runner-components/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/assets/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/events/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/locations/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/subjects/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/compliance/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/estate-info/2021-06-09T11:39:03+01:00weekly0.5/developers/developer-patterns/2023-05-31T10:14:18+01:00weekly0.5/developers/api-reference/caps-api/2024-03-05T11:30:29+00:00weekly0.5/platform/administration/2023-06-01T10:14:18+01:00weekly0.5/developers/yaml-reference/2023-05-31T10:14:18+01:00weekly0.5/glossary/2021-06-09T10:19:37+01:00weekly0.5/usecases/2021-05-20T17:42:10+01:00weekly0.5/developers/api-reference/2021-06-09T10:19:37+01:00weekly0.5/platform/overview/2021-05-20T12:03:27+01:00weekly0.5/developers/2020-10-06T08:48:23+00:00weekly0.5/platform/2020-10-06T08:48:23+00:00weekly0.5/2020-10-06T08:47:36+00:00weekly0.5/contributors/weekly0.5 \ No newline at end of file +/usecases/responsible-ai/2024-03-14T11:33:27+00:00weekly0.5/platform/overview/introduction/2021-06-14T10:57:58+01:00weekly0.5/developers/developer-patterns/getting-access-tokens-using-app-registrations/2023-09-27T11:12:25+01:00weekly0.5/platform/overview/core-concepts/2021-06-14T10:57:58+01:00weekly0.5/usecases/authenticity-media-files/2021-05-31T15:18:01+01:00weekly0.5/usecases/sc-state-machine/2024-03-26T14:03:01+00:00weekly0.5/platform/overview/advanced-concepts/2024-03-19T10:57:58+01:00weekly0.5/developers/developer-patterns/containers-as-assets/2021-05-31T15:18:01+01:00weekly0.5/usecases/sc-asset-lifecycle/2024-03-26T14:02:53+00:00weekly0.5/developers/developer-patterns/namespace/2021-05-31T15:18:01+01:00weekly0.5/platform/overview/creating-an-asset/2021-05-18T14:52:25+01:00weekly0.5/usecases/sc-chain-of-custody/2024-03-26T14:03:19+00:00weekly0.5/platform/overview/creating-an-event-against-an-asset/2021-05-18T15:32:01+01:00weekly0.5/platform/overview/registering-a-document-profile-asset/2023-06-29T15:11:03+01:00weekly0.5/developers/developer-patterns/document-profile/2021-05-31T15:18:01+01:00weekly0.5/platform/overview/registering-an-event-against-a-document-profile-asset/2023-07-26T13:07:55+01:00weekly0.5/developers/developer-patterns/software-package-profile/2023-06-26T11:56:01+01:00weekly0.5/platform/overview/instaproof/2023-07-18T12:10:19+01:00weekly0.5/developers/developer-patterns/veracity/2024-08-22T19:35:35+01:00weekly0.5/platform/overview/public-attestation/2021-05-18T14:52:25+01:00weekly0.5/usecases/bill-of-materials/2021-05-31T15:18:01+01:00weekly0.5/developers/developer-patterns/navigating-merklelogs/weekly0.5/platform/administration/identity-and-access-management/2021-06-14T10:57:58+01:00weekly0.5/developers/developer-patterns/massif-blob-offset-tables/weekly0.5/platform/administration/verified-domain/2021-05-18T14:52:25+01:00weekly0.5/platform/administration/sharing-access-inside-your-tenant/2021-05-18T15:33:03+01:00weekly0.5/platform/administration/sharing-access-outside-your-tenant/2021-05-18T15:33:31+01:00weekly0.5/developers/developer-patterns/3rdparty-verification/2024-08-22T19:35:35+01:00weekly0.5/platform/administration/dropbox-integration/2023-09-15T13:18:42+01:00weekly0.5/platform/administration/compliance-policies/2021-05-18T14:52:25+01:00weekly0.5/platform/administration/grouping-assets-by-location/2021-05-18T15:32:27+01:00weekly0.5/glossary/common-datatrails-terms/2022-10-19T07:39:44-07:00weekly0.5/glossary/reserved-attributes/2022-10-19T07:39:44-07:00weekly0.5/developers/api-reference/app-registrations-api/2021-06-09T11:39:03+01:00weekly0.5/developers/api-reference/assets-api/2021-06-09T11:39:03+01:00weekly0.5/developers/api-reference/attachments-api/2021-06-09T12:05:02+01:00weekly0.5/developers/api-reference/blobs-api/2021-06-09T13:32:57+01:00weekly0.5/developers/api-reference/compliance-api/2021-06-09T12:07:13+01:00weekly0.5/developers/api-reference/events-api/2021-06-09T11:48:40+01:00weekly0.5/developers/api-reference/iam-policies-api/2021-06-09T12:02:15+01:00weekly0.5/developers/api-reference/iam-subjects-api/2021-06-09T12:02:15+01:00weekly0.5/developers/developer-patterns/scitt-api/2021-06-09T13:49:35+01:00weekly0.5/developers/api-reference/locations-api/2021-06-09T11:56:23+01:00weekly0.5/developers/api-reference/public-assets-api/2021-06-09T11:56:23+01:00weekly0.5/developers/api-reference/tenancies-api/2021-06-09T13:29:57+01:00weekly0.5/developers/yaml-reference/story-runner-components/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/assets/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/events/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/locations/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/subjects/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/compliance/2021-06-09T11:39:03+01:00weekly0.5/developers/yaml-reference/estate-info/2021-06-09T11:39:03+01:00weekly0.5/developers/developer-patterns/2023-05-31T10:14:18+01:00weekly0.5/developers/api-reference/caps-api/2024-03-05T11:30:29+00:00weekly0.5/platform/administration/2023-06-01T10:14:18+01:00weekly0.5/developers/yaml-reference/2023-05-31T10:14:18+01:00weekly0.5/glossary/2021-06-09T10:19:37+01:00weekly0.5/usecases/2021-05-20T17:42:10+01:00weekly0.5/developers/api-reference/2021-06-09T10:19:37+01:00weekly0.5/platform/overview/2021-05-20T12:03:27+01:00weekly0.5/developers/2020-10-06T08:48:23+00:00weekly0.5/platform/2020-10-06T08:48:23+00:00weekly0.5/2020-10-06T08:47:36+00:00weekly0.5/contributors/weekly0.5 \ No newline at end of file diff --git a/support/contactus/index.html b/support/contactus/index.html index 2617c486a..135c07720 100644 --- a/support/contactus/index.html +++ b/support/contactus/index.html @@ -1,8 +1,8 @@ -Contact Us - DataTrails +Contact Us - DataTrails

    Contact Us

    For any queries please contact support@datatrails.ai

    \ No newline at end of file +Sign Up

    Contact Us

    For any queries please contact support@datatrails.ai

    \ No newline at end of file diff --git a/support/index.html b/support/index.html index 3852f2a3c..872c351d2 100644 --- a/support/index.html +++ b/support/index.html @@ -1,8 +1,8 @@ -Support - DataTrails +Support - DataTrails
    \ No newline at end of file +Sign Up \ No newline at end of file diff --git a/usecases/authenticity-media-files/index.html b/usecases/authenticity-media-files/index.html index a4f9b3041..65558e380 100644 --- a/usecases/authenticity-media-files/index.html +++ b/usecases/authenticity-media-files/index.html @@ -1,4 +1,4 @@ -Authenticity of Media and Files - DataTrails +Authenticity of Media and Files - DataTrails