Skip to content

Get a plan

GET
/v1/plans/{id}
curl --request GET \
--url https://api.trustysweep.com/v1/plans/example \
--cookie sweep_session=<sweep_session>
id
required
string
/^pln_[0-9A-HJKMNP-TV-Z]{26}$/

OK

Media typeapplication/json

A Shadow Sweep plan: a low-cost logical preflight built from metadata, hashes and provider revision markers. Never mutates provider state.

object
planId
required

Prefixed ULID (pln_…)

string
/^pln_[0-9A-HJKMNP-TV-Z]{26}$/
planVersion
required
string
Allowed values: 1
tenantId
required
string
userId
required
string
actor
required
object
type
required
string
Allowed values: user sweep_automation developer_application external_agent service connector
principalId
required
string
delegatingUserId
One of:
string
applicationId
One of:
string
agentId
One of:
string
grantId
One of:
string
intent
required
string
Allowed values: sweep rescue restore migrate export unsubscribe simulation
operationClasses
required
Array<string>
Allowed values: discover preserve write remove restore migrate monitor automate billable_execute
simulated
required
boolean
createdAt
required
string format: date-time
expiresAt
required
string format: date-time
sourceMarkers
required
Array<object>
object
provider
required
string
Allowed values: google_gmail google_drive microsoft_outlook microsoft_onedrive dropbox apple_local s3_compatible trusty_vault simulated
sourceId
required
string
kind
required
string
Allowed values: history_id delta_token page_token cursor etag snapshot_hash none
value
required
string
observedAt
required
string format: date-time
objects
required
Array<object>
object
assetId
required

Prefixed ULID (ast_…)

string
/^ast_[0-9A-HJKMNP-TV-Z]{26}$/
sourceId
required

Prefixed ULID (src_…)

string
/^src_[0-9A-HJKMNP-TV-Z]{26}$/
provider
required
string
Allowed values: google_gmail google_drive microsoft_outlook microsoft_onedrive dropbox apple_local s3_compatible trusty_vault simulated
providerObjectId
required
string
expectedVersion
One of:
string
expectedSizeBytes
required
integer
expectedSha256
One of:
string
storageClass
string
Allowed values: preserve likely_removable review promotional duplicate large_attachment cold recent protected_by_rule
actions
required
Array<string>
>= 1 items
Allowed values: preserve trash restore copy move unsubscribe noop
preservationElected
required
boolean
excluded
Array<object>
object
assetId
required

Prefixed ULID (ast_…)

string
/^ast_[0-9A-HJKMNP-TV-Z]{26}$/
reason
required
string
Allowed values: low_confidence policy_exclusion protected_by_rule unsupported_capability over_grant_limit recent shared
detail
string
destination
One of:
object
destinationId
required
string
provider
required
string
Allowed values: google_gmail google_drive microsoft_outlook microsoft_onedrive dropbox apple_local s3_compatible trusty_vault simulated
label
required
string
external
boolean
pathTemplate
One of:
string
metadataMapping
object
key
additional properties
string
permissionMapping
string
Allowed values: preserve_where_supported drop owner_only
knownLossiness
Array<string>
preservationRequired
required
boolean
projection
required
object
objectCount
required
integer
bytesToPreserve
required
integer
bytesToRemove
required
integer
bytesToTransfer
required
integer
projectedReclaimBytes
required
integer
projectedQuota
required
Array<object>
object
sourceId
required
string
usedBytesAfter
required
integer
limitBytes
One of:
integer
percentAfter
One of:
number
policy
One of:
object
policyVersion
required
string
decision
required
string
Allowed values: allow deny step_up_required
reasons
required
Array<string>
requiredApprovals
Array<string>
Allowed values: human_user developer_owner ceiling_increase scope_step_up
decisionId
string
meter
One of:
object
rateCardVersion
required
string
currency
required
string
Allowed values: usd
lines
required
Array<object>
object
meter
required
string
quantity
required
number
unit
required
string
estimatedCents
required
integer
includedInAllowance
required
boolean
estimatedCents
required
integer
includedAllowanceApplied
required
boolean
withinStandingEnvelope
One of:
boolean
state
required
string
Allowed values: draft validated authorized committing committed executed partially_executed stale expired rejected cancelled
hash

