Support/Developer Platform/Build This API recipes

Developer Platform

Build This API recipes

Eighteen complete, contract-backed API slices for BuildWithHQ and API43 product concepts.

Recipes
18
Contract source
Generated OpenAPI
Placeholder routes
None

These recipes turn each Build This concept into an ordered API slice. Every method, path, scope, parameter, request schema, response status, and SDK method is generated from the current public contract. The support page cannot quietly drift from OpenAPI: the recipe generator and Developer Kit build fail when an operation disappears or changes.

How to use a recipe

  1. Choose the product slice and grant a backend credential only its listed scopes.
  2. Use real identifiers returned by prior steps or selected from real app configuration; the recipes contain no sample GUIDs.
  3. Use the app credential only for account and user administration. Exchange it for a short-lived user token before performing end-user work.
  4. Resolve each step's request body from the named OpenAPI schema. Generated clients receive the same shape.
  5. Carry correlation IDs end to end and run all four release assertions.

A credential missing a listed scope must receive HTTP 403 with credential_scope_required. A delegated user outside the record envelope must receive the module's non-disclosing 403/404 response, and no mutation may occur.

import { BuildWithHQModuleClient } from "./sdk/BuildWithHQConnector.js";

const api = new BuildWithHQModuleClient({
  saasAppId: process.env.BWHQ_SAAS_APP_ID!,
  credential: delegatedUserToken,
});

// Choose the exact typed method listed below. Values come from the signed-in
// user's permitted selection or a prior response, never from a sample tenant.
const result = await api.workOrdersGet({ recordId });
Important

The examples describe executable API flows; they do not grant permission. A route parameter identifies a target and never proves that the caller may read or mutate it.

CrewOS

Coordinate AI operators, inspect governed work, and approve a proposed action with replayable evidence.

Identity: delegated-user
Least-privilege scopes: modules.goclaw.read modules.goclaw.write modules.record-graph.read modules.universal-inbox.read

#PurposeVerbPathScopeSDK / operation
1Inspect work waiting for the signed-in user's approval.GET/v1/apps/{saasAppId}/goclaw/approvalsmodules.goclaw.readgoClawApprovalsGet
2Load the permitted relationship graph behind the proposed work.GET/v1/apps/{saasAppId}/modules/record-graph/{recordId}modules.record-graph.readrecordGraphGet
3Approve the reviewed suggestion batch through the governed action boundary.POST/v1/apps/{saasAppId}/goclaw/approvals/{suggestionBatchId}/approvemodules.goclaw.writegoClawApprovalsApprove
4Verify the resulting human attention state in Universal Inbox.GET/v1/apps/{saasAppId}/inbox/itemsmodules.universal-inbox.readuniversalInboxGetItems

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete CrewOS implementation guide

SignalIQ

Turn secured account context into explainable signals and a reviewed action queue.

Identity: delegated-user
Least-privilege scopes: modules.ai-insights.read modules.ai-insights.write modules.contacts.read modules.record-graph.read

#PurposeVerbPathScopeSDK / operation
1Find the permitted account or contact record.GET/v1/apps/{saasAppId}/modules/contactsmodules.contacts.readcontactsList
2Load connected records without crossing the user's DataRole or location scope.GET/v1/apps/{saasAppId}/modules/record-graph/{recordId}modules.record-graph.readrecordGraphGet
3Read the user's ranked AI insight queue.GET/v1/apps/{saasAppId}/modules/ai-insightsmodules.ai-insights.readaiInsightsList
4Open the evidence and explanation for one insight.GET/v1/apps/{saasAppId}/modules/ai-insights/{insightId}modules.ai-insights.readaiInsightsGet
5Record the user's reviewed disposition of the insight.PUT/v1/apps/{saasAppId}/modules/ai-insights/{insightId}/statemodules.ai-insights.writeaiInsightsSetState

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete SignalIQ implementation guide

Resolve

Work a support request from a scoped inbox item through policy evidence and a human-controlled resolution.

Identity: delegated-user
Least-privilege scopes: modules.conversations.write modules.knowledge-articles.read modules.universal-inbox.read modules.universal-inbox.write

