Documentation Index Fetch the complete documentation index at: https://docs.wolfia.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Manage the full lifecycle of trust center updates: create new updates, edit existing ones, schedule notifications, archive/unarchive, manage subscribers, and organize updates with categories.
Automate your trust center communication workflow — for example, posting security updates after compliance audits or notifying subscribers about new certifications.
All endpoints require Admin role authentication.
Create an update
URL: POST https://api.wolfia.com/v1/trustportal/updates
Authentication: API key required, Admin role (see API overview )
Request
curl -X POST https://api.wolfia.com/v1/trustportal/updates \
-H "X-API-Key: wolfia-api-YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"title": "SOC 2 Type II Audit Complete",
"description": "We have successfully completed our annual SOC 2 Type II audit with no exceptions noted.",
"update_date": "2025-02-01T00:00:00Z",
"link": "https://trust.yourcompany.com/soc2-report",
"link_text": "View the report",
"send_immediately": true,
"timezone": "America/New_York",
"category_ids": ["category-uuid-1"]
}'
Request body
Parameter Type Required Description titlestring Yes Title of the update descriptionstring Yes Update content (supports markdown) update_datestring or integer Yes Date for the update (ISO 8601 string like "2025-02-01T00:00:00Z" or Unix timestamp in seconds) linkstring No URL to link in the update link_textstring No Display text for the link scheduled_atstring or integer No When to send notification (ISO 8601 string or Unix timestamp in seconds) timezonestring No Timezone for scheduling (e.g., America/New_York) schedule_disabledboolean No Set true to create without scheduling send_immediatelyboolean No Set true to send notification right away category_idsarray of strings No Category IDs to tag the update with
Scheduling options:
send_immediately: true — sends notification right away
scheduled_at with future timestamp — schedules for later
schedule_disabled: true — creates update without notification
Response (200 OK)
{
"id" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890" ,
"title" : "SOC 2 Type II Audit Complete" ,
"description" : "We have successfully completed our annual SOC 2 Type II audit with no exceptions noted." ,
"link" : "https://trust.yourcompany.com/soc2-report" ,
"link_text" : "View the report" ,
"update_date" : 1738368000000000 ,
"status" : "ACTIVE" ,
"created_at" : 1738368000000000 ,
"updated_at" : 1738368000000000 ,
"scheduled_at" : 1738368000000000 ,
"timezone" : "America/New_York" ,
"schedule_disabled" : false ,
"categories" : [
{
"id" : "category-uuid-1" ,
"name" : "Compliance"
}
]
}
Edit an update
URL: PATCH https://api.wolfia.com/v1/trustportal/updates/{update_id}
Authentication: API key required, Admin role
All fields are optional — only include what you want to change.
Request
curl -X PATCH https://api.wolfia.com/v1/trustportal/updates/UPDATE_UUID_HERE \
-H "X-API-Key: wolfia-api-YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"title": "SOC 2 Type II Audit Complete - Updated",
"description": "Updated description with additional details."
}'
Request body
Parameter Type Required Description titlestring No New title descriptionstring No New description linkstring No New link URL link_textstring No New link text update_datestring or integer No New update date (ISO 8601 string or Unix timestamp in seconds) scheduled_atstring or integer No Reschedule notification delivery (ISO 8601 string or Unix timestamp in seconds) timezonestring No New timezone schedule_disabledboolean No Disable scheduled delivery send_immediatelyboolean No Send notification immediately category_idsarray of strings No Replace category assignments
Archive an update
URL: POST https://api.wolfia.com/v1/trustportal/updates/{update_id}/archive
Authentication: API key required, Admin role
Archives an update and cancels any scheduled notification.
curl -X POST https://api.wolfia.com/v1/trustportal/updates/UPDATE_UUID_HERE/archive \
-H "X-API-Key: wolfia-api-YOUR_KEY_HERE"
Response (200 OK)
{
"message" : "Update archived successfully"
}
Unarchive an update
URL: POST https://api.wolfia.com/v1/trustportal/updates/{update_id}/unarchive
Authentication: API key required, Admin role
Restores a previously archived update.
curl -X POST https://api.wolfia.com/v1/trustportal/updates/UPDATE_UUID_HERE/unarchive \
-H "X-API-Key: wolfia-api-YOUR_KEY_HERE"
List updates
URL: GET https://api.wolfia.com/v1/trustportal/updates
Authentication: API key required, Admin role
Returns a list of trust portal updates with optional filtering.
Request
curl -X GET 'https://api.wolfia.com/v1/trustportal/updates?limit=10&include_archived=false' \
-H "X-API-Key: wolfia-api-YOUR_KEY_HERE"
Query parameters
Parameter Type Required Default Description skipinteger No 0 Number of items to skip limitinteger No all Max items to return (1-1000) include_archivedboolean No false Include archived updates category_idsstring No - Comma-separated category IDs to filter by
Response (200 OK)
[
{
"id" : "update-uuid-1" ,
"title" : "SOC 2 Type II Audit Complete" ,
"description" : "We have successfully completed our annual audit..." ,
"update_date" : 1738368000000000 ,
"status" : "ACTIVE" ,
"created_at" : 1738368000000000 ,
"updated_at" : 1738368000000000 ,
"scheduled_at" : 1738368000000000 ,
"timezone" : "UTC" ,
"schedule_disabled" : false ,
"categories" : [{ "id" : "cat-uuid" , "name" : "Compliance" }]
},
{
"id" : "update-uuid-2" ,
"title" : "New ISO 27001 Certification" ,
"description" : "We are proud to announce..." ,
"update_date" : 1738281600000000 ,
"status" : "ARCHIVED" ,
"created_at" : 1738281600000000 ,
"updated_at" : 1738281600000000 ,
"scheduled_at" : null ,
"timezone" : "UTC" ,
"schedule_disabled" : true ,
"categories" : []
}
]
List subscribers
URL: GET https://api.wolfia.com/v1/trustportal/updates/subscribers
Authentication: API key required, Admin role
Returns a paginated list of trust portal update subscribers.
Request
curl -X GET 'https://api.wolfia.com/v1/trustportal/updates/subscribers?page=1&page_size=20' \
-H "X-API-Key: wolfia-api-YOUR_KEY_HERE"
Query parameters
Parameter Type Required Default Description pageinteger No 1 Page number page_sizeinteger No 10 Items per page (1-100) searchstring No - Search by subscriber email
Response (200 OK)
{
"subscribers" : [
{
"id" : "sub-uuid-1" ,
"email" : "reviewer@company.com" ,
"first_name" : "Jane" ,
"last_name" : "Smith" ,
"company_name" : "Enterprise Corp" ,
"consent_type" : "ACCESS_REQUEST" ,
"is_active" : true ,
"subscribed_at" : 1735689600000000 ,
"unsubscribed_at" : null
}
],
"total" : 42 ,
"page" : 1 ,
"page_size" : 20 ,
"total_pages" : 3
}
Unsubscribe a user
URL: POST https://api.wolfia.com/v1/trustportal/updates/subscribers/{subscription_id}/unsubscribe
Authentication: API key required, Admin role
Unsubscribe a user from trust portal updates.
Request
curl -X POST https://api.wolfia.com/v1/trustportal/updates/subscribers/SUB_UUID_HERE/unsubscribe \
-H "X-API-Key: wolfia-api-YOUR_KEY_HERE"
Response (200 OK)
{
"message" : "Successfully unsubscribed" ,
"already_unsubscribed" : false
}
Manage categories
Categories let you organize trust portal updates by topic (e.g., “Compliance”, “Security”, “Product”). Create categories first, then reference their IDs when creating or editing updates via the category_ids field.
List categories
URL: GET https://api.wolfia.com/v1/trustportal/update-categories
Authentication: API key required, Admin role
Returns all update categories for your trust portal.
curl -X GET 'https://api.wolfia.com/v1/trustportal/update-categories?limit=100&offset=0' \
-H "X-API-Key: wolfia-api-YOUR_KEY_HERE"
Query parameters
Parameter Type Required Default Description limitinteger No all Max items to return offsetinteger No 0 Number of items to skip
Response (200 OK)
{
"categories" : [
{
"id" : "category-uuid-1" ,
"name" : "Compliance" ,
"created_at" : 1738368000000000 ,
"updated_at" : 1738368000000000 ,
"update_count" : 5
},
{
"id" : "category-uuid-2" ,
"name" : "Security" ,
"created_at" : 1738281600000000 ,
"updated_at" : 1738281600000000 ,
"update_count" : 3
}
],
"total_count" : 2 ,
"limit" : 100 ,
"offset" : 0
}
Create a category
URL: POST https://api.wolfia.com/v1/trustportal/update-categories
Authentication: API key required, Admin role
curl -X POST https://api.wolfia.com/v1/trustportal/update-categories \
-H "X-API-Key: wolfia-api-YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"name": "Compliance"
}'
Request body
Parameter Type Required Description namestring Yes Category name (must be unique)
Response (200 OK)
{
"id" : "category-uuid-1" ,
"name" : "Compliance" ,
"created_at" : 1738368000000000 ,
"updated_at" : 1738368000000000 ,
"update_count" : 0
}
Returns 409 if a category with the same name already exists.
Rename a category
URL: PATCH https://api.wolfia.com/v1/trustportal/update-categories/{category_id}
Authentication: API key required, Admin role
curl -X PATCH https://api.wolfia.com/v1/trustportal/update-categories/CATEGORY_UUID_HERE \
-H "X-API-Key: wolfia-api-YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"name": "Compliance & Audit"
}'
Request body
Parameter Type Required Description namestring Yes New category name (must be unique)
Response (200 OK)
{
"id" : "category-uuid-1" ,
"name" : "Compliance & Audit" ,
"created_at" : 1738368000000000 ,
"updated_at" : 1738454400000000 ,
"update_count" : 5
}
Delete a category
URL: DELETE https://api.wolfia.com/v1/trustportal/update-categories/{category_id}
Authentication: API key required, Admin role
Removes a category. Updates that were tagged with this category will no longer have it.
curl -X DELETE https://api.wolfia.com/v1/trustportal/update-categories/CATEGORY_UUID_HERE \
-H "X-API-Key: wolfia-api-YOUR_KEY_HERE"
Response (200 OK)
{
"message" : "Category deleted successfully"
}
Integration example
import os
from datetime import datetime
import requests
API_KEY = os.environ[ 'WOLFIA_API_KEY' ]
BASE_URL = 'https://api.wolfia.com/v1'
def post_compliance_update ( title , description , link = None , send_immediately = True ):
"""Post a new trust center update."""
headers = {
'X-API-Key' : API_KEY ,
'Content-Type' : 'application/json' ,
}
payload = {
'title' : title,
'description' : description,
'update_date' : datetime.now().strftime( '%Y-%m- %d T%H:%M:%SZ' ),
'send_immediately' : send_immediately,
'timezone' : 'America/New_York' ,
}
if link:
payload[ 'link' ] = link
payload[ 'link_text' ] = 'Learn more'
response = requests.post(
f ' { BASE_URL } /trustportal/updates' ,
headers = headers,
json = payload,
timeout = 30 ,
)
response.raise_for_status()
update = response.json()
print ( f "Published: { update[ 'id' ] } - { update[ 'title' ] } " )
return update
def list_recent_updates ( limit = 5 ):
"""List recent trust portal updates."""
headers = { 'X-API-Key' : API_KEY }
response = requests.get(
f ' { BASE_URL } /trustportal/updates' ,
headers = headers,
params = { 'limit' : limit},
timeout = 30 ,
)
response.raise_for_status()
updates = response.json()
for update in updates:
created = datetime.fromtimestamp(update[ 'created_at' ] / 1_000_000 )
print ( f "[ { update[ 'status' ] } ] { update[ 'title' ] } ( { created.strftime( '%Y-%m- %d ' ) } )" )
return updates
if __name__ == '__main__' :
post_compliance_update(
title = "Quarterly Penetration Test Complete" ,
description = (
"Our Q1 2025 penetration test has been completed by an independent third-party firm. "
"No critical or high-severity findings were identified."
),
link = "https://trust.yourcompany.com" ,
)
print ( " \n Recent updates:" )
list_recent_updates()
Error responses
Status Meaning Solution 401 Invalid API key Verify your API key is correct 403 Insufficient permissions Ensure API key owner has Admin role 404 Resource not found Verify the resource ID exists 409 Duplicate category name Use a unique name for each category 422 Invalid request Check required fields (title, description, update_date) and ID formats 500 Server error Retry with exponential backoff
Next steps
Trust portal analytics Access engagement metrics and revenue data
API overview Learn about API authentication and best practices