Deterministic SHA-256 over material fields; any material change produces a new hash and requires fresh authorization.

string
authorization
One of:
object
authorizedAt
required
string format: date-time
authorizedBy
required
string
actionDecisionId
required
string
commercialAuthorizationId
One of:
string
planHashAtAuthorization
required
string
Example
{
"planId": "pln_01J8Z3K9M2Q4R6S8T0V2W4X6Y8",
"planVersion": "1",
"actor": {
"type": "user"
},
"intent": "sweep",
"operationClasses": [
"discover"
],
"sourceMarkers": [
{
"provider": "google_gmail",
"kind": "history_id"
}
],
"objects": [
{
"assetId": "ast_01J8Z3K9M2Q4R6S8T0V2W4X6Y8",
"sourceId": "src_01J8Z3K9M2Q4R6S8T0V2W4X6Y8",
"provider": "google_gmail",
"storageClass": "preserve",
"actions": [
"preserve"
]
}
],
"excluded": [
{
"assetId": "ast_01J8Z3K9M2Q4R6S8T0V2W4X6Y8",
"reason": "low_confidence"
}
],
"destination": {
"provider": "google_gmail",
"permissionMapping": "preserve_where_supported"
},
"policy": {
"decision": "allow",
"requiredApprovals": [
"human_user"
]
},
"meter": {
"currency": "usd"
},
"state": "draft"
}
RateLimit-Limit
integer

Requests allowed in the current window.

RateLimit-Remaining
integer

Requests remaining in the current window.

RateLimit-Reset
integer

Seconds until the window resets.

Validation failed

Media typeapplication/problem+json

RFC 9457 problem details.

object
type
required
title
required
string
status
required
integer
detail
string
code
required

Machine-readable error code from errors.json

string
request_id
required
string
errors
Array<object>
object
path
required
string
message
required
string
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"path": "example",
"message": "example"
}
]
}

Unauthenticated

Media typeapplication/problem+json

RFC 9457 problem details.

object
type
required
title
required
string
status
required
integer
detail
string
code
required

Machine-readable error code from errors.json

string
request_id
required
string
errors
Array<object>
object
path
required
string
message
required
string
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"path": "example",
"message": "example"
}
]
}

Forbidden / action denied / step-up required

Media typeapplication/problem+json

RFC 9457 problem details.

object
type
required
title
required
string
status
required
integer
detail
string
code
required

Machine-readable error code from errors.json

string
request_id
required
string
errors
Array<object>
object
path
required
string
message
required
string
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"path": "example",
"message": "example"
}
]
}

Not found

Media typeapplication/problem+json

RFC 9457 problem details.

object
type
required
title
required
string
status
required
integer
detail
string
code
required

Machine-readable error code from errors.json

string
request_id
required
string
errors
Array<object>
object
path
required
string
message
required
string
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"path": "example",
"message": "example"
}
]
}

Rate limited

Media typeapplication/problem+json

RFC 9457 problem details.

object
type
required
title
required
string
status
required
integer
detail
string
code
required

Machine-readable error code from errors.json

string
request_id
required
string
errors
Array<object>
object
path
required
string
message
required
string
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"path": "example",
"message": "example"
}
]
}
Retry-After
integer

Seconds to wait before retrying.

RateLimit-Limit
integer

Requests allowed in the current window.

RateLimit-Remaining
integer

Requests remaining in the current window.

RateLimit-Reset
integer

Seconds until the window resets.

Internal error

Media typeapplication/problem+json

RFC 9457 problem details.

object
type
required
title
required
string
status
required
integer
detail
string
code
required

Machine-readable error code from errors.json

string
request_id
required
string
errors
Array<object>
object
path
required
string
message
required
string
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"path": "example",
"message": "example"
}
]
}