#PurposeVerbPathScopeSDK / operation
1List the signed-in support user's permitted inbox work.GET/v1/apps/{saasAppId}/inbox/itemsmodules.universal-inbox.readuniversalInboxGetItems
2Open one inbox item and its ticket context.GET/v1/apps/{saasAppId}/inbox/items/{inboxItemId}modules.universal-inbox.readuniversalInboxGetItem
3Search the secured knowledge core for relevant policy.GET/v1/apps/{saasAppId}/modules/knowledge-coremodules.knowledge-articles.readknowledgeCoreList
4Post the reviewed response into the native conversation.POST/v1/apps/{saasAppId}/modules/conversations/{recordId}/messagesmodules.conversations.writeconversationsReply
5Update the human-owned inbox state after resolution.PUT/v1/apps/{saasAppId}/inbox/items/{inboxItemId}/human-statemodules.universal-inbox.writeuniversalInboxUpdateHumanState

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete Resolve implementation guide

LaunchPilot

Create a governed campaign record, attach assets, and route material actions through approval.

Identity: delegated-user
Least-privilege scopes: modules.dynamic-records.read modules.dynamic-records.write modules.files.write modules.goclaw.read

#PurposeVerbPathScopeSDK / operation
1Read the registered campaign module schema before writing.GET/v1/apps/{saasAppId}/modules/dynamic/{moduleKey}/schemamodules.dynamic-records.readdynamicModulesSchema
2Create a campaign record through the reviewed dynamic-module contract.POST/v1/apps/{saasAppId}/modules/dynamic/{moduleKey}modules.dynamic-records.writedynamicModulesCreate
3Upload an approved campaign asset through the secured file path.POST/v1/apps/{saasAppId}/modules/files/uploadmodules.files.writefilesUpload
4List material AI actions awaiting human approval.GET/v1/apps/{saasAppId}/goclaw/approvalsmodules.goclaw.readgoClawApprovalsGet
5Read the created campaign in the same delegated-user scope.GET/v1/apps/{saasAppId}/modules/dynamic/{moduleKey}/{recordId}modules.dynamic-records.readdynamicModulesGet

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete LaunchPilot implementation guide

Northstar

Build evidence-backed executive signals from secured search, insight, graph, and activity contracts.

Identity: delegated-user
Least-privilege scopes: modules.ai-insights.read modules.ai-insights.write modules.global-search.read modules.record-activity.read modules.record-graph.read

#PurposeVerbPathScopeSDK / operation
1Search only records visible to the executive persona.GET/v1/apps/{saasAppId}/modules/global-searchmodules.global-search.readglobalSearchSearch
2Load material AI insights for the same identity.GET/v1/apps/{saasAppId}/modules/ai-insightsmodules.ai-insights.readaiInsightsList
3Open the connected evidence graph for a selected signal.GET/v1/apps/{saasAppId}/modules/record-graph/{recordId}modules.record-graph.readrecordGraphGet
4Load replayable activity for the selected record.GET/v1/apps/{saasAppId}/modules/record-activity/{recordId}modules.record-activity.readrecordActivityGet
5Persist the executive's reviewed insight state.PUT/v1/apps/{saasAppId}/modules/ai-insights/{insightId}/statemodules.ai-insights.writeaiInsightsSetState

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete Northstar implementation guide

TeamBox

Normalize team communications into a shared, permission-aware queue with native replies.

Identity: delegated-user
Least-privilege scopes: modules.conversations.read modules.conversations.write modules.universal-inbox.read modules.universal-inbox.write

#PurposeVerbPathScopeSDK / operation
1List permitted inbox work across connected channels.GET/v1/apps/{saasAppId}/inbox/itemsmodules.universal-inbox.readuniversalInboxGetItems
2Open one normalized inbox item.GET/v1/apps/{saasAppId}/inbox/items/{inboxItemId}modules.universal-inbox.readuniversalInboxGetItem
3Load the native conversation that remains the source record.GET/v1/apps/{saasAppId}/modules/conversations/{recordId}modules.conversations.readconversationsGet
4Post a team reply through the conversation contract.POST/v1/apps/{saasAppId}/modules/conversations/{recordId}/messagesmodules.conversations.writeconversationsReply
5Update the human attention state without changing source ownership.PUT/v1/apps/{saasAppId}/inbox/items/{inboxItemId}/human-statemodules.universal-inbox.writeuniversalInboxUpdateHumanState

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete TeamBox implementation guide

