Slash · Schema
PublicExpenseReportWithMetadata
An expense report with enriched metadata, stripped for public API consumption
CompanyBankingPaymentsFinancial ServicesFintechCorporate CardsBusiness BankingInvoicingExpense ManagementTreasuryFDX
JSON Schema
slash-slashfi-models-entity-expense-report-public-expense-report-with-metadata-yaml-schema.json
Raw ↑
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/slash/main/json-schema/slash-slashfi-models-entity-expense-report-public-expense-report-with-metadata-yaml-schema.json",
"title": "PublicExpenseReportWithMetadata",
"description": "An expense report with enriched metadata, stripped for public API consumption",
"x-generated": "2026-10-12",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/slash-expense-report-api-openapi.yml#/components/schemas/slashfi.models.entity.ExpenseReport.PublicExpenseReportWithMetadata.yaml",
"type": "object",
"allOf": [
{
"$ref": "#/$defs/slashfi.models.entity.ExpenseReport.ExpenseReport.yaml",
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/ExpenseReport",
"sourcePath": "entity/ExpenseReport/ExpenseReport.yaml",
"title": "ExpenseReport",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
{
"type": "object",
"properties": {
"merchant": {
"$ref": "#/$defs/slashfi.models.entity.ExpenseReport.ExpenseReportMerchant.yaml",
"description": "The merchant associated with this expense (enriched from merchantV2Id or customMerchantId)",
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/ExpenseReportMerchant",
"sourcePath": "entity/ExpenseReport/ExpenseReportMerchant.yaml",
"title": "ExpenseReportMerchant",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"documents": {
"type": "array",
"description": "Documents/receipts attached to this expense report with presigned URLs",
"items": {
"type": "object",
"properties": {
"document": {
"$ref": "#/$defs/slashfi.models.entity.Document.IDocumentModel.yaml",
"description": "The document metadata",
"x-entrypoint": {
"virtualPath": "entity/Document/IDocumentModel",
"sourcePath": "entity/Document/IDocumentModel.yaml",
"title": "IDocumentModel",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"url": {
"type": "string",
"description": "Presigned S3 URL for accessing the document"
}
},
"required": [
"document",
"url"
]
}
},
"aggregatedTransaction": {
"$ref": "#/$defs/slashfi.models.entity.ExpenseReport.PublicTransactionSummary.yaml",
"description": "Minimal transaction summary for the payout",
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/PublicTransactionSummary",
"sourcePath": "entity/ExpenseReport/PublicTransactionSummary.yaml",
"title": "PublicTransactionSummary",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"destination": {
"$ref": "#/$defs/slashfi.models.entity.ExpenseReport.PublicReimbursementSource.yaml",
"description": "Minimal bank account info for the reimbursement destination",
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/PublicReimbursementSource",
"sourcePath": "entity/ExpenseReport/PublicReimbursementSource.yaml",
"title": "PublicReimbursementSource",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"submittedByUser": {
"$ref": "#/$defs/slashfi.models.entity.ExpenseReport.PublicUserSummary.yaml",
"description": "The user who submitted the expense report",
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/PublicUserSummary",
"sourcePath": "entity/ExpenseReport/PublicUserSummary.yaml",
"title": "PublicUserSummary",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"reviewedByUser": {
"$ref": "#/$defs/slashfi.models.entity.ExpenseReport.PublicUserSummary.yaml",
"description": "The admin who reviewed the expense report",
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/PublicUserSummary",
"sourcePath": "entity/ExpenseReport/PublicUserSummary.yaml",
"title": "PublicUserSummary",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"review": {
"$ref": "#/$defs/slashfi.models.entity.ExpenseReport.ExpenseReportReview.yaml",
"description": "The review decision for this expense report (if reviewed)",
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/ExpenseReportReview",
"sourcePath": "entity/ExpenseReport/ExpenseReportReview.yaml",
"title": "ExpenseReportReview",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
}
}
}
],
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/PublicExpenseReportWithMetadata",
"sourcePath": "entity/ExpenseReport/PublicExpenseReportWithMetadata.yaml",
"title": "PublicExpenseReportWithMetadata",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"$defs": {
"slashfi.models.entity.CustomMerchant.CustomMerchant.yaml": {
"type": "object",
"description": "Custom merchant schema",
"properties": {
"id": {
"$ref": "#/$defs/slashfi.models.id.CustomMerchant.CustomMerchantId.yaml",
"description": "The ID of the custom merchant",
"x-entrypoint": {
"virtualPath": "id/CustomMerchant/CustomMerchantId",
"sourcePath": "id/CustomMerchant/CustomMerchantId.yaml",
"title": "CustomMerchantId",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"legalEntityId": {
"$ref": "#/$defs/slashfi.models.id.LegalEntityId.yaml",
"description": "The ID of the legal entity this custom merchant belongs to",
"x-entrypoint": {
"virtualPath": "id/LegalEntityId",
"sourcePath": "id/LegalEntityId.yaml",
"title": "LegalEntityId",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"addedByUserId": {
"$ref": "#/$defs/slashfi.models.id.User.yaml",
"description": "The ID of the user who added this custom merchant",
"x-entrypoint": {
"virtualPath": "id/User",
"sourcePath": "id/User.yaml",
"title": "User",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"merchantName": {
"type": "string",
"description": "The name of the custom merchant"
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "Metadata timestamp"
}
},
"required": [
"id",
"legalEntityId",
"addedByUserId",
"merchantName",
"timestamp"
],
"x-entrypoint": {
"virtualPath": "entity/CustomMerchant/CustomMerchant",
"sourcePath": "entity/CustomMerchant/CustomMerchant.yaml",
"title": "CustomMerchant",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"title": "CustomMerchant"
},
"slashfi.models.entity.Document.DocumentStatus.yaml": {
"type": "string",
"enum": [
"uploaded",
"uploading",
"not_generated",
"generating",
"generated",
"error",
"deleted"
],
"x-entrypoint": {
"virtualPath": "entity/Document/DocumentStatus",
"sourcePath": "entity/Document/DocumentStatus.yaml",
"title": "DocumentStatus",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"title": "DocumentStatus"
},
"slashfi.models.entity.Document.IDocumentModel.yaml": {
"type": "object",
"properties": {
"$entity": {
"type": "string",
"enum": [
"document"
]
},
"id": {
"type": "string"
},
"accountType": {
"type": "string",
"enum": [
"legalEntity",
"slashAccount",
"slashAccountGroup",
"loan",
"card",
"dispute",
"productApplication",
"ach",
"wire",
"adminNote",
"businessIdentity",
"subaccount",
"atomicInvestSleeve",
"atomicInvestAccount",
"accountingEntry",
"slashWalletAccount",
"slashWallet",
"affiliatePayoutProfile",
"user",
"notification",
"expenseReport",
"globalUsdAch",
"globalUsdWire",
"globalUsdSwift",
"globalUsdCrypto",
"featureAnnouncement"
]
},
"accountId": {
"type": "string"
},
"startDate": {
"type": "string"
},
"endDate": {
"type": "string"
},
"filename": {
"type": "string"
},
"status": {
"$ref": "#/$defs/slashfi.models.entity.Document.DocumentStatus.yaml",
"x-entrypoint": {
"virtualPath": "entity/Document/DocumentStatus",
"sourcePath": "entity/Document/DocumentStatus.yaml",
"title": "DocumentStatus",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"error": {
"type": "string"
},
"checksum": {
"type": "string"
},
"accessLevel": {
"type": "string"
},
"documentType": {
"$ref": "#/$defs/slashfi.models.enums.Document.DocumentType.yaml",
"x-entrypoint": {
"virtualPath": "enums/Document/DocumentType",
"sourcePath": "enums/Document/DocumentType.yaml",
"title": "DocumentType",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"category": {
"type": "string",
"enum": [
"document",
"statement"
]
},
"documentSource": {
"$ref": "#/$defs/slashfi.models.enums.Document.DocumentSource.yaml",
"x-entrypoint": {
"virtualPath": "enums/Document/DocumentSource",
"sourcePath": "enums/Document/DocumentSource.yaml",
"title": "DocumentSource",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"fileMetadata": {
"type": "object",
"properties": {
"size": {
"type": "number"
},
"type": {
"type": "string"
}
}
},
"timestamp": {
"type": "string"
}
},
"required": [
"$entity",
"id",
"accountType",
"accountId",
"startDate",
"endDate",
"status",
"category",
"documentType",
"accessLevel",
"timestamp"
],
"x-entrypoint": {
"virtualPath": "entity/Document/IDocumentModel",
"sourcePath": "entity/Document/IDocumentModel.yaml",
"title": "IDocumentModel",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"title": "IDocumentModel"
},
"slashfi.models.entity.ExpenseReport.ExpenseReport.yaml": {
"type": "object",
"description": "An expense report submitted by an employee for reimbursement (matches database schema)",
"properties": {
"id": {
"$ref": "#/$defs/slashfi.models.id.ExpenseReport.ExpenseReportId.yaml",
"description": "The unique ID of the expense report",
"x-entrypoint": {
"virtualPath": "id/ExpenseReport/ExpenseReportId",
"sourcePath": "id/ExpenseReport/ExpenseReportId.yaml",
"title": "ExpenseReportId",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"legalEntityId": {
"$ref": "#/$defs/slashfi.models.id.LegalEntityId.yaml",
"description": "The ID of the legal entity this expense report belongs to",
"x-entrypoint": {
"virtualPath": "id/LegalEntityId",
"sourcePath": "id/LegalEntityId.yaml",
"title": "LegalEntityId",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"submittedByUserId": {
"$ref": "#/$defs/slashfi.models.id.User.yaml",
"description": "The ID of the user who submitted this expense report",
"x-entrypoint": {
"virtualPath": "id/User",
"sourcePath": "id/User.yaml",
"title": "User",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"amountCents": {
"type": "integer",
"description": "The expense amount in cents"
},
"currency": {
"type": "string",
"description": "ISO currency code (e.g., 'USD')"
},
"transactionDate": {
"type": "string",
"format": "date-time",
"description": "The date of the transaction being reimbursed"
},
"merchantV2Id": {
"$ref": "#/$defs/slashfi.models.id.MerchantV2Id.yaml",
"nullable": true,
"description": "Reference to MerchantV2 registry (mutually exclusive with customMerchantId)",
"x-entrypoint": {
"virtualPath": "id/MerchantV2Id",
"sourcePath": "id/MerchantV2Id.yaml",
"title": "MerchantV2Id",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"customMerchantId": {
"$ref": "#/$defs/slashfi.models.id.CustomMerchant.CustomMerchantId.yaml",
"nullable": true,
"description": "Reference to custom merchant (mutually exclusive with merchantV2Id)",
"x-entrypoint": {
"virtualPath": "id/CustomMerchant/CustomMerchantId",
"sourcePath": "id/CustomMerchant/CustomMerchantId.yaml",
"title": "CustomMerchantId",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"memo": {
"type": [
"string",
"null"
],
"description": "Description or notes for the expense"
},
"destinationId": {
"$ref": "#/$defs/slashfi.models.id.UserBankAccount.yaml",
"description": "The user's bank account ID for payout",
"x-entrypoint": {
"virtualPath": "id/UserBankAccount",
"sourcePath": "id/UserBankAccount.yaml",
"title": "UserBankAccount",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"submittedAt": {
"type": "string",
"format": "date-time",
"description": "When the expense report was submitted"
},
"status": {
"$ref": "#/$defs/slashfi.models.entity.ExpenseReport.ExpenseReportStatus.yaml",
"description": "Current status of the expense report",
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/ExpenseReportStatus",
"sourcePath": "entity/ExpenseReport/ExpenseReportStatus.yaml",
"title": "ExpenseReportStatus",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "Metadata timestamp"
},
"fxRateToUsd": {
"type": [
"string",
"null"
],
"description": "FX rate at submission time in format \"1 USD = X foreign\" (e.g., \"7.0286\" for CNY means 100 CNY / 7.0286 = $14.23 USD)"
},
"fxRateUpdatedAt": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "When the FX rate was captured"
},
"noReceiptReason": {
"type": "string",
"description": "Reason for not having a receipt. Should only be set when this report has no receipt (expense report documents) associated with it."
}
},
"required": [
"id",
"legalEntityId",
"submittedByUserId",
"amountCents",
"currency",
"transactionDate",
"destinationId",
"submittedAt",
"status",
"timestamp"
],
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/ExpenseReport",
"sourcePath": "entity/ExpenseReport/ExpenseReport.yaml",
"title": "ExpenseReport",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"title": "ExpenseReport"
},
"slashfi.models.entity.ExpenseReport.ExpenseReportMerchant.yaml": {
"description": "The merchant associated with an expense report (either a merchantV2 or customMerchant)",
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"merchantV2"
]
},
"merchantV2": {
"$ref": "#/$defs/slashfi.models.entity.Merchant.MerchantV2.yaml",
"x-entrypoint": {
"virtualPath": "entity/Merchant/MerchantV2",
"sourcePath": "entity/Merchant/MerchantV2.yaml",
"title": "MerchantV2",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
}
},
"required": [
"type",
"merchantV2"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"customMerchant"
]
},
"customMerchant": {
"$ref": "#/$defs/slashfi.models.entity.CustomMerchant.CustomMerchant.yaml",
"x-entrypoint": {
"virtualPath": "entity/CustomMerchant/CustomMerchant",
"sourcePath": "entity/CustomMerchant/CustomMerchant.yaml",
"title": "CustomMerchant",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
}
},
"required": [
"type",
"customMerchant"
]
}
],
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/ExpenseReportMerchant",
"sourcePath": "entity/ExpenseReport/ExpenseReportMerchant.yaml",
"title": "ExpenseReportMerchant",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"title": "ExpenseReportMerchant"
},
"slashfi.models.entity.ExpenseReport.ExpenseReportReview.yaml": {
"type": "object",
"description": "Review decision for an expense report",
"properties": {
"id": {
"$ref": "#/$defs/slashfi.models.id.ExpenseReport.ExpenseReportReviewId.yaml",
"description": "The unique ID of the expense report review",
"x-entrypoint": {
"virtualPath": "id/ExpenseReport/ExpenseReportReviewId",
"sourcePath": "id/ExpenseReport/ExpenseReportReviewId.yaml",
"title": "ExpenseReportReviewId",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"expenseReportId": {
"$ref": "#/$defs/slashfi.models.id.ExpenseReport.ExpenseReportId.yaml",
"description": "The ID of the expense report being reviewed",
"x-entrypoint": {
"virtualPath": "id/ExpenseReport/ExpenseReportId",
"sourcePath": "id/ExpenseReport/ExpenseReportId.yaml",
"title": "ExpenseReportId",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"decision": {
"type": "string",
"enum": [
"approved",
"rejected"
],
"description": "The admin's decision on the expense report"
},
"reviewedByUserId": {
"$ref": "#/$defs/slashfi.models.id.User.yaml",
"description": "The ID of the user who reviewed the expense report",
"x-entrypoint": {
"virtualPath": "id/User",
"sourcePath": "id/User.yaml",
"title": "User",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"reviewedAt": {
"type": "string",
"format": "date-time",
"description": "When the review was made"
},
"rejectionReason": {
"type": [
"string",
"null"
],
"description": "Reason for rejection (only set when decision is 'rejected')"
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "Metadata timestamp"
}
},
"required": [
"id",
"expenseReportId",
"decision",
"reviewedByUserId",
"reviewedAt",
"timestamp"
],
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/ExpenseReportReview",
"sourcePath": "entity/ExpenseReport/ExpenseReportReview.yaml",
"title": "ExpenseReportReview",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"title": "ExpenseReportReview"
},
"slashfi.models.entity.ExpenseReport.ExpenseReportStatus.yaml": {
"type": "string",
"description": "The status of an expense report",
"enum": [
"pending_review",
"cancelled",
"rejected",
"payment_processing",
"payment_completed",
"payment_failed"
],
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/ExpenseReportStatus",
"sourcePath": "entity/ExpenseReport/ExpenseReportStatus.yaml",
"title": "ExpenseReportStatus",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"title": "ExpenseReportStatus"
},
"slashfi.models.entity.ExpenseReport.PublicReimbursementSource.yaml": {
"type": "object",
"description": "A minimal bank account summary for public API responses",
"properties": {
"id": {
"type": "string"
},
"accountName": {
"type": "string"
},
"mask": {
"type": "string"
},
"institution": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"institutionLogo": {
"type": "string",
"description": "Base64 encoded institution logo"
}
},
"required": [
"id",
"accountName",
"institution"
],
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/PublicReimbursementSource",
"sourcePath": "entity/ExpenseReport/PublicReimbursementSource.yaml",
"title": "PublicReimbursementSource",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"title": "PublicReimbursementSource"
},
"slashfi.models.entity.ExpenseReport.PublicTransactionSummary.yaml": {
"type": "object",
"description": "A minimal transaction summary for public API responses",
"properties": {
"id": {
"type": "string"
},
"date": {
"type": "string"
},
"amount": {
"$ref": "#/$defs/slashfi.models.entity.IMoneyModel.yaml",
"x-entrypoint": {
"virtualPath": "entity/IMoneyModel",
"sourcePath": "entity/IMoneyModel.yaml",
"title": "IMoneyModel",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"status": {
"type": "string",
"enum": [
"pending",
"pending_approval",
"settled",
"failed",
"refund",
"declined",
"dispute",
"canceled",
"returned",
"reversed",
"scheduled",
"in_review"
]
}
},
"required": [
"id",
"date",
"amount",
"status"
],
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/PublicTransactionSummary",
"sourcePath": "entity/ExpenseReport/PublicTransactionSummary.yaml",
"title": "PublicTransactionSummary",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"title": "PublicTransactionSummary"
},
"slashfi.models.entity.ExpenseReport.PublicUserSummary.yaml": {
"type": "object",
"description": "A minimal user identity for public API responses (id and name only)",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "object",
"required": [
"first",
"last",
"full"
],
"properties": {
"first": {
"type": "string"
},
"last": {
"type": "string"
},
"full": {
"type": "string"
}
}
}
},
"required": [
"id",
"name"
],
"x-entrypoint": {
"virtualPath": "entity/ExpenseReport/PublicUserSummary",
"sourcePath": "entity/ExpenseReport/PublicUserSummary.yaml",
"title": "PublicUserSummary",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"title": "PublicUserSummary"
},
"slashfi.models.entity.IMetadataModel.yaml": {
"type": "object",
"properties": {
"timestamp": {
"format": "date-time",
"type": "string"
}
},
"required": [
"timestamp"
],
"x-entrypoint": {
"virtualPath": "entity/IMetadataModel",
"sourcePath": "entity/IMetadataModel.yaml",
"title": "IMetadataModel",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"title": "IMetadataModel"
},
"slashfi.models.entity.IMoneyModel.yaml": {
"title": "IMoneyModel",
"type": "object",
"properties": {
"amount_cents": {
"type": "number"
},
"currency": {
"type": "string",
"enum": [
"USD"
]
}
},
"required": [
"amount_cents",
"currency"
],
"x-entrypoint": {
"virtualPath": "entity/IMoneyModel",
"sourcePath": "entity/IMoneyModel.yaml",
"title": "IMoneyModel",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"slashfi.models.entity.Merchant.MerchantV2.yaml": {
"title": "MerchantV2",
"type": "object",
"required": [
"$entity",
"id",
"name",
"metadata",
"isLive",
"isInstantCashback"
],
"properties": {
"$entity": {
"type": "string",
"enum": [
"merchant_v2"
]
},
"id": {
"type": "string"
},
"heronId": {
"type": "string"
},
"name": {
"type": "string"
},
"iconUrl": {
"type": "string"
},
"logoUrl": {
"type": "string"
},
"url": {
"type": "string"
},
"isLive": {
"type": "boolean"
},
"isInstantCashback": {
"type": "boolean"
},
"merchantCategoryId": {
"type": "string"
},
"metadata": {
"$ref": "#/$defs/slashfi.models.entity.IMetadataModel.yaml",
"x-entrypoint": {
"virtualPath": "entity/IMetadataModel",
"sourcePath": "entity/IMetadataModel.yaml",
"title": "IMetadataModel",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
}
},
"x-entrypoint": {
"virtualPath": "entity/Merchant/MerchantV2",
"sourcePath": "entity/Merchant/MerchantV2.yaml",
"title": "MerchantV2",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
}
},
"slashfi.models.enums.Document.DocumentSource.yaml": {
"type": "string",
"enum": [
"uploaded",
"generated"
],
"x-entrypoint": {
"virtualPath": "enums/Document/DocumentSource",
"sourcePath": "enums/Document/DocumentSource.yaml",
"title": "DocumentSource",
"origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
"globalImport": true
},
"title": "DocumentSource"
},
"slashfi.models.enums.Document.DocumentType.yaml": {
"type": "string",
"enum": [
"business_entity",
"user_identity",
"admin",
"affiliate_tax_document",
"transaction_monitoring_incident",
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/slash/refs/heads/main/json-schema/slash-slashfi-models-entity-expense-report-public-expense-report-with-metadata-yaml-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/slash-slashfi-models-entity-expense-report-public-expense-report-with-metadata-yaml"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.