Reference
Expenses and cards API
13 operations. Generated from the OpenAPI document, so this page always matches the API.
OpenAPI documentErrors and rate limitsSDK and CLI recipes
On this page
spend.current
List the connected spend platform and what it may read
POST/api/v1/manage/spend/current
- Read
- Permission spend.current
const result = await shuffl.spend.current();Request fields (none)
This operation takes no input.
Response object
- catalog object[] required
- blurb string required
- docsHref string required
- fields object[] required
- help string optional
- id string required
- label string required
- optional true optional
- options object[] optional
- label string required
- value string required
- secret true optional
- id "brex" | "ramp" required
- name string required
- steps string[] required
- connections object[] required
- capabilities "cards" | "limits" | "programs" | "reimbursements"[] required
- cardLimits null | object required
- currency string required
- defaultCardLimit null | number required
- groups object[] required
- cardLimit number required
- groupId string required
- interval "monthly" | "quarterly" | "total" | "yearly" required
- createdAt string required
- id string required
- label string required
- lastUsedAt null | string required
- policyDraftedAt null | string required
- policySourceId null | string required
- provider string required
- providerName string required
- sandbox boolean required
- status "connected" | "disconnected" | "needs_attention" required
- writesEnabled boolean required
spend.mine
Read the company’s spend programs and your own cards and limits
POST/api/v1/manage/spend/mine
- Read
- Permission spend.mine
const result = await shuffl.spend.mine();Request fields (none)
This operation takes no input.
Response object
The response is object.
spend.programs
Read the spend programs as the spend platform holds them now
POST/api/v1/manage/spend/programs
- Read
- Permission spend.programs
const result = await shuffl.spend.programs({
"connectionId": "<connectionId>"
});Request fields (1)
- connectionId string required
Response object
- asOf string required
- programs object[] required
- allowedCategories string[] required
- blockedCategories string[] required
- card null | false | true required
- description null | string required
- id string required
- interval null | "daily" | "monthly" | "quarterly" | "total" | "weekly" | "yearly" required
- limit null | object required
- amount number required
- currency string required
- limitLabel null | string required
- name string required
- reimbursements null | false | true required
- transactionLimit null | object required
- amount number required
- currency string required
- transactionLimitLabel null | string required
spend.disconnect
Disconnect the spend platform; Mello stops reading it at once
POST/api/v1/manage/spend/disconnect
- Write
- Permission spend.disconnect
- Needs a requestKey
- Needs confirm set to spend.disconnect
const result = await shuffl.spend.disconnect({
"connectionId": "<connectionId>",
"confirm": "spend.disconnect",
"requestKey": "a-new-unique-key"
});Request fields (3)
- connectionId string required
- confirm "spend.disconnect" required
- requestKey string required1 to 128 characters
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- catalog object[] required
- blurb string required
- docsHref string required
- fields object[] required
- help string optional
- id string required
- label string required
- optional true optional
- options object[] optional
- secret true optional
- id "brex" | "ramp" required
- name string required
- steps string[] required
- connections object[] required
- capabilities "cards" | "limits" | "programs" | "reimbursements"[] required
- cardLimits null | object required
- currency string required
- defaultCardLimit null | number required
- groups object[] required
- interval "monthly" | "quarterly" | "total" | "yearly" required
- createdAt string required
- id string required
- label string required
- lastUsedAt null | string required
- policyDraftedAt null | string required
- policySourceId null | string required
- provider string required
- providerName string required
- sandbox boolean required
- status "connected" | "disconnected" | "needs_attention" required
- writesEnabled boolean required
- catalog object[] required
spend.draftPolicy
Draft the spending policy page in Knowledge from the spend programs
POST/api/v1/manage/spend/draftPolicy
- Write
- Permission spend.draftPolicy
- Needs a requestKey
- Needs confirm set to spend.draftPolicy
const result = await shuffl.spend.draftPolicy({
"connectionId": "<connectionId>",
"confirm": "spend.draftPolicy",
"requestKey": "a-new-unique-key"
});Request fields (3)
- connectionId string required
- confirm "spend.draftPolicy" required
- requestKey string required1 to 128 characters
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- programs number required
- sourceId string required
- title string required
spend.setCardLimits
Set the limit new company cards get for each group, and the default
POST/api/v1/manage/spend/setCardLimits
- Write
- Permission spend.setCardLimits
- Needs a requestKey
- Needs confirm set to spend.setCardLimits
const result = await shuffl.spend.setCardLimits({
"connectionId": "<connectionId>",
"limits": {
"defaultCardLimit": 0,
"groups": [
{
"cardLimit": 0,
"groupId": "<groupId>"
}
]
},
"confirm": "spend.setCardLimits",
"requestKey": "a-new-unique-key"
});Request fields (4)
- connectionId string required
- limits object required
- currency string optional
- defaultCardLimit null | number required
- groups object[] required
- cardLimit number required
- groupId string required
- interval "monthly" | "quarterly" | "total" | "yearly" optional
- confirm "spend.setCardLimits" required
- requestKey string required1 to 128 characters
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- catalog object[] required
- blurb string required
- docsHref string required
- fields object[] required
- help string optional
- id string required
- label string required
- optional true optional
- options object[] optional
- secret true optional
- id "brex" | "ramp" required
- name string required
- steps string[] required
- connections object[] required
- capabilities "cards" | "limits" | "programs" | "reimbursements"[] required
- cardLimits null | object required
- currency string required
- defaultCardLimit null | number required
- groups object[] required
- interval "monthly" | "quarterly" | "total" | "yearly" required
- createdAt string required
- id string required
- label string required
- lastUsedAt null | string required
- policyDraftedAt null | string required
- policySourceId null | string required
- provider string required
- providerName string required
- sandbox boolean required
- status "connected" | "disconnected" | "needs_attention" required
- writesEnabled boolean required
- catalog object[] required
spend.setWrites
Let Shuffl file reimbursements and change company cards in the spend platform, or stop it
POST/api/v1/manage/spend/setWrites
- Write
- Permission spend.setWrites
- Needs a requestKey
- Needs confirm set to spend.setWrites
const result = await shuffl.spend.setWrites({
"connectionId": "<connectionId>",
"enabled": false,
"confirm": "spend.setWrites",
"requestKey": "a-new-unique-key"
});Request fields (4)
- connectionId string required
- enabled boolean required
- confirm "spend.setWrites" required
- requestKey string required1 to 128 characters
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- catalog object[] required
- blurb string required
- docsHref string required
- fields object[] required
- help string optional
- id string required
- label string required
- optional true optional
- options object[] optional
- secret true optional
- id "brex" | "ramp" required
- name string required
- steps string[] required
- connections object[] required
- capabilities "cards" | "limits" | "programs" | "reimbursements"[] required
- cardLimits null | object required
- currency string required
- defaultCardLimit null | number required
- groups object[] required
- interval "monthly" | "quarterly" | "total" | "yearly" required
- createdAt string required
- id string required
- label string required
- lastUsedAt null | string required
- policyDraftedAt null | string required
- policySourceId null | string required
- provider string required
- providerName string required
- sandbox boolean required
- status "connected" | "disconnected" | "needs_attention" required
- writesEnabled boolean required
- catalog object[] required
spend.cards.changes
List card changes waiting for HR after someone moved in People
POST/api/v1/manage/spend/cards/changes
- Read
- Permission spend.cards.changes
const result = await shuffl.spend.cards.changes();Request fields (none)
This operation takes no input.
Response object
- changes object[] required
- cancellable boolean required
- createdAt string required
- details object required
- Option 1 object optional
- appName string required
- groups object[] required
- kind "access" required
- levelName null | string required
- operation "add" | "remove" required
- requestId string required
- Option 2 object optional
- amount null | number required
- approverName null | string required
- approverPersonId null | string required
- cardId null | string required
- cardName null | string required
- cards object[] required
- currency null | string required
- groupName null | string required
- interval null | "monthly" | "quarterly" | "total" | "yearly" required
- invitation null | string required
- kind "card_issue" | "card_limit" | "card_lock" required
- lastFour null | string required
- previousAmount null | number required
- reason "asked" | "joining" | "leaving" | "moved" required
- spendUserId null | string required
- Option 3 object optional
- deviceId null | string required
- deviceName null | string required
- kind "device" required
- model null | string required
- operation "lock" | "order" | "return" | "wipe" required
- serialLast4 null | string required
- shipmentId null | string required
- Option 4 object optional
- amount null | number required
- currency null | string required
- fileName null | string required
- from null | string required
- kind "expense" required
- memo string required
- merchant null | string required
- miles null | number required
- receiptId null | string required
- stage null | string required
- to null | string required
- tripDate null | string required
- type "mileage" | "receipt" required
- Option 5 object optional
- amountCents number required
- currency string required
- giftId string required
- kind "gift" required
- occasion "anniversary" | "birthday" | "praise" | "welcome" required
- rewardId null | string required
- Option 6 object optional
- event null | "buddy_assigned" | "day_one" | "playbook_started" required
- hireId string required
- kind "hiring" required
- startDate null | string required
- text string required
- write "note" | "start_date" | "tag" required
- Option 7 object optional
- caseId string required
- categoryId null | string required
- destinationId string required
- destinationLabel string required
- kind "ticket" required
- ticketKey null | string required
- Option 8 object optional
- amount null | number required
- approver null | string required
- approverSubject null | string optional
- decisionNote null | string optional
- endDate string required
- endHalfDay boolean required
- kind "time_off" required
- policy string required
- policyId null | string required
- startDate string required
- startHalfDay boolean required
- unit null | "days" | "hours" required
- Option 1 object optional
- errorCode null | string required
- id string required
- kind "access" | "card_issue" | "card_limit" | "card_lock" | "device" | "expense" | "gift" | "hiring" | "ticket" | "time_off" required
- lastCheckedAt null | string required
- person object required
- id string required
- name string required
- provider string required
- providerName string required
- settledAt null | string required
- status "approved" | "cancelled" | "declined" | "failed" | "prepared" | "resolved" | "running" | "submitted" | "unknown" required
- statusLabel string required
- submittedAt null | string required
- summary string required
- vendorUrl null | string required
spend.cards.forPerson
Read one person’s company cards, the limit their groups map to and what Shuffl changed
POST/api/v1/manage/spend/cards/forPerson
- Read
- Permission spend.cards.forPerson
const result = await shuffl.spend.cards.forPerson({
"personId": "<personId>"
});Request fields (1)
- personId string required
Response object
The response is object.
spend.cards.dismissChange
Dismiss a card change waiting after a move; nothing changes in the spend platform
POST/api/v1/manage/spend/cards/dismissChange
- Write
- Permission spend.cards.dismissChange
- Needs a requestKey
- Needs confirm set to spend.cards.dismissChange
const result = await shuffl.spend.cards.dismissChange({
"actionId": "<actionId>",
"confirm": "spend.cards.dismissChange",
"requestKey": "a-new-unique-key"
});Request fields (3)
- actionId string required
- confirm "spend.cards.dismissChange" required
- requestKey string required1 to 128 characters
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- changes object[] required
- cancellable boolean required
- createdAt string required
- details object required
- Option 1 object optional
- appName string required
- groups object[] required
- kind "access" required
- levelName null | string required
- operation "add" | "remove" required
- requestId string required
- Option 2 object optional
- amount null | number required
- approverName null | string required
- approverPersonId null | string required
- cardId null | string required
- cardName null | string required
- cards object[] required
- currency null | string required
- groupName null | string required
- interval null | "monthly" | "quarterly" | "total" | "yearly" required
- invitation null | string required
- kind "card_issue" | "card_limit" | "card_lock" required
- lastFour null | string required
- previousAmount null | number required
- reason "asked" | "joining" | "leaving" | "moved" required
- spendUserId null | string required
- Option 3 object optional
- deviceId null | string required
- deviceName null | string required
- kind "device" required
- model null | string required
- operation "lock" | "order" | "return" | "wipe" required
- serialLast4 null | string required
- shipmentId null | string required
- Option 4 object optional
- amount null | number required
- currency null | string required
- fileName null | string required
- from null | string required
- kind "expense" required
- memo string required
- merchant null | string required
- miles null | number required
- receiptId null | string required
- stage null | string required
- to null | string required
- tripDate null | string required
- type "mileage" | "receipt" required
- Option 5 object optional
- amountCents number required
- currency string required
- giftId string required
- kind "gift" required
- occasion "anniversary" | "birthday" | "praise" | "welcome" required
- rewardId null | string required
- Option 6 object optional
- event null | "buddy_assigned" | "day_one" | "playbook_started" required
- hireId string required
- kind "hiring" required
- startDate null | string required
- text string required
- write "note" | "start_date" | "tag" required
- Option 7 object optional
- caseId string required
- categoryId null | string required
- destinationId string required
- destinationLabel string required
- kind "ticket" required
- ticketKey null | string required
- Option 8 object optional
- amount null | number required
- approver null | string required
- approverSubject null | string optional
- decisionNote null | string optional
- endDate string required
- endHalfDay boolean required
- kind "time_off" required
- policy string required
- policyId null | string required
- startDate string required
- startHalfDay boolean required
- unit null | "days" | "hours" required
- Option 1 object optional
- errorCode null | string required
- id string required
- kind "access" | "card_issue" | "card_limit" | "card_lock" | "device" | "expense" | "gift" | "hiring" | "ticket" | "time_off" required
- lastCheckedAt null | string required
- person object required
- id string required
- name string required
- provider string required
- providerName string required
- settledAt null | string required
- status "approved" | "cancelled" | "declined" | "failed" | "prepared" | "resolved" | "running" | "submitted" | "unknown" required
- statusLabel string required
- submittedAt null | string required
- summary string required
- vendorUrl null | string required
- changes object[] required
spend.cards.issue
Issue someone a virtual company card with the limit their groups map to
POST/api/v1/manage/spend/cards/issue
- Write
- Permission spend.cards.issue
- Needs a requestKey
- Needs confirm set to spend.cards.issue
const result = await shuffl.spend.cards.issue({
"personId": "<personId>",
"requestKey": "a-new-unique-key",
"confirm": "spend.cards.issue"
});Request fields (4)
- cardLimit number optional
- personId string required
- requestKey string required1 to 128 characters
- confirm "spend.cards.issue" required
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- action object required
- cancellable boolean required
- createdAt string required
- details object required
- Option 1 object optional
- appName string required
- groups object[] required
- kind "access" required
- levelName null | string required
- operation "add" | "remove" required
- requestId string required
- Option 2 object optional
- amount null | number required
- approverName null | string required
- approverPersonId null | string required
- cardId null | string required
- cardName null | string required
- cards object[] required
- currency null | string required
- groupName null | string required
- interval null | "monthly" | "quarterly" | "total" | "yearly" required
- invitation null | string required
- kind "card_issue" | "card_limit" | "card_lock" required
- lastFour null | string required
- previousAmount null | number required
- reason "asked" | "joining" | "leaving" | "moved" required
- spendUserId null | string required
- Option 3 object optional
- deviceId null | string required
- deviceName null | string required
- kind "device" required
- model null | string required
- operation "lock" | "order" | "return" | "wipe" required
- serialLast4 null | string required
- shipmentId null | string required
- Option 4 object optional
- amount null | number required
- currency null | string required
- fileName null | string required
- from null | string required
- kind "expense" required
- memo string required
- merchant null | string required
- miles null | number required
- receiptId null | string required
- stage null | string required
- to null | string required
- tripDate null | string required
- type "mileage" | "receipt" required
- Option 5 object optional
- amountCents number required
- currency string required
- giftId string required
- kind "gift" required
- occasion "anniversary" | "birthday" | "praise" | "welcome" required
- rewardId null | string required
- Option 6 object optional
- event null | "buddy_assigned" | "day_one" | "playbook_started" required
- hireId string required
- kind "hiring" required
- startDate null | string required
- text string required
- write "note" | "start_date" | "tag" required
- Option 7 object optional
- caseId string required
- categoryId null | string required
- destinationId string required
- destinationLabel string required
- kind "ticket" required
- ticketKey null | string required
- Option 8 object optional
- amount null | number required
- approver null | string required
- approverSubject null | string optional
- decisionNote null | string optional
- endDate string required
- endHalfDay boolean required
- kind "time_off" required
- policy string required
- policyId null | string required
- startDate string required
- startHalfDay boolean required
- unit null | "days" | "hours" required
- Option 1 object optional
- errorCode null | string required
- id string required
- kind "access" | "card_issue" | "card_limit" | "card_lock" | "device" | "expense" | "gift" | "hiring" | "ticket" | "time_off" required
- lastCheckedAt null | string required
- provider string required
- providerName string required
- settledAt null | string required
- status "approved" | "cancelled" | "declined" | "failed" | "prepared" | "resolved" | "running" | "submitted" | "unknown" required
- statusLabel string required
- submittedAt null | string required
- vendorUrl null | string required
- providerName string required
- status "approved" | "cancelled" | "declined" | "failed" | "prepared" | "resolved" | "running" | "submitted" | "unknown" required
- statusLabel string required
- summary string required
- action object required
spend.cards.lock
Lock every company card a person holds and read each one back
POST/api/v1/manage/spend/cards/lock
- Write
- Permission spend.cards.lock
- Needs a requestKey
- Needs confirm set to spend.cards.lock
const result = await shuffl.spend.cards.lock({
"personId": "<personId>",
"requestKey": "a-new-unique-key",
"confirm": "spend.cards.lock"
});Request fields (3)
- personId string required
- requestKey string required1 to 128 characters
- confirm "spend.cards.lock" required
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- action object required
- cancellable boolean required
- createdAt string required
- details object required
- Option 1 object optional
- appName string required
- groups object[] required
- kind "access" required
- levelName null | string required
- operation "add" | "remove" required
- requestId string required
- Option 2 object optional
- amount null | number required
- approverName null | string required
- approverPersonId null | string required
- cardId null | string required
- cardName null | string required
- cards object[] required
- currency null | string required
- groupName null | string required
- interval null | "monthly" | "quarterly" | "total" | "yearly" required
- invitation null | string required
- kind "card_issue" | "card_limit" | "card_lock" required
- lastFour null | string required
- previousAmount null | number required
- reason "asked" | "joining" | "leaving" | "moved" required
- spendUserId null | string required
- Option 3 object optional
- deviceId null | string required
- deviceName null | string required
- kind "device" required
- model null | string required
- operation "lock" | "order" | "return" | "wipe" required
- serialLast4 null | string required
- shipmentId null | string required
- Option 4 object optional
- amount null | number required
- currency null | string required
- fileName null | string required
- from null | string required
- kind "expense" required
- memo string required
- merchant null | string required
- miles null | number required
- receiptId null | string required
- stage null | string required
- to null | string required
- tripDate null | string required
- type "mileage" | "receipt" required
- Option 5 object optional
- amountCents number required
- currency string required
- giftId string required
- kind "gift" required
- occasion "anniversary" | "birthday" | "praise" | "welcome" required
- rewardId null | string required
- Option 6 object optional
- event null | "buddy_assigned" | "day_one" | "playbook_started" required
- hireId string required
- kind "hiring" required
- startDate null | string required
- text string required
- write "note" | "start_date" | "tag" required
- Option 7 object optional
- caseId string required
- categoryId null | string required
- destinationId string required
- destinationLabel string required
- kind "ticket" required
- ticketKey null | string required
- Option 8 object optional
- amount null | number required
- approver null | string required
- approverSubject null | string optional
- decisionNote null | string optional
- endDate string required
- endHalfDay boolean required
- kind "time_off" required
- policy string required
- policyId null | string required
- startDate string required
- startHalfDay boolean required
- unit null | "days" | "hours" required
- Option 1 object optional
- errorCode null | string required
- id string required
- kind "access" | "card_issue" | "card_limit" | "card_lock" | "device" | "expense" | "gift" | "hiring" | "ticket" | "time_off" required
- lastCheckedAt null | string required
- provider string required
- providerName string required
- settledAt null | string required
- status "approved" | "cancelled" | "declined" | "failed" | "prepared" | "resolved" | "running" | "submitted" | "unknown" required
- statusLabel string required
- submittedAt null | string required
- vendorUrl null | string required
- providerName string required
- status "approved" | "cancelled" | "declined" | "failed" | "prepared" | "resolved" | "running" | "submitted" | "unknown" required
- statusLabel string required
- summary string required
- action object required
spend.cards.updateLimit
Change a company card’s limit and make the person’s manager its approver
POST/api/v1/manage/spend/cards/updateLimit
- Write
- Permission spend.cards.updateLimit
- Needs a requestKey
- Needs confirm set to spend.cards.updateLimit
const result = await shuffl.spend.cards.updateLimit({
"personId": "<personId>",
"requestKey": "a-new-unique-key",
"confirm": "spend.cards.updateLimit"
});Request fields (6)
- actionId string optional
- cardId string optional
- cardLimit number optional
- personId string required
- requestKey string required1 to 128 characters
- confirm "spend.cards.updateLimit" required
Response object
- receipt object required
- completedAt string (date-time) | null required
- createdAt string (date-time) required
- id string (uuid) required
- operation string required
- requestKey string required
- status "running" | "succeeded" | "failed" | "unknown" required
- result object | null required
- action object required
- cancellable boolean required
- createdAt string required
- details object required
- Option 1 object optional
- appName string required
- groups object[] required
- kind "access" required
- levelName null | string required
- operation "add" | "remove" required
- requestId string required
- Option 2 object optional
- amount null | number required
- approverName null | string required
- approverPersonId null | string required
- cardId null | string required
- cardName null | string required
- cards object[] required
- currency null | string required
- groupName null | string required
- interval null | "monthly" | "quarterly" | "total" | "yearly" required
- invitation null | string required
- kind "card_issue" | "card_limit" | "card_lock" required
- lastFour null | string required
- previousAmount null | number required
- reason "asked" | "joining" | "leaving" | "moved" required
- spendUserId null | string required
- Option 3 object optional
- deviceId null | string required
- deviceName null | string required
- kind "device" required
- model null | string required
- operation "lock" | "order" | "return" | "wipe" required
- serialLast4 null | string required
- shipmentId null | string required
- Option 4 object optional
- amount null | number required
- currency null | string required
- fileName null | string required
- from null | string required
- kind "expense" required
- memo string required
- merchant null | string required
- miles null | number required
- receiptId null | string required
- stage null | string required
- to null | string required
- tripDate null | string required
- type "mileage" | "receipt" required
- Option 5 object optional
- amountCents number required
- currency string required
- giftId string required
- kind "gift" required
- occasion "anniversary" | "birthday" | "praise" | "welcome" required
- rewardId null | string required
- Option 6 object optional
- event null | "buddy_assigned" | "day_one" | "playbook_started" required
- hireId string required
- kind "hiring" required
- startDate null | string required
- text string required
- write "note" | "start_date" | "tag" required
- Option 7 object optional
- caseId string required
- categoryId null | string required
- destinationId string required
- destinationLabel string required
- kind "ticket" required
- ticketKey null | string required
- Option 8 object optional
- amount null | number required
- approver null | string required
- approverSubject null | string optional
- decisionNote null | string optional
- endDate string required
- endHalfDay boolean required
- kind "time_off" required
- policy string required
- policyId null | string required
- startDate string required
- startHalfDay boolean required
- unit null | "days" | "hours" required
- Option 1 object optional
- errorCode null | string required
- id string required
- kind "access" | "card_issue" | "card_limit" | "card_lock" | "device" | "expense" | "gift" | "hiring" | "ticket" | "time_off" required
- lastCheckedAt null | string required
- provider string required
- providerName string required
- settledAt null | string required
- status "approved" | "cancelled" | "declined" | "failed" | "prepared" | "resolved" | "running" | "submitted" | "unknown" required
- statusLabel string required
- submittedAt null | string required
- vendorUrl null | string required
- providerName string required
- status "approved" | "cancelled" | "declined" | "failed" | "prepared" | "resolved" | "running" | "submitted" | "unknown" required
- statusLabel string required
- summary string required
- action object required