RelateEverything

Create a CRM record, connect it to permitted business context, and verify the secured graph.

Identity: delegated-user
Least-privilege scopes: modules.contacts.write modules.global-search.read modules.record-graph.read modules.record-graph.write

#PurposeVerbPathScopeSDK / operation
1Create a contact through the first-class Contacts contract.POST/v1/apps/{saasAppId}/modules/contactsmodules.contacts.writecontactsCreate
2Create a reviewed relation from the new contact to another permitted record.PUT/v1/apps/{saasAppId}/modules/record-graph/{recordId}/relationsmodules.record-graph.writerecordGraphAddRelation
3Read the contact's secured relationship graph.GET/v1/apps/{saasAppId}/modules/record-graph/{recordId}modules.record-graph.readrecordGraphGet
4Verify the contact is discoverable through global secured search.GET/v1/apps/{saasAppId}/modules/global-searchmodules.global-search.readglobalSearchSearch

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete RelateEverything implementation guide

CustomerPortal

Provision a portal identity and let that user work only with explicitly shared conversations, files, and approvals.

Identity: app-credential-then-delegated-user
Least-privilege scopes: modules.conversations.read modules.files.read tenant-accounts.write tenant-users.read tenant-users.tokens.issue tenant-users.write

#PurposeVerbPathScopeSDK / operation
1Create or reconcile the customer's tenant account from the ISV backend.POST/v1/apps/{saasAppId}/accountstenant-accounts.writecreateTenantAccount
2Resolve assignable user types, DataRoles, and locations for that account.GET/v1/apps/{saasAppId}/accounts/{appAccountId}/security-catalogtenant-users.readgetTenantSecurityCatalog
3Create the external user mapping with reviewed assignments.POST/v1/apps/{saasAppId}/accounts/{appAccountId}/userstenant-users.writecreateTenantUser
4Exchange the app credential for a short-lived delegated-user token.POST/v1/apps/{saasAppId}/user-token-exchangestenant-users.tokens.issueexchangeDelegatedUserToken
5Use the delegated token to list only files visible to the portal user.GET/v1/apps/{saasAppId}/modules/filesmodules.files.readfilesList
6Use the same identity to list shared conversations.GET/v1/apps/{saasAppId}/modules/conversationsmodules.conversations.readconversationsList

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete CustomerPortal implementation guide

CompanyIQ

Publish governed knowledge, connect it to business records, and retrieve permission-aware AI evidence.

Identity: delegated-user
Least-privilege scopes: ai.read ai.write modules.knowledge-articles.write modules.record-graph.write

#PurposeVerbPathScopeSDK / operation
1Create a revisioned knowledge record.POST/v1/apps/{saasAppId}/modules/knowledge-coremodules.knowledge-articles.writeknowledgeCoreCreate
2Publish the reviewed revision through the knowledge lifecycle.POST/v1/apps/{saasAppId}/modules/knowledge-core/{recordId}/publishmodules.knowledge-articles.writeknowledgeCorePublish
3Attach the knowledge record to permitted business context.PUT/v1/apps/{saasAppId}/modules/record-graph/{recordId}/knowledgemodules.record-graph.writerecordGraphLinkKnowledge
4Queue the permitted record for AI ingestion.POST/v1/apps/{saasAppId}/ai/sources/records/{recordId}/ingestai.writeingestAiRecord
5Retrieve secured AI evidence using the delegated-user context.POST/v1/apps/{saasAppId}/ai/searchai.readsearchAi

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete CompanyIQ implementation guide

OpsAtlas

Operate revisioned policy knowledge with owners, reviews, questions, gaps, and health evidence.

Identity: delegated-user
Least-privilege scopes: modules.knowledge-articles.read modules.knowledge-articles.write

#PurposeVerbPathScopeSDK / operation
1Create an owned operational knowledge record.POST/v1/apps/{saasAppId}/modules/knowledge-coremodules.knowledge-articles.writeknowledgeCoreCreate
2Assign a permitted knowledge owner.POST/v1/apps/{saasAppId}/modules/knowledge-core/{recordId}/ownersmodules.knowledge-articles.writeknowledgeCoreSetOwner
3Publish the reviewed revision.POST/v1/apps/{saasAppId}/modules/knowledge-core/{recordId}/publishmodules.knowledge-articles.writeknowledgeCorePublish
4Measure the current knowledge health contract.GET/v1/apps/{saasAppId}/modules/knowledge-core/healthmodules.knowledge-articles.readknowledgeCoreHealth
5List permission-aware knowledge gaps requiring work.GET/v1/apps/{saasAppId}/modules/knowledge-core/gapsmodules.knowledge-articles.readknowledgeCoreGaps
6Read the immutable revision sequence for the record.GET/v1/apps/{saasAppId}/modules/knowledge-core/{recordId}/revisionsmodules.knowledge-articles.readknowledgeCoreRevisions

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete OpsAtlas implementation guide

Headless SaaS DB

Provision tenant identities and operate custom records from any frontend without exposing SQL or infrastructure routing.

Identity: app-credential-then-delegated-user
Least-privilege scopes: records.read records.write tenant-accounts.write tenant-users.tokens.issue tenant-users.write

#PurposeVerbPathScopeSDK / operation
1Create or reconcile the external tenant account.POST/v1/apps/{saasAppId}/accountstenant-accounts.writecreateTenantAccount
2Map the external end user to a real TenantUser.POST/v1/apps/{saasAppId}/accounts/{appAccountId}/userstenant-users.writecreateTenantUser
3Issue a short-lived delegated-user token for browser or mobile use.POST/v1/apps/{saasAppId}/user-token-exchangestenant-users.tokens.issueexchangeDelegatedUserToken
4Read the registered custom object's contract.GET/v1/apps/{saasAppId}/objects/{objectKey}/schemarecords.readgetSchema
5Create a record under server-derived user scope.POST/v1/apps/{saasAppId}/objects/{objectKey}/recordsrecords.writecreateRecord
6Read the new record as the same delegated user.GET/v1/apps/{saasAppId}/objects/{objectKey}/records/{recordId}records.readgetRecord

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete Headless SaaS DB implementation guide

CaseFlow

Create a controlled case, collect proof, execute checklist stages, and surface approval work.

Identity: delegated-user
Least-privilege scopes: modules.checklists-signoffs.write modules.dynamic-records.read modules.dynamic-records.write modules.files.write modules.universal-inbox.read

#PurposeVerbPathScopeSDK / operation
1Read the registered case module schema.GET/v1/apps/{saasAppId}/modules/dynamic/{moduleKey}/schemamodules.dynamic-records.readdynamicModulesSchema
2Create the case through the reviewed dynamic module.POST/v1/apps/{saasAppId}/modules/dynamic/{moduleKey}modules.dynamic-records.writedynamicModulesCreate
3Start the configured stage checklist against the case record.POST/v1/apps/{saasAppId}/modules/checklists-signoffs/runsmodules.checklists-signoffs.writechecklistsStartRun
4Upload case evidence through Files.POST/v1/apps/{saasAppId}/modules/files/uploadmodules.files.writefilesUpload
5Submit completed stage work for governed signoff.POST/v1/apps/{saasAppId}/modules/checklists-signoffs/runs/{checklistRunId}/submitmodules.checklists-signoffs.writechecklistsSubmit
6Verify the resulting approval work in Universal Inbox.GET/v1/apps/{saasAppId}/inbox/itemsmodules.universal-inbox.readuniversalInboxGetItems

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete CaseFlow implementation guide

AssetOps

Connect customers, assets, work orders, inspections, and field evidence under one secured graph.

Identity: delegated-user
Least-privilege scopes: modules.checklists-signoffs.write modules.dynamic-records.write modules.files.write modules.record-graph.read modules.work-orders.write

#PurposeVerbPathScopeSDK / operation
1Create an asset in its registered dynamic module.POST/v1/apps/{saasAppId}/modules/dynamic/{moduleKey}modules.dynamic-records.writedynamicModulesCreate
2Create work against the permitted asset or location context.POST/v1/apps/{saasAppId}/modules/work-ordersmodules.work-orders.writeworkOrdersCreate
3Start the asset inspection checklist.POST/v1/apps/{saasAppId}/modules/checklists-signoffs/runsmodules.checklists-signoffs.writechecklistsStartRun
4Upload inspection evidence through Files.POST/v1/apps/{saasAppId}/modules/files/uploadmodules.files.writefilesUpload
5Verify that the user can see the resulting connected context.GET/v1/apps/{saasAppId}/modules/record-graph/{recordId}modules.record-graph.readrecordGraphGet

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete AssetOps implementation guide

ActiveWorkplace

Pin a permitted record graph as a collaborative workplace with participants, activity, stale-work controls, and playback.

Identity: delegated-user
Least-privilege scopes: modules.active-workplace.read modules.active-workplace.write

#PurposeVerbPathScopeSDK / operation
1Create a workplace rooted at a permitted record.POST/v1/apps/{saasAppId}/modules/active-workplacemodules.active-workplace.writeactiveWorkplaceCreate
2Load the scoped participant catalog.GET/v1/apps/{saasAppId}/modules/active-workplace/{activeWorkplaceId}/participants/catalogmodules.active-workplace.readactiveWorkplaceParticipantCatalog
3Add a permitted person or worker.POST/v1/apps/{saasAppId}/modules/active-workplace/{activeWorkplaceId}/participantsmodules.active-workplace.writeactiveWorkplaceAddParticipant
4Record collaborative activity through the workplace contract.POST/v1/apps/{saasAppId}/modules/active-workplace/{activeWorkplaceId}/activitymodules.active-workplace.writeactiveWorkplaceRecordActivity
5Refresh the permitted recursive graph snapshot.POST/v1/apps/{saasAppId}/modules/active-workplace/{activeWorkplaceId}/graph/refreshmodules.active-workplace.writeactiveWorkplaceRefreshGraph
6Replay the workplace history.GET/v1/apps/{saasAppId}/modules/active-workplace/{activeWorkplaceId}/playbackmodules.active-workplace.readactiveWorkplacePlayback

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete ActiveWorkplace implementation guide

FieldService

Move a field job from customer intake through assignment, schedule, evidence, and completion.

Identity: delegated-user
Least-privilege scopes: modules.calendar.write modules.checklists-signoffs.write modules.contacts.read modules.work-orders.write

#PurposeVerbPathScopeSDK / operation
1Find the permitted customer contact.GET/v1/apps/{saasAppId}/modules/contactsmodules.contacts.readcontactsList
2Create the field work order.POST/v1/apps/{saasAppId}/modules/work-ordersmodules.work-orders.writeworkOrdersCreate
3Assign a permitted technician and role.PUT/v1/apps/{saasAppId}/modules/work-orders/{recordId}/assignmentmodules.work-orders.writeworkOrdersAssign
4Create the scheduled field appointment.POST/v1/apps/{saasAppId}/modules/calendarmodules.calendar.writecalendarCreate
5Start the configured completion checklist.POST/v1/apps/{saasAppId}/modules/checklists-signoffs/runsmodules.checklists-signoffs.writechecklistsStartRun
6Advance work status through the reviewed transition contract.PUT/v1/apps/{saasAppId}/modules/work-orders/{recordId}/statusmodules.work-orders.writeworkOrdersStatus

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete FieldService implementation guide

Reservations

Publish bookable capacity, create a purchase, and operate its status and follow-up lifecycle.

Identity: delegated-user
Least-privilege scopes: modules.reservations.read modules.reservations.write

#PurposeVerbPathScopeSDK / operation
1Create or update a bookable product and capacity contract.POST/v1/apps/{saasAppId}/modules/reservations/productsmodules.reservations.writereservationsUpsertProduct
2Read products visible to the delegated user.GET/v1/apps/{saasAppId}/modules/reservations/productsmodules.reservations.readreservationsListProducts
3Create a reservation through the reviewed purchase boundary.POST/v1/apps/{saasAppId}/modules/reservations/purchasemodules.reservations.writereservationsPurchase
4Read the resulting reservation.GET/v1/apps/{saasAppId}/modules/reservations/{recordId}modules.reservations.readreservationsGet
5Advance the reservation through a reviewed status transition.PUT/v1/apps/{saasAppId}/modules/reservations/{recordId}/statusmodules.reservations.writereservationsSetStatus
6Record pre- or post-service follow-up state.PUT/v1/apps/{saasAppId}/modules/reservations/{recordId}/followupsmodules.reservations.writereservationsUpdateFollowup

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete Reservations implementation guide

Checkoff & Approval

Attach a reusable checklist to work, collect document or photo proof per item, and submit it for governed signoff.

Identity: delegated-user
Least-privilege scopes: modules.checklists-signoffs.read modules.checklists-signoffs.write modules.files.write

#PurposeVerbPathScopeSDK / operation
1Create a reusable checklist template with no more than 1,000 items.POST/v1/apps/{saasAppId}/modules/checklists-signoffs/templatesmodules.checklists-signoffs.writechecklistsCreateTemplate
2Attach a checklist run to a permitted record.POST/v1/apps/{saasAppId}/modules/checklists-signoffs/runsmodules.checklists-signoffs.writechecklistsStartRun
3Complete an item using its current revision fence.PUT/v1/apps/{saasAppId}/modules/checklists-signoffs/items/{checklistRunItemId}modules.checklists-signoffs.writechecklistsUpdateItem
4Upload a document or photo through Files.POST/v1/apps/{saasAppId}/modules/files/uploadmodules.files.writefilesUpload
5Attach the uploaded file as item evidence.POST/v1/apps/{saasAppId}/modules/checklists-signoffs/items/{checklistRunItemId}/proofmodules.checklists-signoffs.writechecklistsAttachProof
6Submit the revision-fenced run for human approval.POST/v1/apps/{saasAppId}/modules/checklists-signoffs/runs/{checklistRunId}/submitmodules.checklists-signoffs.writechecklistsSubmit
7Reload the run and evidence after submission.GET/v1/apps/{saasAppId}/modules/checklists-signoffs/runs/{checklistRunId}modules.checklists-signoffs.readchecklistsGetRun

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete Checkoff & Approval implementation guide

Support Tickets

Enable ticketing on a selected email address and operate stable ticket work through Universal Inbox.

Identity: delegated-user
Least-privilege scopes: modules.conversations.write modules.universal-inbox.read modules.universal-inbox.write

#PurposeVerbPathScopeSDK / operation
1List configured email channels and their ticketing state.GET/v1/apps/{saasAppId}/inbox/email-channels/ticketingmodules.universal-inbox.readuniversalInboxGetEmailTicketing
2Enable ticketing on the selected channel through the reviewed configuration contract.PUT/v1/apps/{saasAppId}/inbox/email-channels/{channelConnectionId}/ticketingmodules.universal-inbox.writeuniversalInboxSetEmailTicketing
3List permitted inbox items using the ticket filters published by the contract.GET/v1/apps/{saasAppId}/inbox/itemsmodules.universal-inbox.readuniversalInboxGetItems
4Open the durable ticket and its stable identity.GET/v1/apps/{saasAppId}/inbox/items/{inboxItemId}modules.universal-inbox.readuniversalInboxGetItem
5Post the reviewed response to the native conversation.POST/v1/apps/{saasAppId}/modules/conversations/{recordId}/messagesmodules.conversations.writeconversationsReply
6Move the ticket's human state through the resolution lifecycle.PUT/v1/apps/{saasAppId}/inbox/items/{inboxItemId}/human-statemodules.universal-inbox.writeuniversalInboxUpdateHumanState
7Reload the ticket to verify its final state and correlation evidence.GET/v1/apps/{saasAppId}/inbox/items/{inboxItemId}modules.universal-inbox.readuniversalInboxGetItem

Release assertions

  • Repeat every user-scoped read with a user from another AppAccount and require no protected data.
  • Remove one required scope and require a stable 403 response without performing the mutation.
  • Retry a revision-fenced or idempotent mutation and verify no duplicate business effect.
  • Persist and inspect the returned correlation ID for every rejected or failed request.

Read the complete Support Tickets implementation guide