{
  "components": {
    "schemas": {
      "AccountingCodingSelection": {
        "properties": {
          "accounting_field_id": {
            "description": "The ID of the custom accounting field. This is the ramp_id returned from the custom field endpoints.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_fields",
              "type": "one-to-one"
            }
          },
          "accounting_field_option_id": {
            "description": "The accounting field option ID returned by the custom field options endpoints. When posting accounting codings, set this to null without free_form_text to clear the field. Existing accounting permissions and policy validation apply.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "custom_field_options",
              "type": "one-to-one"
            }
          },
          "free_form_text": {
            "type": "string"
          }
        },
        "required": [
          "accounting_field_id"
        ],
        "type": "object"
      },
      "AccountingCodingSelectionRequestBody": {
        "properties": {
          "accounting_field_id": {
            "description": "The ID of the custom accounting field. This is the ramp_id returned from the custom field endpoints.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_fields",
              "type": "one-to-one"
            }
          },
          "accounting_field_option_id": {
            "description": "The accounting field option ID returned by the custom field options endpoints. When posting accounting codings, set this to null without free_form_text to clear the field. Existing accounting permissions and policy validation apply.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "custom_field_options",
              "type": "one-to-one"
            }
          },
          "free_form_text": {
            "type": "string"
          }
        },
        "required": [
          "accounting_field_id"
        ],
        "type": "object"
      },
      "AccountingProvider": {
        "example": {
          "connection_type": "API",
          "created_at": "2021-01-01T00:00:00Z",
          "id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
          "is_active": true,
          "is_ready_to_migrate": false,
          "last_linked_at": "2021-01-01T00:00:00Z",
          "remote_provider_name": "Example ERP",
          "settings": {
            "entity_selection_enabled": false,
            "transaction_accounting_vendor_creation_on_sync_enabled": false,
            "transaction_sync_button_enabled": false,
            "vendor_credits_enabled": false
          },
          "status": "LINKED"
        },
        "properties": {
          "connection_type": {
            "description": "The type of the accounting connection.",
            "enum": [
              "API",
              "CSV",
              "DIRECT"
            ],
            "readOnly": true,
            "type": "string"
          },
          "created_at": {
            "description": "The date and time the accounting connection was created.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_active": {
            "description": "Whether the accounting connection is active.",
            "readOnly": true,
            "type": "boolean"
          },
          "is_ready_to_migrate": {
            "description": "Whether an Accounting Connection is marked as ready to migrate. For use by the ERP migration flow. Only one Accounting Connection will be marked as ready to migrate per business at a given time. Once a customer begins an ERP migration, a ready to migrate Accounting Connection will no longer be considered ready to migrate.",
            "readOnly": true,
            "type": "boolean"
          },
          "last_linked_at": {
            "description": "The date and time the accounting connection was last connected.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "remote_provider_name": {
            "description": "The name of the accounting connection.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "settings": {
            "$ref": "#/components/schemas/ApiAccountingProviderDeveloperApiConnectionSettings",
            "description": "The connection settings for this accounting connection. Only applies to API-based accounting connections. This field will be empty for non-API based accounting connections.",
            "nullable": true,
            "readOnly": true
          },
          "status": {
            "deprecated": true,
            "description": "The current status of the accounting connection.",
            "enum": [
              "failed_to_auth",
              "linked",
              "revoked",
              "unlinked"
            ],
            "type": "string"
          }
        },
        "required": [
          "connection_type",
          "created_at",
          "id",
          "is_active",
          "is_ready_to_migrate",
          "last_linked_at",
          "remote_provider_name",
          "settings",
          "status"
        ],
        "type": "object",
        "x-resource-name": "accounting_connections"
      },
      "AccountingVendor": {
        "example": {
          "code": "19566",
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "id": "V-5500-0135",
          "name": "Slack Technologies, LLC"
        },
        "properties": {
          "code": {
            "default": null,
            "description": "Code of the vendor.",
            "nullable": true,
            "type": "string"
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities created through POST /developer/v1/accounting/entities that this vendor should be available for. Omit this field to make the vendor available for all connected entities on accounting connections with entity selection enabled.",
            "items": {
              "minLength": 1,
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "id": {
            "description": "Remote/external ID of accounting vendor in ERP system.",
            "type": "string"
          },
          "name": {
            "description": "name of the vendor",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "Action": {
        "properties": {
          "action_kwargs": {
            "items": {
              "$ref": "#/components/schemas/ActionKwarg"
            },
            "type": "array"
          },
          "available_operands": {
            "items": {
              "$ref": "#/components/schemas/AvailableOperand"
            },
            "readOnly": true,
            "type": "array"
          },
          "has_been_visited": {
            "readOnly": true,
            "type": "boolean"
          },
          "identifier": {
            "type": "string"
          },
          "metadata": {},
          "uuid": {
            "format": "uuid",
            "type": "string"
          },
          "vertex_type": {
            "enum": [
              "ACTION"
            ],
            "type": "string"
          }
        },
        "required": [
          "action_kwargs",
          "identifier",
          "uuid",
          "vertex_type"
        ],
        "type": "object"
      },
      "ActionAllowedSchema": {
        "properties": {
          "status": {
            "enum": [
              "allowed"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "status"
        ],
        "title": "ActionAllowedSchema",
        "type": "object"
      },
      "ActionDeniedSchema_AgreementActionDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/AgreementActionDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[AgreementActionDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_AgreementCreationPostApprovalDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/AgreementCreationPostApprovalDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[AgreementCreationPostApprovalDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_ArchiveDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/ArchiveDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[ArchiveDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_ChangePaymentMethodDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/ChangePaymentMethodDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[ChangePaymentMethodDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_ChangeVendorDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/ChangeVendorDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[ChangeVendorDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_DeleteRenewalDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/DeleteRenewalDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[DeleteRenewalDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_EditAccountingMerchantDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/EditAccountingMerchantDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[EditAccountingMerchantDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_EditAgreementDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/EditAgreementDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[EditAgreementDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_EditLineItemsDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/EditLineItemsDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[EditLineItemsDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_EditPrimaryFieldsDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/EditPrimaryFieldsDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[EditPrimaryFieldsDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_EditRequestCoordinatorDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/EditRequestCoordinatorDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[EditRequestCoordinatorDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_EditRequestOwnerDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/EditRequestOwnerDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[EditRequestOwnerDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_EditSecondaryFieldsDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/EditSecondaryFieldsDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[EditSecondaryFieldsDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_IssuePurchaseOrderFundDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/IssuePurchaseOrderFundDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[IssuePurchaseOrderFundDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_MatchUnmatchTransactionsDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/MatchUnmatchTransactionsDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[MatchUnmatchTransactionsDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_RequestAgainDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/RequestAgainDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[RequestAgainDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_RequestChangesDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/RequestChangesDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[RequestChangesDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_RequestExpansionDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/RequestExpansionDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[RequestExpansionDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_RequestRenewalDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/RequestRenewalDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[RequestRenewalDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_SendPdfToVendorDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/SendPdfToVendorDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[SendPdfToVendorDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_SetRenewalStatusDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/SetRenewalStatusDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[SetRenewalStatusDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_UploadBillDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/UploadBillDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[UploadBillDenialReason]",
        "type": "object"
      },
      "ActionDeniedSchema_ViewAgreementDenialReason_": {
        "properties": {
          "denial_reason": {
            "$ref": "#/components/schemas/ViewAgreementDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "denial_reason",
          "status"
        ],
        "title": "ActionDeniedSchema[ViewAgreementDenialReason]",
        "type": "object"
      },
      "ActionDetailSchema_AgreementActionDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_AgreementActionDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_AgreementActionDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_AgreementCreationPostApprovalDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_AgreementCreationPostApprovalDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_AgreementCreationPostApprovalDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_ArchiveDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_ArchiveDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_ArchiveDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_ChangePaymentMethodDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_ChangePaymentMethodDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_ChangePaymentMethodDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_ChangeVendorDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_ChangeVendorDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_ChangeVendorDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_DeleteRenewalDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_DeleteRenewalDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_DeleteRenewalDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_EditAccountingMerchantDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_EditAccountingMerchantDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_EditAccountingMerchantDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_EditAgreementDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_EditAgreementDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_EditAgreementDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_EditLineItemsDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_EditLineItemsDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_EditLineItemsDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_EditPrimaryFieldsDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_EditPrimaryFieldsDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_EditPrimaryFieldsDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_EditRequestCoordinatorDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_EditRequestCoordinatorDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_EditRequestCoordinatorDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_EditRequestOwnerDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_EditRequestOwnerDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_EditRequestOwnerDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_EditSecondaryFieldsDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_EditSecondaryFieldsDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_EditSecondaryFieldsDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_IssuePurchaseOrderFundDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_IssuePurchaseOrderFundDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_IssuePurchaseOrderFundDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_MatchUnmatchTransactionsDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_MatchUnmatchTransactionsDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_MatchUnmatchTransactionsDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_RequestAgainDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_RequestAgainDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_RequestAgainDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_RequestChangesDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_RequestChangesDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_RequestChangesDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_RequestExpansionDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_RequestExpansionDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_RequestExpansionDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_RequestRenewalDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_RequestRenewalDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_RequestRenewalDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_SendPdfToVendorDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_SendPdfToVendorDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_SendPdfToVendorDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_SetRenewalStatusDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_SetRenewalStatusDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_SetRenewalStatusDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_UploadBillDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_UploadBillDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_UploadBillDenialReason_"
          }
        ]
      },
      "ActionDetailSchema_ViewAgreementDenialReason_": {
        "discriminator": {
          "mapping": {
            "allowed": "#/components/schemas/ActionAllowedSchema",
            "denied": "#/components/schemas/ActionDeniedSchema_ViewAgreementDenialReason_"
          },
          "propertyName": "status"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionAllowedSchema"
          },
          {
            "$ref": "#/components/schemas/ActionDeniedSchema_ViewAgreementDenialReason_"
          }
        ]
      },
      "ActionKwarg": {
        "discriminator": {
          "mapping": {
            "KEY_STATE_REFERENCE_TYPE": "#/components/schemas/KeyStateReference",
            "OBJECT": "#/components/schemas/ActionKwargObject",
            "OBJECT_LIST": "#/components/schemas/ActionKwargObjectList",
            "TYPED_KEY_VALUE_PAIR": "#/components/schemas/ActionKwargTypedKeyValuePair"
          },
          "propertyName": "action_kwarg_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActionKwargObject"
          },
          {
            "$ref": "#/components/schemas/ActionKwargObjectList"
          },
          {
            "$ref": "#/components/schemas/ActionKwargTypedKeyValuePair"
          },
          {
            "$ref": "#/components/schemas/KeyStateReference"
          }
        ]
      },
      "ActionKwargObject": {
        "properties": {
          "action_kwarg_type": {
            "enum": [
              "OBJECT"
            ],
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/SingleObject",
            "nullable": true
          },
          "object_type": {
            "type": "string"
          }
        },
        "required": [
          "action_kwarg_type",
          "key",
          "object",
          "object_type"
        ],
        "type": "object"
      },
      "ActionKwargObjectList": {
        "properties": {
          "action_kwarg_type": {
            "enum": [
              "OBJECT_LIST"
            ],
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "object_type": {
            "type": "string"
          },
          "objects": {
            "items": {
              "$ref": "#/components/schemas/SingleObject",
              "nullable": true
            },
            "type": "array"
          }
        },
        "required": [
          "action_kwarg_type",
          "key",
          "object_type",
          "objects"
        ],
        "type": "object"
      },
      "ActionKwargTypedKeyValuePair": {
        "properties": {
          "action_kwarg_type": {
            "enum": [
              "TYPED_KEY_VALUE_PAIR"
            ],
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/TypedValue"
          }
        },
        "required": [
          "action_kwarg_type",
          "key",
          "value"
        ],
        "type": "object"
      },
      "ActiveActionUpdateRequestBody": {
        "properties": {
          "type": {
            "description": "Sets the agreement back to active.",
            "enum": [
              "NOT_STARTED"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "title": "ActiveActionUpdate",
        "type": "object"
      },
      "ActorDetailsResource": {
        "discriminator": {
          "mapping": {
            "policy_agent": "#/components/schemas/AuditLogPolicyAgentDetailsResource",
            "ramp": "#/components/schemas/AuditLogRampActorDetailsResource",
            "spend_request_agent": "#/components/schemas/AuditLogSpendRequestAgentDetailsResource",
            "unknown": "#/components/schemas/EmptyObject",
            "user": "#/components/schemas/AuditLogUserDetailsResource"
          },
          "propertyName": "actor_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/AuditLogPolicyAgentDetailsResource"
          },
          {
            "$ref": "#/components/schemas/AuditLogRampActorDetailsResource"
          },
          {
            "$ref": "#/components/schemas/AuditLogSpendRequestAgentDetailsResource"
          },
          {
            "$ref": "#/components/schemas/AuditLogUserDetailsResource"
          },
          {
            "$ref": "#/components/schemas/EmptyObject"
          }
        ]
      },
      "AddToApprovalInstanceResourceRequestBody": {
        "description": "An approval step to add to an existing approval chain.",
        "example": {
          "approver_groups": [
            {
              "type": "USER",
              "users": [
                {
                  "id": "123e4567-e89b-12d3-a456-426614174000"
                }
              ]
            }
          ],
          "reason": "Reason for adding approvers",
          "step_order": 2,
          "step_type": "REQUIRE_ALL"
        },
        "properties": {
          "approver_groups": {
            "description": "Approver groups included in the step.",
            "items": {
              "$ref": "#/components/schemas/ApproverGroupRequestBody"
            },
            "minItems": 1,
            "type": "array"
          },
          "reason": {
            "description": "Reason for adding the approval step.",
            "type": "string"
          },
          "step_order": {
            "description": "Position of the step in the approval chain.",
            "minimum": 1,
            "type": "integer"
          },
          "step_type": {
            "description": "Approval behavior for the step.",
            "enum": [
              "REQUIRE_ALL",
              "REQUIRE_ANY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "REQUIRE_ALL": "All approvers must approve the step.",
              "REQUIRE_ANY": "Any one approver can approve the step."
            }
          }
        },
        "required": [
          "approver_groups",
          "reason",
          "step_type"
        ],
        "type": "object"
      },
      "AddressValueSchema": {
        "properties": {
          "address1": {
            "description": "Street address line 1",
            "title": "Address1",
            "type": "string"
          },
          "address2": {
            "default": null,
            "description": "Street address line 2, e.g. apt number",
            "nullable": true,
            "title": "Address2",
            "type": "string"
          },
          "city": {
            "description": "City name",
            "title": "City",
            "type": "string"
          },
          "country": {
            "description": "Country code",
            "title": "Country",
            "type": "string"
          },
          "postal_code": {
            "default": null,
            "description": "Postal/ZIP code",
            "nullable": true,
            "title": "Postal Code",
            "type": "string"
          },
          "state": {
            "default": null,
            "description": "State or province name",
            "nullable": true,
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "address1",
          "city",
          "country"
        ],
        "title": "AddressValueSchema",
        "type": "object"
      },
      "AgentExecutionsInfo": {
        "properties": {
          "agents": {
            "items": {
              "$ref": "#/components/schemas/AgentInWorkflow"
            },
            "title": "Agents",
            "type": "array"
          },
          "completed_agent_executions": {
            "items": {
              "$ref": "#/components/schemas/CompletedAgentExecution"
            },
            "title": "Completed Agent Executions",
            "type": "array"
          }
        },
        "required": [
          "completed_agent_executions"
        ],
        "title": "AgentExecutionsInfo",
        "type": "object"
      },
      "AgentInWorkflow": {
        "properties": {
          "agent_execution_id": {
            "nullable": true,
            "title": "Agent Execution Id",
            "type": "string"
          },
          "agent_id": {
            "title": "Agent Id",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/AgentWorkflowStatus"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "agent_execution_id",
          "agent_id",
          "status",
          "title"
        ],
        "title": "AgentInWorkflow",
        "type": "object"
      },
      "AgentWorkflowStatus": {
        "enum": [
          "Failed",
          "In Progress",
          "Skipped",
          "Unvisited",
          "Visited"
        ],
        "title": "AgentWorkflowStatus",
        "type": "string"
      },
      "AgreementActionDenialReason": {
        "enum": [
          "NO_PERMISSION"
        ],
        "title": "AgreementActionDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "NO_PERMISSION": "The user does not have permission to take actions on the agreement."
        }
      },
      "AgreementCreationPostApprovalDenialReason": {
        "title": "AgreementCreationPostApprovalDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "already_linked": "The spend request is already linked to an agreement.",
          "archived": "The purchase order has been archived.",
          "is_change_request": "The spend request is a change request.",
          "is_expansion_request": "The spend request is an expansion request.",
          "no_payee": "The spend request does not have a vendor.",
          "punchout_order": "Agreements are not supported for punchout purchase orders."
        },
        "x-extensible-enum": [
          "already_linked",
          "archived",
          "is_change_request",
          "is_expansion_request",
          "no_payee",
          "punchout_order"
        ]
      },
      "AiSpendApiKey": {
        "description": "A provider API key tracked for AI spend. Estimated cost applies to the requested period. All other fields reflect current metadata, not state as of the requested dates.",
        "example": {
          "active_spend_limit": {
            "amount": {
              "currency": "USD",
              "value": 500000
            },
            "interval": "monthly"
          },
          "estimated_cost": {
            "currency": "USD",
            "value": 184250
          },
          "external_id": "key_abc123",
          "id": "0198f3c4-ece8-7a41-968f-7f399e397ef6",
          "name": "Production coding",
          "owner": {
            "email": "jamie.chen@example.com",
            "first_name": "Jamie",
            "id": "0198f3bd-bcb7-76a0-a68c-f99fd15df941",
            "last_name": "Chen"
          },
          "provider": "OPENAI",
          "provider_created_at": "2026-03-12T15:30:00Z",
          "provider_key_hint": "...a1b2",
          "provider_last_used_at": "2026-08-31T23:54:12Z",
          "status": "active",
          "synced_at": "2026-09-01T01:10:04Z",
          "tags": [
            {
              "key": "Cost center",
              "value": "Engineering"
            }
          ]
        },
        "properties": {
          "active_spend_limit": {
            "$ref": "#/components/schemas/AiSpendApiKeySpendLimitResource",
            "description": "Currently active configured spend limit. Its amount and reset cadence are independent of the requested historical dates. Null when the API key has no active spend limit.",
            "nullable": true
          },
          "estimated_cost": {
            "$ref": "#/components/schemas/ApiAmount",
            "description": "Cost estimated by Ramp for usage attributed to the API key during the requested period. Zero when no usage was attributed.",
            "readOnly": true
          },
          "external_id": {
            "description": "API key identifier assigned by the provider.",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the API key.",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "API key name reported by the provider.",
            "nullable": true,
            "type": "string"
          },
          "owner": {
            "$ref": "#/components/schemas/AiSpendApiKeyOwnerResource",
            "description": "Owner identified by Ramp or the provider.",
            "nullable": true,
            "readOnly": true
          },
          "provider": {
            "description": "Provider that issued the API key.",
            "enum": [
              "ANTHROPIC",
              "OPENAI",
              "RAMP"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "ANTHROPIC": "Anthropic",
              "OPENAI": "OpenAI",
              "RAMP": "Ramp Router"
            }
          },
          "provider_created_at": {
            "description": "Date and time the provider created the API key.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "provider_key_hint": {
            "description": "Redacted API key hint reported by the provider.",
            "nullable": true,
            "type": "string"
          },
          "provider_last_used_at": {
            "description": "Date and time the provider last recorded usage.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "status": {
            "description": "Current API key status, when available from the provider.",
            "enum": [
              "active",
              "expired",
              "locked",
              "terminated"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "active": "The API key is active.",
              "expired": "The API key has expired.",
              "locked": "The API key is locked.",
              "terminated": "The API key was terminated or archived."
            }
          },
          "synced_at": {
            "description": "Date and time Ramp last synchronized the API key.",
            "format": "date-time",
            "type": "string"
          },
          "tags": {
            "description": "Active tags assigned to the API key.",
            "items": {
              "$ref": "#/components/schemas/AiSpendApiKeyTagResource"
            },
            "type": "array"
          }
        },
        "required": [
          "active_spend_limit",
          "estimated_cost",
          "external_id",
          "id",
          "name",
          "owner",
          "provider",
          "provider_created_at",
          "provider_key_hint",
          "provider_last_used_at",
          "status",
          "synced_at",
          "tags"
        ],
        "type": "object"
      },
      "AiSpendApiKeyOwnerResource": {
        "properties": {
          "email": {
            "description": "Owner email reported by Ramp or the provider.",
            "format": "email",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "first_name": {
            "description": "First name of the matched Ramp user.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the matched Ramp user.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "last_name": {
            "description": "Last name of the matched Ramp user.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email",
          "first_name",
          "id",
          "last_name"
        ],
        "type": "object"
      },
      "AiSpendApiKeySpendLimitResource": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/ApiAmount",
            "description": "Maximum spend allowed per reset interval.",
            "readOnly": true
          },
          "interval": {
            "description": "How often the spend limit resets.",
            "enum": [
              "annual",
              "daily",
              "monthly",
              "quarterly",
              "tertiary",
              "total",
              "weekly",
              "yearly"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "annual": "The spend limit resets annually based on its start date.",
              "daily": "The spend limit resets daily.",
              "monthly": "The spend limit resets monthly.",
              "quarterly": "The spend limit resets every three months.",
              "tertiary": "The spend limit resets every four months.",
              "total": "The spend limit does not reset.",
              "weekly": "The spend limit resets weekly.",
              "yearly": "The spend limit resets at the start of the calendar year."
            }
          }
        },
        "required": [
          "amount",
          "interval"
        ],
        "type": "object"
      },
      "AiSpendApiKeyTagResource": {
        "properties": {
          "key": {
            "description": "Tag name.",
            "type": "string"
          },
          "value": {
            "description": "Assigned tag value.",
            "type": "string"
          }
        },
        "required": [
          "key",
          "value"
        ],
        "type": "object"
      },
      "AiSpendSettings": {
        "properties": {
          "router_tag_keys": {
            "description": "Router request-tag keys to break down spend by, in addition to the defaults (user, product).",
            "items": {
              "type": "string"
            },
            "title": "Router Tag Keys",
            "type": "array"
          }
        },
        "required": [
          "router_tag_keys"
        ],
        "title": "AiSpendSettings",
        "type": "object"
      },
      "AiSpendSettingsUpdateInputRequestBody": {
        "additionalProperties": false,
        "properties": {
          "router_tag_keys": {
            "description": "Router request-tag keys to break down spend by, in addition to the defaults (user, product).",
            "items": {
              "maxLength": 64,
              "minLength": 1,
              "pattern": "^[^:\\s]+$",
              "type": "string"
            },
            "maxItems": 20,
            "title": "Router Tag Keys",
            "type": "array"
          }
        },
        "required": [
          "router_tag_keys"
        ],
        "title": "AiSpendSettingsUpdateInput",
        "type": "object"
      },
      "AiSpendTaggingConfig": {
        "additionalProperties": false,
        "properties": {
          "exclusions": {
            "description": "API keys or users whose requests are not tagged. Each subject may appear once.",
            "items": {
              "$ref": "#/components/schemas/AiSpendTaggingExclusion"
            },
            "maxItems": 1000,
            "title": "Exclusions",
            "type": "array"
          },
          "taxonomies": {
            "description": "Taxonomies to classify AI requests by. tag_key values must be unique.",
            "items": {
              "$ref": "#/components/schemas/AiSpendTaxonomy"
            },
            "maxItems": 5,
            "title": "Taxonomies",
            "type": "array"
          }
        },
        "title": "AiSpendTaggingConfig",
        "type": "object"
      },
      "AiSpendTaggingConfigRequestBody": {
        "additionalProperties": false,
        "properties": {
          "exclusions": {
            "description": "API keys or users whose requests are not tagged. Each subject may appear once.",
            "items": {
              "$ref": "#/components/schemas/AiSpendTaggingExclusionRequestBody"
            },
            "maxItems": 1000,
            "title": "Exclusions",
            "type": "array"
          },
          "taxonomies": {
            "description": "Taxonomies to classify AI requests by. tag_key values must be unique.",
            "items": {
              "$ref": "#/components/schemas/AiSpendTaxonomyRequestBody"
            },
            "maxItems": 5,
            "title": "Taxonomies",
            "type": "array"
          }
        },
        "title": "AiSpendTaggingConfig",
        "type": "object"
      },
      "AiSpendTaggingExclusion": {
        "additionalProperties": false,
        "properties": {
          "subject_id": {
            "description": "For api_key, the external_id of a RAMP API key. For user, the Ramp Router user ID.",
            "maxLength": 128,
            "minLength": 1,
            "title": "Subject Id",
            "type": "string"
          },
          "subject_type": {
            "$ref": "#/components/schemas/AiSpendTaggingExclusionSubjectType",
            "description": "Kind of subject to exclude from tagging."
          },
          "tag_keys": {
            "description": "Taxonomies the subject is excluded from. Empty excludes it from every taxonomy.",
            "items": {
              "type": "string"
            },
            "title": "Tag Keys",
            "type": "array"
          }
        },
        "required": [
          "subject_id",
          "subject_type"
        ],
        "title": "AiSpendTaggingExclusion",
        "type": "object"
      },
      "AiSpendTaggingExclusionRequestBody": {
        "additionalProperties": false,
        "properties": {
          "subject_id": {
            "description": "For api_key, the external_id of a RAMP API key. For user, the Ramp Router user ID.",
            "maxLength": 128,
            "minLength": 1,
            "title": "Subject Id",
            "type": "string"
          },
          "subject_type": {
            "$ref": "#/components/schemas/AiSpendTaggingExclusionSubjectTypeRequestBody",
            "description": "Kind of subject to exclude from tagging."
          },
          "tag_keys": {
            "description": "Taxonomies the subject is excluded from. Empty excludes it from every taxonomy.",
            "items": {
              "type": "string"
            },
            "title": "Tag Keys",
            "type": "array"
          }
        },
        "required": [
          "subject_id",
          "subject_type"
        ],
        "title": "AiSpendTaggingExclusion",
        "type": "object"
      },
      "AiSpendTaggingExclusionSubjectType": {
        "enum": [
          "api_key",
          "user"
        ],
        "title": "AiSpendTaggingExclusionSubjectType",
        "type": "string",
        "x-enum-descriptions": {
          "api_key": "A Ramp Router API key.",
          "user": "A Ramp Router user."
        }
      },
      "AiSpendTaggingExclusionSubjectTypeRequestBody": {
        "enum": [
          "api_key",
          "user"
        ],
        "title": "AiSpendTaggingExclusionSubjectType",
        "type": "string",
        "x-enum-descriptions": {
          "api_key": "A Ramp Router API key.",
          "user": "A Ramp Router user."
        }
      },
      "AiSpendTaggingSettings": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/AiSpendTaggingConfig",
            "description": "Current tagging configuration."
          },
          "version": {
            "description": "Increases by 1 each time the settings change; 0 means never saved. Send it as expected_version when updating.",
            "title": "Version",
            "type": "integer"
          }
        },
        "required": [
          "config",
          "version"
        ],
        "title": "AiSpendTaggingSettings",
        "type": "object"
      },
      "AiSpendTaggingSettingsUpdateInputRequestBody": {
        "additionalProperties": false,
        "properties": {
          "config": {
            "$ref": "#/components/schemas/AiSpendTaggingConfigRequestBody",
            "description": "The complete tagging configuration. It replaces the current one."
          },
          "expected_version": {
            "description": "The version from your last read. Use 0 for the first save.",
            "minimum": 0,
            "title": "Expected Version",
            "type": "integer"
          }
        },
        "required": [
          "config",
          "expected_version"
        ],
        "title": "AiSpendTaggingSettingsUpdateInput",
        "type": "object"
      },
      "AiSpendTaxonomy": {
        "additionalProperties": false,
        "properties": {
          "allow_unclassified": {
            "default": true,
            "description": "Whether a request can be tagged unclassified when no label fits.",
            "title": "Allow Unclassified",
            "type": "boolean"
          },
          "description": {
            "description": "What this taxonomy classifies. The characters < and > are removed.",
            "maxLength": 500,
            "minLength": 1,
            "title": "Description",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "description": "Whether this taxonomy is applied to requests.",
            "title": "Enabled",
            "type": "boolean"
          },
          "labels": {
            "description": "Labels a request can receive. Label names must be unique, and unclassified is reserved.",
            "items": {
              "$ref": "#/components/schemas/AiSpendTaxonomyLabel"
            },
            "maxItems": 50,
            "minItems": 2,
            "title": "Labels",
            "type": "array"
          },
          "tag_key": {
            "description": "Taxonomy identifier, such as team or project. 1-64 characters: lowercase letters, digits, underscores, periods, or hyphens, starting with a letter or digit.",
            "pattern": "^[a-z0-9][a-z0-9_.-]{0,63}$",
            "title": "Tag Key",
            "type": "string"
          }
        },
        "required": [
          "description",
          "labels",
          "tag_key"
        ],
        "title": "AiSpendTaxonomy",
        "type": "object"
      },
      "AiSpendTaxonomyLabel": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "description": "When to choose this label. The characters < and > are removed.",
            "maxLength": 300,
            "minLength": 1,
            "title": "Description",
            "type": "string"
          },
          "label": {
            "description": "Label name. 1-64 characters: lowercase letters, digits, underscores, periods, or hyphens, starting with a letter or digit.",
            "pattern": "^[a-z0-9][a-z0-9_.-]{0,63}$",
            "title": "Label",
            "type": "string"
          }
        },
        "required": [
          "description",
          "label"
        ],
        "title": "AiSpendTaxonomyLabel",
        "type": "object"
      },
      "AiSpendTaxonomyLabelRequestBody": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "description": "When to choose this label. The characters < and > are removed.",
            "maxLength": 300,
            "minLength": 1,
            "title": "Description",
            "type": "string"
          },
          "label": {
            "description": "Label name. 1-64 characters: lowercase letters, digits, underscores, periods, or hyphens, starting with a letter or digit.",
            "pattern": "^[a-z0-9][a-z0-9_.-]{0,63}$",
            "title": "Label",
            "type": "string"
          }
        },
        "required": [
          "description",
          "label"
        ],
        "title": "AiSpendTaxonomyLabel",
        "type": "object"
      },
      "AiSpendTaxonomyRequestBody": {
        "additionalProperties": false,
        "properties": {
          "allow_unclassified": {
            "default": true,
            "description": "Whether a request can be tagged unclassified when no label fits.",
            "title": "Allow Unclassified",
            "type": "boolean"
          },
          "description": {
            "description": "What this taxonomy classifies. The characters < and > are removed.",
            "maxLength": 500,
            "minLength": 1,
            "title": "Description",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "description": "Whether this taxonomy is applied to requests.",
            "title": "Enabled",
            "type": "boolean"
          },
          "labels": {
            "description": "Labels a request can receive. Label names must be unique, and unclassified is reserved.",
            "items": {
              "$ref": "#/components/schemas/AiSpendTaxonomyLabelRequestBody"
            },
            "maxItems": 50,
            "minItems": 2,
            "title": "Labels",
            "type": "array"
          },
          "tag_key": {
            "description": "Taxonomy identifier, such as team or project. 1-64 characters: lowercase letters, digits, underscores, periods, or hyphens, starting with a letter or digit.",
            "pattern": "^[a-z0-9][a-z0-9_.-]{0,63}$",
            "title": "Tag Key",
            "type": "string"
          }
        },
        "required": [
          "description",
          "labels",
          "tag_key"
        ],
        "title": "AiSpendTaxonomy",
        "type": "object"
      },
      "AiSpendTeam": {
        "properties": {
          "department_name": {
            "description": "Current Ramp department name, when available.",
            "nullable": true,
            "type": "string"
          },
          "email": {
            "description": "Ramp user email.",
            "format": "email",
            "type": "string"
          },
          "estimated_cost": {
            "$ref": "#/components/schemas/ApiAmount",
            "description": "Usage-derived estimated cost for the requested period.",
            "readOnly": true
          },
          "estimated_cost_by_provider": {
            "description": "Estimated cost split by AI provider.",
            "items": {
              "$ref": "#/components/schemas/AiSpendTeamProviderCost"
            },
            "type": "array"
          },
          "first_name": {
            "description": "Ramp user first name.",
            "type": "string"
          },
          "id": {
            "description": "Unique Ramp user identifier.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "is_anomalous": {
            "description": "Whether Ramp detected anomalous AI spend for the user during the requested period.",
            "type": "boolean"
          },
          "is_ramp_user": {
            "description": "Whether the person is a Ramp user. Always true for records returned by this endpoint.",
            "type": "boolean"
          },
          "last_name": {
            "description": "Ramp user last name.",
            "type": "string"
          },
          "user_status": {
            "description": "Current Ramp user lifecycle status.",
            "enum": [
              "active",
              "deleted",
              "draft",
              "inactive",
              "pending"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "active": "Active Ramp user",
              "deleted": "Deleted Ramp user",
              "draft": "Draft Ramp user",
              "inactive": "Inactive Ramp user",
              "pending": "Pending Ramp user"
            }
          }
        },
        "required": [
          "department_name",
          "email",
          "estimated_cost",
          "estimated_cost_by_provider",
          "first_name",
          "id",
          "is_anomalous",
          "is_ramp_user",
          "last_name",
          "user_status"
        ],
        "type": "object"
      },
      "AiSpendTeamListResponse": {
        "properties": {
          "data": {
            "description": "Ramp users and their AI spend.",
            "items": {
              "$ref": "#/components/schemas/AiSpendTeam"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "AiSpendTeamProviderCost": {
        "properties": {
          "estimated_cost": {
            "$ref": "#/components/schemas/ApiAmount",
            "description": "Usage-derived estimated cost for this provider.",
            "readOnly": true
          },
          "provider": {
            "description": "AI provider attributed to this estimated cost.",
            "enum": [
              "ANTHROPIC",
              "CURSOR",
              "FIREWORKS",
              "OPENAI",
              "RAMP"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "ANTHROPIC": "Anthropic",
              "CURSOR": "Cursor",
              "FIREWORKS": "Fireworks AI",
              "OPENAI": "OpenAI",
              "RAMP": "Ramp Router"
            }
          }
        },
        "required": [
          "estimated_cost",
          "provider"
        ],
        "type": "object"
      },
      "AiSpendUsage": {
        "example": {
          "cached_input_tokens": 20,
          "department_id": null,
          "estimated_cost": {
            "currency": "USD",
            "value": 124
          },
          "input_tokens": 150,
          "model": "claude-sonnet-4",
          "output_tokens": 30,
          "product": "claude_code",
          "provider": "ANTHROPIC",
          "usage_date": "2026-05-01",
          "user_email": null,
          "user_id": null,
          "web_search_requests": 3
        },
        "properties": {
          "cached_input_tokens": {
            "description": "Number of cached input tokens.",
            "type": "integer"
          },
          "department_id": {
            "description": "Department of the Ramp user. Null unless group_by includes department, or when the user has no department.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "departments",
              "type": "many-to-one"
            }
          },
          "estimated_cost": {
            "$ref": "#/components/schemas/ApiAmount",
            "description": "Estimated cost, matching the AI Spend page. Null for AWS Bedrock, which Ramp reports as billed cost rather than an estimate. When rows combine AWS Bedrock with other providers, the estimate excludes AWS Bedrock.",
            "nullable": true,
            "readOnly": true
          },
          "input_tokens": {
            "description": "Number of input tokens.",
            "type": "integer"
          },
          "model": {
            "description": "Provider model name. Null unless group_by includes model, or when the provider did not report one.",
            "nullable": true,
            "type": "string"
          },
          "output_tokens": {
            "description": "Number of output tokens.",
            "type": "integer"
          },
          "product": {
            "description": "Product the usage came from, such as claude_code, codex, or cursor. Null unless group_by includes product, or when no product applies.",
            "nullable": true,
            "type": "string"
          },
          "provider": {
            "description": "AI provider. Null unless group_by includes provider.",
            "enum": [
              "ANTHROPIC",
              "AWS",
              "AZURE",
              "CURSOR",
              "FIREWORKS",
              "GCP",
              "OPENAI",
              "RAMP"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "ANTHROPIC": "Anthropic",
              "AWS": "AWS Bedrock",
              "AZURE": "Azure",
              "CURSOR": "Cursor",
              "FIREWORKS": "Fireworks AI",
              "GCP": "Google Cloud (Gemini)",
              "OPENAI": "OpenAI",
              "RAMP": "Ramp Router"
            }
          },
          "usage_date": {
            "description": "UTC calendar date for this usage row.",
            "format": "date",
            "type": "string"
          },
          "user_email": {
            "description": "Email of the Ramp user, or the email the provider reported when the usage is not attributed to a Ramp user. Null unless group_by includes user.",
            "format": "email",
            "nullable": true,
            "type": "string"
          },
          "user_id": {
            "description": "Ramp user. Null unless group_by includes user, or when the usage is not attributed to a Ramp user.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "web_search_requests": {
            "description": "Number of provider web-search requests.",
            "type": "integer"
          }
        },
        "required": [
          "cached_input_tokens",
          "department_id",
          "estimated_cost",
          "input_tokens",
          "model",
          "output_tokens",
          "product",
          "provider",
          "usage_date",
          "user_email",
          "user_id",
          "web_search_requests"
        ],
        "type": "object"
      },
      "ApiAccountingCategory": {
        "properties": {
          "category_id": {
            "description": "User-selected category id for transaction.",
            "type": "string"
          },
          "category_name": {
            "description": "User-selected category name for transaction.",
            "type": "string"
          },
          "tracking_category_remote_id": {
            "type": "string"
          },
          "tracking_category_remote_name": {
            "type": "string"
          },
          "tracking_category_remote_type": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiAccountingCategoryInfo": {
        "properties": {
          "id": {
            "description": "Remote/external ID of the accounting category from ERP system.",
            "type": "string"
          },
          "name": {
            "description": "Name of the accounting category in the remote ERP system.",
            "type": "string"
          },
          "ramp_id": {
            "description": "id to uniquely identify the accounting category within Ramp system",
            "format": "uuid",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiAccountingCodingCreate": {
        "example": {
          "accounting_coding_selections": [
            {
              "accounting_field_id": "96bb7007-eec5-430f-8d09-e033cbc000c2",
              "accounting_field_option_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
            }
          ],
          "object_id": "7685698c-9d5c-412b-a728-49063c1b298c",
          "object_type": "TRANSACTION"
        },
        "properties": {
          "accounting_coding_selections": {
            "items": {
              "$ref": "#/components/schemas/AccountingCodingSelection"
            },
            "type": "array"
          },
          "object_id": {
            "description": "The ID of the Ramp object to code.",
            "format": "uuid",
            "type": "string"
          },
          "object_type": {
            "description": "The type of Ramp object to code.",
            "enum": [
              "TRANSACTION"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "TRANSACTION": "Code a Ramp card transaction."
            }
          }
        },
        "required": [
          "accounting_coding_selections",
          "object_id",
          "object_type"
        ],
        "type": "object"
      },
      "ApiAccountingCodingCreateRequestBody": {
        "example": {
          "accounting_coding_selections": [
            {
              "accounting_field_id": "96bb7007-eec5-430f-8d09-e033cbc000c2",
              "accounting_field_option_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
            }
          ],
          "object_id": "7685698c-9d5c-412b-a728-49063c1b298c",
          "object_type": "TRANSACTION"
        },
        "properties": {
          "accounting_coding_selections": {
            "items": {
              "$ref": "#/components/schemas/AccountingCodingSelectionRequestBody"
            },
            "type": "array"
          },
          "object_id": {
            "description": "The ID of the Ramp object to code.",
            "format": "uuid",
            "type": "string"
          },
          "object_type": {
            "description": "The type of Ramp object to code.",
            "enum": [
              "TRANSACTION"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "TRANSACTION": "Code a Ramp card transaction."
            }
          }
        },
        "required": [
          "accounting_coding_selections",
          "object_id",
          "object_type"
        ],
        "type": "object"
      },
      "ApiAccountingConnectionIdParamsRequestBody": {
        "properties": {
          "accounting_connection_id": {
            "description": "If this resource belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          }
        },
        "type": "object"
      },
      "ApiAccountingConnectionSettingsCreateParamsRequestBody": {
        "properties": {
          "entity_selection_enabled": {
            "default": false,
            "description": "Whether ERP entity selection is enabled for this accounting connection. Only applies to API-based connections. Defaults to false.",
            "type": "boolean"
          },
          "reimbursement_sync_button_enabled": {
            "default": false,
            "description": "Whether the reimbursement sync button is enabled for this accounting connection. Only applies to API-based connections. Defaults to false.",
            "type": "boolean"
          },
          "transaction_accounting_vendor_creation_on_sync_enabled": {
            "default": false,
            "description": "Whether card transactions missing a mapped accounting vendor should require vendor creation before sync. Only applies to API-based connections. Defaults to false.",
            "type": "boolean"
          },
          "transaction_sync_button_enabled": {
            "default": false,
            "description": "Whether the transaction sync button is enabled for this accounting connection. Only applies to API-based connections. Defaults to false.",
            "type": "boolean"
          },
          "vendor_credits_enabled": {
            "default": false,
            "description": "Whether vendor credits are enabled for this accounting connection. Only applies to API-based connections. Defaults to false.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ApiAccountingConnectionSettingsUpdateParamsRequestBody": {
        "properties": {
          "entity_selection_enabled": {
            "description": "Whether ERP entity selection is enabled for this accounting connection. Only applies to API-based connections.",
            "type": "boolean"
          },
          "reimbursement_sync_button_enabled": {
            "description": "Whether the reimbursement sync button is enabled for this accounting connection. Only applies to API-based connections.",
            "type": "boolean"
          },
          "transaction_accounting_vendor_creation_on_sync_enabled": {
            "description": "Whether card transactions missing a mapped accounting vendor should require vendor creation before sync. Only applies to API-based connections.",
            "type": "boolean"
          },
          "transaction_sync_button_enabled": {
            "description": "Whether the transaction sync button is enabled for this accounting connection. Only applies to API-based connections.",
            "type": "boolean"
          },
          "vendor_credits_enabled": {
            "description": "Whether vendor credits are enabled for this accounting connection. Only applies to API-based connections.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ApiAccountingCustomFieldCreateParamsRequestBody": {
        "example": {
          "accounting_connection_id": null,
          "display_name": "Dept",
          "id": "Department",
          "input_type": "SINGLE_CHOICE",
          "is_splittable": "True",
          "name": "Department"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "Specify an accounting connection. This connection must be an accounting API based connection. If not provided we default to the current active connection.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "display_name": {
            "description": "The name of the custom accounting field as shown on Ramp.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Remote/external ID of custom accounting field from ERP system.",
            "type": "string"
          },
          "input_type": {
            "description": "The input type for the custom accounting field.",
            "enum": [
              "BOOLEAN",
              "FREE_FORM_TEXT",
              "SINGLE_CHOICE"
            ],
            "type": "string"
          },
          "is_required_for": {
            "description": "Types of objects that require this accounting field to be used for coding before they can be marked as ready to sync.",
            "items": {
              "enum": [
                "BILL",
                "BILL_PAYMENT",
                "CUSTOMER",
                "INVOICE",
                "PURCHASE_ORDER",
                "REIMBURSEMENT",
                "SPEND_PROGRAM",
                "TRANSACTION",
                "TRANSFER_LEDGER_ENTRY_MAPPING",
                "VENDOR_CREDIT"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "is_splittable": {
            "description": "If set to True, the accounting field can be used to annotate split line items. If not specified, the default value will be False.",
            "type": "boolean"
          },
          "name": {
            "description": "name of the custom accounting field.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "input_type",
          "name"
        ],
        "type": "object"
      },
      "ApiAccountingCustomFieldOptionUpdateRequestBody": {
        "example": {
          "code": "450",
          "display_name": "Sales & Marketing Display",
          "reactivate": true,
          "value": "Sales & Marketing",
          "visibility": "VISIBLE"
        },
        "properties": {
          "code": {
            "description": "Only available if not using a direct ERP integration: Code of the custom accounting field option; you could provide an empty string to reset the code.",
            "type": "string"
          },
          "display_name": {
            "description": "Available to all: Update the display name of the custom field option.",
            "type": "string"
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities created through POST /developer/v1/accounting/entities that this custom field option should be available for. Pass null to reset the custom field option to all connected entities. Omit this field to leave entity scoping unchanged.",
            "items": {
              "minLength": 1,
              "type": "string"
            },
            "minItems": 1,
            "nullable": true,
            "type": "array"
          },
          "reactivate": {
            "description": "Only available if not using a direct ERP integration: reactivate a deleted custom field option",
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "value": {
            "description": "Only available if not using a direct ERP integration: Name of the custom accounting field option.",
            "type": "string"
          },
          "visibility": {
            "description": "Available to all: Hide or Show option",
            "enum": [
              "HIDDEN",
              "VISIBLE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "HIDDEN": "The option is hidden from selection in Ramp.",
              "VISIBLE": "The option is available for selection in Ramp."
            }
          }
        },
        "type": "object"
      },
      "ApiAccountingCustomFieldOptionUploadRequestBody": {
        "example": {
          "accounting_connection_id": null,
          "field_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
          "options": [
            {
              "id": "418",
              "value": "Engineering & Design"
            },
            {
              "id": "514",
              "value": "Sales & Marketing"
            }
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "Specify an accounting connection. This connection must be an accounting API based connection. If not provided we default to the current active connection.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "field_id": {
            "description": "The ID of the custom accounting field that this custom accounting field option belongs to. This is the ramp_id returned from custom field endpoints.",
            "format": "uuid",
            "type": "string"
          },
          "options": {
            "description": "A list of field options for a given custom accounting field.",
            "items": {
              "$ref": "#/components/schemas/FieldOption"
            },
            "maxItems": 500,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "field_id",
          "options"
        ],
        "type": "object"
      },
      "ApiAccountingCustomFieldOptionUploadResponse": {
        "example": {
          "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
          "options": [
            {
              "code": "20001",
              "created_at": "2019-08-28T14:15:22+00:00",
              "id": "123",
              "is_active": true,
              "ramp_id": "649b6731-33c6-4ff5-8a5d-2333fcc90ace",
              "updated_at": "2020-08-28T14:40:12+00:00",
              "value": "Office/Admin:Phone & Internet"
            }
          ],
          "uploaded": [
            "649b6731-33c6-4ff5-8a5d-2333fcc90ace"
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the custom accounting field options are uploaded to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "one-to-many"
            }
          },
          "options": {
            "description": "A list of custom accounting field options that are successfully uploaded.",
            "items": {
              "$ref": "#/components/schemas/CustomFieldOption"
            },
            "type": "array"
          },
          "uploaded": {
            "deprecated": true,
            "description": "A list of uuids from the uploaded vendors, gl accounts or custom accounting field options.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "accounting_connection_id"
        ],
        "type": "object",
        "x-resource-name": "custom_field_options"
      },
      "ApiAccountingCustomFieldResource": {
        "example": {
          "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
          "created_at": "2019-08-28T14:15:22+00:00",
          "display_name": "Dept",
          "id": "Department",
          "input_type": "SINGLE_CHOICE",
          "is_active": true,
          "is_splittable": true,
          "name": "Department",
          "provider_name": "QuickBooks",
          "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
          "updated_at": "2020-08-28T14:40:12+00:00"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the custom accounting fields are uploaded to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "one-to-many"
            }
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "display_name": {
            "description": "Name of the custom accounting field on Ramp.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Remote/external ID of custom accounting field from ERP system.",
            "type": "string"
          },
          "input_type": {
            "description": "The input type for the custom accounting field.",
            "enum": [
              "BOOLEAN",
              "DATE",
              "FREE_FORM_TEXT",
              "SINGLE_CHOICE"
            ],
            "type": "string"
          },
          "is_active": {
            "type": "boolean"
          },
          "is_required_for": {
            "description": "Types of objects that require this accounting field to be used for coding before they can be marked as ready to sync.",
            "items": {
              "enum": [
                "BILL",
                "BILL_PAYMENT",
                "CUSTOMER",
                "INVOICE",
                "PURCHASE_ORDER",
                "REIMBURSEMENT",
                "SPEND_PROGRAM",
                "TRANSACTION",
                "TRANSFER_LEDGER_ENTRY_MAPPING",
                "VENDOR_CREDIT"
              ],
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "is_splittable": {
            "type": "boolean"
          },
          "name": {
            "description": "Name of the custom accounting field in the remote ERP system.",
            "type": "string"
          },
          "provider_name": {
            "description": "Name of the accounting connection that the custom accounting field is uploaded to.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "ramp_id": {
            "description": "id to uniquely identify a custom accounting field within Ramp system",
            "format": "uuid",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "accounting_connection_id",
          "display_name",
          "input_type",
          "is_required_for",
          "provider_name"
        ],
        "type": "object",
        "x-resource-name": "accounting_fields"
      },
      "ApiAccountingCustomFieldUpdateParamsRequestBody": {
        "example": {
          "display_name": "department",
          "is_splittable": "True",
          "name": "New Department"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "If this custom field belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "display_name": {
            "description": "Update the name of the custom accounting field on Ramp.",
            "nullable": true,
            "type": "string"
          },
          "is_splittable": {
            "description": "Update the is_splittable of the custom accounting field on Ramp.",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the custom accounting field.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiAccountingEntityCreateParamsRequestBody": {
        "example": {
          "country": "US",
          "currency": "USD",
          "federal_id_number": "12-3456789",
          "id": "sub-001",
          "name": "US Operations"
        },
        "properties": {
          "country": {
            "default": null,
            "description": "Optional ISO 3166 alpha-2 country code (e.g., \"US\").",
            "nullable": true,
            "type": "string"
          },
          "currency": {
            "default": null,
            "description": "Optional ISO 4217 currency code (e.g., \"USD\").",
            "nullable": true,
            "type": "string"
          },
          "federal_id_number": {
            "default": null,
            "description": "Optional tax identification number.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Remote/external ID of the subsidiary in the ERP.",
            "type": "string"
          },
          "name": {
            "description": "Name of the subsidiary/entity.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "ApiAccountingEntityUploadParamsRequestBody": {
        "example": {
          "entities": [
            {
              "country": "GB",
              "currency": "GBP",
              "id": "sub-002",
              "name": "UK Operations"
            },
            {
              "country": "US",
              "currency": "USD",
              "federal_id_number": "12-3456789",
              "id": "sub-001",
              "name": "US Operations"
            }
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "Specify an accounting connection. This connection must be an accounting API based connection. If not provided we default to the current active connection.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "entities": {
            "description": "A list of subsidiaries/entities to create inside the business's Subsidiary tracking category.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingEntityCreateParamsRequestBody"
            },
            "maxItems": 500,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "entities"
        ],
        "type": "object"
      },
      "ApiAccountingEntityUploadResponse": {
        "example": {
          "accounting_connection_id": "7de1fa6c-1fe9-432e-83d8-80971a91f903",
          "entities": [
            {
              "accounting_connection_id": "7de1fa6c-1fe9-432e-83d8-80971a91f903",
              "country": "US",
              "currency": "USD",
              "federal_id_number": "12-3456789",
              "id": "sub-001",
              "is_active": true,
              "name": "US Operations",
              "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
            }
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the subsidiaries/entities are uploaded to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "one-to-many"
            }
          },
          "entities": {
            "description": "A list of subsidiaries/entities that were successfully uploaded.",
            "items": {
              "$ref": "#/components/schemas/Entity"
            },
            "type": "array"
          }
        },
        "required": [
          "entities"
        ],
        "type": "object"
      },
      "ApiAccountingFailedSyncRequestBody": {
        "example": {
          "error": {
            "message": "The account period has closed and the account books cannot be updated."
          },
          "id": "bb037f47-c664-46f9-afa7-cc68cbcf5a23"
        },
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ApiAccountingSyncErrorRequestBody",
            "description": "describes the reason why the sync object failed to sync."
          },
          "id": {
            "description": "ID that uniquely identifies the object to sync in Ramp systems.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "error",
          "id"
        ],
        "type": "object"
      },
      "ApiAccountingField": {
        "properties": {
          "external_id": {
            "description": "external id of accounting field; It should uniquely identify an accounting field on the client end.",
            "type": "string"
          },
          "id": {
            "description": "ID that uniquely identifies an accounting field within Ramp",
            "type": "string"
          },
          "name": {
            "description": "name of accounting field",
            "type": "string"
          },
          "type": {
            "description": "accounting field type",
            "enum": [
              "AMORTIZATION_TEMPLATE",
              "BILLABLE",
              "COST_CENTER",
              "CUSTOMERS_JOBS",
              "DEFERRAL_CODE",
              "EXPENSE_ENTITY",
              "GL_ACCOUNT",
              "INVENTORY_ITEM",
              "JOURNAL",
              "MERCHANT",
              "NON_ERP",
              "OTHER",
              "PAYROLL_PROVIDER",
              "PROJECT",
              "REPORTING_TAG",
              "SALES_TAX_CODE",
              "SUBSIDIARY",
              "TAX_CODE",
              "UNIT_OF_MEASURE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "SALES_TAX_CODE": "A sales tax code from the accounting provider."
            }
          }
        },
        "required": [
          "external_id",
          "id",
          "name",
          "type"
        ],
        "type": "object"
      },
      "ApiAccountingFieldSelection": {
        "properties": {
          "category_info": {
            "$ref": "#/components/schemas/ApiAccountingField",
            "description": "information about the accounting category (or accounting field)."
          },
          "display_name": {
            "description": "Customer-set display name for the accounting field option in Ramp. When the customer renames an option inside Ramp, this returns the new label while `name` continues to return the ERP-source name. May be null if no Ramp-side override is set.",
            "nullable": true,
            "type": "string"
          },
          "external_code": {
            "description": "external code of accounting field option; Code field displayed on the ERP.",
            "nullable": true,
            "type": "string"
          },
          "external_id": {
            "description": "external id of accounting field option; It should uniquely identify an accounting field option on the client end.",
            "type": "string"
          },
          "id": {
            "description": "ID that uniquely identifies an accounting field option within Ramp",
            "type": "string"
          },
          "name": {
            "description": "name of accounting field option",
            "type": "string"
          },
          "provider_name": {
            "description": "Name of the accounting provider",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "category_info",
          "display_name",
          "external_id",
          "id",
          "name",
          "provider_name"
        ],
        "type": "object"
      },
      "ApiAccountingFieldSelectionRequestBody": {
        "additionalProperties": false,
        "description": "One accounting field selection, identified by Ramp UUIDs.",
        "properties": {
          "accounting_field_id": {
            "$ref": "#/components/schemas/UUIDStrRequestBody",
            "description": "ID of the accounting field: `id` in the spend program's `line_item_accounting_fields`, or `ramp_id` on GET /accounting/fields."
          },
          "accounting_field_option_id": {
            "$ref": "#/components/schemas/UUIDStrRequestBody",
            "description": "ID of an option of that field: `ramp_id` on GET /accounting/field-options (GET /accounting/accounts for GL accounts)."
          }
        },
        "required": [
          "accounting_field_id",
          "accounting_field_option_id"
        ],
        "title": "ApiAccountingFieldSelection",
        "type": "object"
      },
      "ApiAccountingFieldSelectionSource": {
        "properties": {
          "type": {
            "description": "Describes the type of source that added this selection.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiAccountingGLAccountUpdateRequestBody": {
        "example": {
          "code": "6410",
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "name": "Employees:Salaries & Wages",
          "reactivate": true,
          "visibility": "HIDDEN"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "If this GL account belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "code": {
            "description": "code of the general ledger account; you could provide an empty string if you want to reset the code.",
            "type": "string"
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities created through POST /developer/v1/accounting/entities that this GL account should be available for. Pass null to reset the GL account to all connected entities. Omit this field to leave entity scoping unchanged.",
            "items": {
              "minLength": 1,
              "type": "string"
            },
            "minItems": 1,
            "nullable": true,
            "type": "array"
          },
          "name": {
            "description": "name of the general ledger account",
            "type": "string"
          },
          "reactivate": {
            "description": "reactivate a deleted general ledger account",
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "visibility": {
            "description": "Hide or show the general ledger account.",
            "enum": [
              "HIDDEN",
              "VISIBLE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "HIDDEN": "The option is hidden from selection in Ramp.",
              "VISIBLE": "The option is available for selection in Ramp."
            }
          }
        },
        "type": "object"
      },
      "ApiAccountingGLAccountUploadRequestBody": {
        "example": {
          "accounting_connection_id": null,
          "gl_accounts": [
            {
              "classification": "EXPENSE",
              "code": "6410",
              "id": "514",
              "name": "Employees:Salaries & Wages"
            },
            {
              "classification": "EXPENSE",
              "id": "418",
              "name": "Office/Admin:Phone & Internet"
            },
            {
              "classification": "REVENUE",
              "id": "425",
              "name": "Sales"
            }
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "Specify an accounting connection. This connection must be an accounting API based connection. If not provided we default to the current active connection.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "gl_accounts": {
            "description": "A list of general ledger accounts that you want to use to classify your Ramp transactions.",
            "items": {
              "$ref": "#/components/schemas/GLAccount"
            },
            "maxItems": 500,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "gl_accounts"
        ],
        "type": "object"
      },
      "ApiAccountingGLAccountUploadResponse": {
        "example": {
          "accounting_connection_id": "7de1fa6c-1fe9-432e-83d8-80971a91f903",
          "gl_accounts": [
            {
              "classification": "EXPENSE",
              "code": "6410",
              "created_at": "2019-08-28T14:15:22+00:00",
              "gl_account_category_info": {
                "ramp_id": "96bb7007-eec5-430f-8d09-e033cbc000c2",
                "remote_id": "Category",
                "remote_name": "Category"
              },
              "id": "514",
              "is_active": true,
              "name": "Employees:Salaries & Wages",
              "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
              "updated_at": "2020-08-28T14:40:12+00:00"
            },
            {
              "classification": "EXPENSE",
              "created_at": "2019-08-28T14:15:22+00:00",
              "gl_account_category_info": {
                "ramp_id": "96bb7007-eec5-430f-8d09-e033cbc000c2",
                "remote_id": "Category",
                "remote_name": "Category"
              },
              "id": "418",
              "is_active": true,
              "name": "Office/Admin:Phone & Internet",
              "ramp_id": "733cf0e9-5cec-411b-935e-8b9b28ff63ba",
              "updated_at": "2020-08-28T14:40:12+00:00"
            }
          ],
          "uploaded": [
            "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
            "733cf0e9-5cec-411b-935e-8b9b28ff63ba"
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the general ledger accounts are uploaded to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "one-to-many"
            }
          },
          "gl_accounts": {
            "description": "A list of general ledger accounts that are successfully uploaded.",
            "items": {
              "$ref": "#/components/schemas/GeneralLedgerAccount"
            },
            "type": "array"
          },
          "uploaded": {
            "deprecated": true,
            "description": "A list of uuids from the uploaded vendors, gl accounts or custom accounting field options.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object",
        "x-resource-name": "gl_accounts"
      },
      "ApiAccountingInventoryItemFieldCreateParamsRequestBody": {
        "example": {
          "display_name": "Inventory Item Field",
          "id": "inventory_item_1",
          "name": "Inventory Item"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "Specify an accounting connection. This connection must be an accounting API based connection. If not provided we default to the current active connection.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "display_name": {
            "description": "The name of the inventory item tracking category as shown on Ramp.",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the inventory item tracking category.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "ApiAccountingInventoryItemFieldResource": {
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the inventory item field is associated with.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "one-to-many"
            }
          },
          "display_name": {
            "description": "Display name of the inventory item field on Ramp.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Remote/external ID of inventory item field from ERP system.",
            "type": "string"
          },
          "name": {
            "description": "Name of the inventory item field in the remote ERP system.",
            "type": "string"
          },
          "ramp_id": {
            "description": "Unique identifier for the inventory item field within Ramp system.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "accounting_connection_id",
          "display_name",
          "id",
          "name",
          "ramp_id"
        ],
        "type": "object"
      },
      "ApiAccountingInventoryItemFieldUpdateParamsRequestBody": {
        "example": {
          "display_name": "Inventory",
          "name": "Updated Inventory Item"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "If the inventory item field belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "display_name": {
            "description": "Display name of the inventory item field on Ramp.",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the inventory item field.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiAccountingInventoryItemOptionResource": {
        "example": {
          "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "gl_account_id": "b2f34c12-1234-5678-abcd-ef0123456789",
          "id": "inventory_item_001",
          "is_active": true,
          "name": "Widget A",
          "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the inventory item option belongs to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities that this inventory item option is available for. Null means the inventory item option is available for all connected entities.",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "readOnly": true,
            "type": "array"
          },
          "gl_account_id": {
            "description": "The Ramp ID of the GL account associated with this inventory item option, or null if no GL account is linked.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "description": "The external ID of the inventory item option. This is the ID in your ERP system.",
            "type": "string"
          },
          "is_active": {
            "description": "Whether the inventory item option is active.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the inventory item option.",
            "type": "string"
          },
          "ramp_id": {
            "description": "Unique identifier for the inventory item option within Ramp system.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "accounting_connection_id",
          "entity_remote_ids",
          "gl_account_id",
          "id",
          "is_active",
          "name",
          "ramp_id"
        ],
        "type": "object",
        "x-resource-name": "inventory_item_options"
      },
      "ApiAccountingInventoryItemOptionUpdateParamsRequestBody": {
        "example": {
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "gl_account_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
          "name": "Widget A",
          "reactivate": true
        },
        "properties": {
          "accounting_connection_id": {
            "description": "If this inventory item option belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities created through POST /developer/v1/accounting/entities that this inventory item option should be available for. Pass null to reset the inventory item option to all connected entities. Omit this field to leave entity scoping unchanged.",
            "items": {
              "minLength": 1,
              "type": "string"
            },
            "minItems": 1,
            "nullable": true,
            "type": "array"
          },
          "gl_account_id": {
            "description": "The Ramp ID (ramp_id) of the GL account to associate with this inventory item option. The GL account must already exist in Ramp. Use POST /developer/v1/accounting/accounts to upload GL accounts.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "gl_accounts",
              "type": "many-to-one"
            }
          },
          "name": {
            "description": "The name of the inventory item option.",
            "type": "string"
          },
          "reactivate": {
            "description": "Reactivate a deleted inventory item option. If provided, this must be true; false is not allowed.",
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ApiAccountingInventoryItemOptionsCreateParamsRequestBody": {
        "example": {
          "options": [
            {
              "entity_remote_ids": [
                "sub-001",
                "sub-002"
              ],
              "gl_account_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
              "id": "inventory_item_001",
              "name": "Widget A"
            },
            {
              "gl_account_id": null,
              "id": "inventory_item_002",
              "name": "Widget B"
            }
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "Specify an accounting connection. This connection must be an accounting API based connection. If not provided we default to the current active connection.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "options": {
            "description": "A list of inventory item options to upload.",
            "items": {
              "$ref": "#/components/schemas/InventoryItemOption"
            },
            "maxItems": 500,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "options"
        ],
        "type": "object"
      },
      "ApiAccountingInventoryItemOptionsUploadResponse": {
        "example": {
          "options": [
            {
              "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
              "entity_remote_ids": [
                "sub-001",
                "sub-002"
              ],
              "gl_account_id": "b2f34c12-1234-5678-abcd-ef0123456789",
              "id": "inventory_item_001",
              "is_active": true,
              "name": "Widget A",
              "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
            }
          ]
        },
        "properties": {
          "options": {
            "description": "A list of inventory item options that were successfully uploaded.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingInventoryItemOptionResource"
            },
            "type": "array"
          }
        },
        "required": [
          "options"
        ],
        "type": "object",
        "x-resource-name": "inventory_item_options"
      },
      "ApiAccountingProviderAccessCreateRequestBody": {
        "example": {
          "reactivate": false,
          "remote_provider_name": "ACCOUNTING_SEED",
          "settings": {
            "entity_selection_enabled": false,
            "transaction_accounting_vendor_creation_on_sync_enabled": false,
            "transaction_sync_button_enabled": false,
            "vendor_credits_enabled": true
          }
        },
        "properties": {
          "reactivate": {
            "default": false,
            "deprecated": true,
            "description": "Deprecated, use POST accounting/connection/<connection_id>/reactivate.",
            "type": "boolean"
          },
          "remote_provider_name": {
            "description": "The name of the accounting connection.",
            "type": "string"
          },
          "settings": {
            "$ref": "#/components/schemas/ApiAccountingConnectionSettingsCreateParamsRequestBody",
            "default": null,
            "description": "Optional settings for the accounting connection. Only applies to API-based connections.",
            "nullable": true,
            "x-beta": true
          }
        },
        "required": [
          "remote_provider_name"
        ],
        "type": "object"
      },
      "ApiAccountingProviderAccessListResource": {
        "example": {
          "connections": [
            {
              "created_at": "2021-01-01T00:00:00Z",
              "id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
              "last_linked_at": "2021-01-01T00:00:00Z",
              "remote_provider_name": "Quickbooks",
              "status": "LINKED"
            },
            {
              "created_at": "2021-01-01T00:00:00Z",
              "id": "649b6731-33c6-4ff5-8a5d-2333fcc90ace",
              "last_linked_at": "2021-12-31T00:00:00Z",
              "remote_provider_name": "Netsuite",
              "status": "UNLINKED"
            }
          ]
        },
        "properties": {
          "connections": {
            "description": "A list of accounting connections for the current business.",
            "items": {
              "$ref": "#/components/schemas/AccountingProvider"
            },
            "type": "array"
          }
        },
        "required": [
          "connections"
        ],
        "type": "object"
      },
      "ApiAccountingProviderAccessUpdateParamsRequestBody": {
        "example": {
          "settings": {
            "entity_selection_enabled": false,
            "transaction_accounting_vendor_creation_on_sync_enabled": false,
            "transaction_sync_button_enabled": false,
            "vendor_credits_enabled": true
          }
        },
        "properties": {
          "settings": {
            "$ref": "#/components/schemas/ApiAccountingConnectionSettingsUpdateParamsRequestBody",
            "description": "Settings for the accounting connection. Only applies to API-based connections."
          }
        },
        "type": "object"
      },
      "ApiAccountingProviderDeveloperApiConnectionSettings": {
        "properties": {
          "entity_selection_enabled": {
            "description": "Whether ERP entity selection is enabled for this accounting connection. Only applies to API-based connections.",
            "type": "boolean"
          },
          "reimbursement_sync_button_enabled": {
            "description": "Whether the reimbursement sync button is enabled for this accounting connection. Only applies to API-based connections.",
            "type": "boolean"
          },
          "transaction_accounting_vendor_creation_on_sync_enabled": {
            "description": "Whether card transactions missing a mapped accounting vendor should require vendor creation before sync. Only applies to API-based connections.",
            "type": "boolean"
          },
          "transaction_sync_button_enabled": {
            "description": "Whether the transaction sync button is enabled for this accounting connection. Only applies to API-based connections.",
            "type": "boolean"
          },
          "vendor_credits_enabled": {
            "description": "Whether vendor credits are enabled for this accounting connection. Only applies to API-based connections.",
            "type": "boolean"
          }
        },
        "required": [
          "entity_selection_enabled",
          "reimbursement_sync_button_enabled",
          "transaction_accounting_vendor_creation_on_sync_enabled",
          "transaction_sync_button_enabled",
          "vendor_credits_enabled"
        ],
        "type": "object"
      },
      "ApiAccountingReadyToSyncParamsRequestBody": {
        "example": {
          "object_ids": [
            "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
            "f6e5d4c3-b2a1-4f9e-8d7c-6b5a4e3d2c1b"
          ],
          "object_type": "TRANSACTION"
        },
        "properties": {
          "object_ids": {
            "description": "IDs of the objects to mark as ready to sync. All IDs must belong to the authenticated business; the request fails if any ID is not found.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 500,
            "minItems": 1,
            "type": "array"
          },
          "object_type": {
            "description": "The type of object to mark ready to sync. Supported values are TRANSACTION and REIMBURSEMENT.",
            "enum": [
              "REIMBURSEMENT",
              "TRANSACTION"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "REIMBURSEMENT": "Mark a Ramp reimbursement as ready to sync.",
              "TRANSACTION": "Mark a Ramp card transaction as ready to sync."
            }
          }
        },
        "required": [
          "object_ids",
          "object_type"
        ],
        "type": "object"
      },
      "ApiAccountingSplitFieldSelectionRequestBody": {
        "properties": {
          "field_external_id": {
            "default": null,
            "description": "Remote ID of the accounting field in the ERP system. Provide exactly one of field_id or field_external_id.",
            "nullable": true,
            "type": "string"
          },
          "field_id": {
            "default": null,
            "description": "UUID of the accounting field. Provide exactly one of field_id or field_external_id.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "ramp_id",
              "target_resource": "accounting_fields",
              "type": "many-to-one"
            }
          },
          "field_option_external_id": {
            "default": null,
            "description": "Remote ID of the accounting field option in the ERP system. Provide exactly one of field_option_id, field_option_external_id, or free_form_text.",
            "nullable": true,
            "type": "string"
          },
          "field_option_id": {
            "default": null,
            "description": "UUID of the accounting field option. Provide exactly one of field_option_id, field_option_external_id, or free_form_text.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "ramp_id",
              "target_resource": "custom_field_options",
              "type": "many-to-one"
            }
          },
          "free_form_text": {
            "default": null,
            "description": "Free form text for the accounting field selection. For DATE-type fields, use ISO format (YYYY-MM-DD). Provide exactly one of field_option_id, field_option_external_id, or free_form_text.",
            "minLength": 1,
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiAccountingSplitLineItemRequestBody": {
        "properties": {
          "accounting_field_selections": {
            "description": "Accounting field selections for this line item. Each field and option may be identified by Ramp ID or by ERP remote ID.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingSplitFieldSelectionRequestBody"
            },
            "type": "array"
          },
          "amount": {
            "description": "Amount in minor units (e.g. 5000 = $50.00).",
            "type": "integer"
          },
          "memo": {
            "default": null,
            "description": "Memo for this line item (e.g. a case ID).",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "amount"
        ],
        "type": "object"
      },
      "ApiAccountingSuccessfulSyncRequestBody": {
        "example": {
          "id": "bb037f47-c664-46f9-afa7-cc68cbcf5a23",
          "reference_id": "83283a15-c0a0-4105-9724-2fcfefa9924f"
        },
        "properties": {
          "deep_link_url": {
            "description": "URL that links to the object in the remote ERP system. Applicable for transactions, reimbursements, bills, and bill payments. Bill payment syncs update the bill's URL. Omitting this field preserves the existing URL.",
            "format": "url",
            "type": "string"
          },
          "id": {
            "description": "ID that uniquely identifies the object to sync in Ramp systems.",
            "format": "uuid",
            "type": "string"
          },
          "reference_id": {
            "description": "ID that uniquely identifies the object to sync in remote ERP systems.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "reference_id"
        ],
        "type": "object"
      },
      "ApiAccountingSyncCreateRequestBody": {
        "example": {
          "failed_syncs": [
            {
              "error": {
                "message": "The account period has closed and the account books cannot be updated."
              },
              "id": "d471d830-2e73-4082-8a75-68540f83e86e"
            }
          ],
          "idempotency_key": "d471d830-2e73-4082-8a75-68540f83e86e",
          "successful_syncs": [
            {
              "id": "5a58eb94-a583-458f-810d-c794f32f2f90",
              "reference_id": "d8573713-a97d-4119-bdd7-b69c318df9bb"
            },
            {
              "id": "bb037f47-c664-46f9-afa7-cc68cbcf5a23",
              "reference_id": "83283a15-c0a0-4105-9724-2fcfefa9924f"
            }
          ],
          "sync_type": "TRANSACTION_SYNC"
        },
        "properties": {
          "failed_syncs": {
            "description": "A list of objects that failed to be synced.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFailedSyncRequestBody"
            },
            "maxItems": 5000,
            "minItems": 1,
            "type": "array"
          },
          "idempotency_key": {
            "description": "An idempotency key is a unique value generated by the client which the server uses to recognize subsequent retries of the same request. To avoid collisions, we encourage clients to use random generated UUIDs.",
            "type": "string"
          },
          "mark_ready_to_sync": {
            "description": "Mark successful transaction syncs ready before recording completion, clearing their accounting requirements. Only supported for TRANSACTION_SYNC without sync_request_id; failed_syncs are not marked ready. Defaults to false.",
            "type": "boolean"
          },
          "successful_syncs": {
            "description": "A list of successfully synced objects.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingSuccessfulSyncRequestBody"
            },
            "maxItems": 5000,
            "minItems": 1,
            "type": "array"
          },
          "sync_request_id": {
            "default": null,
            "description": "For Sync Button flows, provide the sync request ID received from the TRANSACTION_SYNC_REQUESTED, REIMBURSEMENT_SYNC_REQUESTED, or ACCRUAL_SYNC_REQUESTED outbound webhook. Do not provide this value for non-Sync Button flows.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_sync_requests",
              "type": "many-to-one"
            }
          },
          "sync_type": {
            "description": "The type of object to sync.",
            "enum": [
              "ACCRUAL_SYNC",
              "BILL_PAYMENT_SYNC",
              "BILL_SYNC",
              "BROKERAGE_ORDER_SYNC",
              "RECOGNITION_SCHEDULE_ENTRY_SYNC",
              "REIMBURSEMENT_SYNC",
              "REPAYMENT_SYNC",
              "STATEMENT_CREDIT_SYNC",
              "TRANSACTION_SYNC",
              "TRANSFER_SYNC",
              "WALLET_TRANSFER_SYNC"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ACCRUAL_SYNC": "Report the result of an accrual sync request.",
              "RECOGNITION_SCHEDULE_ENTRY_SYNC": "Report sync results for a recognition schedule sync request.",
              "REPAYMENT_SYNC": "Report sync results for employee repayments to the business."
            }
          }
        },
        "required": [
          "idempotency_key",
          "sync_type"
        ],
        "type": "object"
      },
      "ApiAccountingSyncErrorRequestBody": {
        "example": {
          "message": "The account period has closed and the account books cannot be updated."
        },
        "properties": {
          "message": {
            "description": "an error message that explains the reason of the sync failure.",
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object"
      },
      "ApiAccountingSyncResource": {
        "properties": {
          "sync_id": {
            "description": "Unique identifier of the sync job.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "sync_id"
        ],
        "type": "object"
      },
      "ApiAccountingTaxCodeCreateParamsRequestBody": {
        "example": {
          "display_name": "Tax Code Field",
          "name": "Tax Code"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "Specify an accounting connection. This connection must be an accounting API based connection. If not provided we default to the current active connection.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "display_name": {
            "description": "The name of the tax code field as shown on Ramp.",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the tax code field.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "ApiAccountingTaxCodeOptionResource": {
        "example": {
          "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "id": "tax_code_001",
          "is_active": true,
          "name": "Standard Tax",
          "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
          "tax_rate_ids": [
            "tax_rate_001",
            "tax_rate_002"
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the tax code option belongs to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities that this tax code option is available for. Null means the option is available for all connected entities.",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "readOnly": true,
            "type": "array"
          },
          "id": {
            "description": "The external ID of the tax code option. This is the ID in your ERP system.",
            "type": "string"
          },
          "is_active": {
            "description": "Whether the tax code option is active.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the tax code option.",
            "type": "string"
          },
          "ramp_id": {
            "description": "Unique identifier for the tax code option within Ramp system.",
            "format": "uuid",
            "type": "string"
          },
          "tax_rate_ids": {
            "description": "A list of external tax rate IDs (remote_id values) associated with this tax code option.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "required": [
          "accounting_connection_id",
          "entity_remote_ids",
          "id",
          "is_active",
          "name",
          "ramp_id",
          "tax_rate_ids"
        ],
        "type": "object",
        "x-resource-name": "tax_code_options"
      },
      "ApiAccountingTaxCodeOptionUpdateParamsRequestBody": {
        "example": {
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "name": "Standard Tax",
          "tax_rate_ids": [
            "tax_rate_001",
            "tax_rate_002"
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "If this tax code option belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities that this tax code option should be available for. Null means the option is available for all connected entities. If provided, this value replaces the existing entity remote IDs.",
            "items": {
              "minLength": 1,
              "type": "string"
            },
            "minItems": 1,
            "nullable": true,
            "type": "array"
          },
          "name": {
            "description": "The name of the tax code option.",
            "type": "string"
          },
          "tax_rate_ids": {
            "description": "A list of external tax rate IDs (remote_id values) to associate with this tax code option. If this value is provided, it will replace all existing tax rate IDs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ApiAccountingTaxCodeOptionsCreateParamsRequestBody": {
        "example": {
          "options": [
            {
              "entity_remote_ids": [
                "sub-001",
                "sub-002"
              ],
              "id": "tax_code_001",
              "name": "Standard Tax",
              "tax_rate_ids": [
                "tax_rate_001"
              ]
            },
            {
              "id": "tax_code_002",
              "name": "Reduced Tax",
              "tax_rate_ids": [
                "tax_rate_002"
              ]
            }
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "Specify an accounting connection. This connection must be an accounting API based connection. If not provided we default to the current active connection.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "options": {
            "description": "A list of tax code options to upload.",
            "items": {
              "$ref": "#/components/schemas/TaxCodeOption"
            },
            "maxItems": 500,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "options"
        ],
        "type": "object"
      },
      "ApiAccountingTaxCodeOptionsUploadResponse": {
        "example": {
          "options": [
            {
              "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
              "entity_remote_ids": [
                "sub-001",
                "sub-002"
              ],
              "id": "tax_code_001",
              "is_active": true,
              "name": "Standard Tax",
              "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
              "tax_rate_ids": [
                "tax_rate_001",
                "tax_rate_002"
              ]
            }
          ]
        },
        "properties": {
          "options": {
            "description": "A list of tax code options that were successfully uploaded.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingTaxCodeOptionResource"
            },
            "type": "array"
          }
        },
        "required": [
          "options"
        ],
        "type": "object",
        "x-resource-name": "tax_code_options"
      },
      "ApiAccountingTaxCodeResource": {
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the tax code field is associated with.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "one-to-many"
            }
          },
          "display_name": {
            "description": "Display name of the tax code field on Ramp.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Remote/external ID of tax code field from ERP system.",
            "type": "string"
          },
          "name": {
            "description": "Name of the tax code field in the remote ERP system.",
            "type": "string"
          },
          "ramp_id": {
            "description": "Unique identifier for the tax code field within Ramp system.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "accounting_connection_id",
          "display_name",
          "id",
          "name",
          "ramp_id"
        ],
        "type": "object"
      },
      "ApiAccountingTaxCodeUpdateParamsRequestBody": {
        "example": {
          "display_name": "Tax Code",
          "name": "Updated Tax Code"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "If the tax code field belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "display_name": {
            "description": "Display name of the tax code field on Ramp.",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the tax code field.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiAccountingTaxRateResource": {
        "example": {
          "accounting_connection_id": "7de1fa6c-1fe9-432e-83d8-80971a91f903",
          "accounting_gl_account_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
          "id": "tax_rate_gst_5",
          "name": "GST",
          "ramp_id": "649b6731-33c6-4ff5-8a5d-2333fcc90ace",
          "rate": "0.05"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the tax rate belongs to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "accounting_gl_account_id": {
            "description": "The Ramp ID of the GL account associated with this tax rate.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "ramp_id",
              "target_resource": "gl_accounts",
              "type": "many-to-one"
            }
          },
          "id": {
            "description": "Remote/external ID of the tax rate from your ERP system.",
            "type": "string"
          },
          "name": {
            "description": "Name of the tax rate.",
            "type": "string"
          },
          "ramp_id": {
            "description": "Unique identifier for the tax rate within Ramp system.",
            "format": "uuid",
            "type": "string"
          },
          "rate": {
            "description": "The tax rate percentage expressed as a decimal (e.g. 0.10 for 10%).",
            "format": "decimal",
            "type": "string"
          }
        },
        "required": [
          "accounting_connection_id",
          "accounting_gl_account_id",
          "id",
          "name",
          "ramp_id",
          "rate"
        ],
        "type": "object",
        "x-resource-name": "tax_rates"
      },
      "ApiAccountingTaxRateUpdateParamsRequestBody": {
        "example": {
          "accounting_gl_account_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
          "name": "Updated Tax Rate Name",
          "rate": "0.08"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "If this tax rate belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "accounting_gl_account_id": {
            "description": "The Ramp ID of the GL account to associate with this tax rate.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "ramp_id",
              "target_resource": "gl_accounts",
              "type": "many-to-one"
            }
          },
          "name": {
            "description": "Name of the tax rate.",
            "type": "string"
          },
          "rate": {
            "description": "The tax rate percentage expressed as a decimal (e.g. 0.10 for 10%).",
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "type": "object"
      },
      "ApiAccountingTaxRateUploadParamsRequestBody": {
        "example": {
          "tax_rates": [
            {
              "accounting_gl_account_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
              "id": "tax_rate_gst_5",
              "name": "GST",
              "rate": "0.05"
            },
            {
              "accounting_gl_account_id": "7eb0ae7e-2d2f-486c-a890-cf71ca4bc13a",
              "id": "tax_rate_pst_7",
              "name": "PST",
              "rate": "0.07"
            }
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "Specify an accounting connection. This connection must be an accounting API based connection. If not provided we default to the current active connection.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "tax_rates": {
            "description": "A list of tax rates to upload.",
            "items": {
              "$ref": "#/components/schemas/TaxRate"
            },
            "maxItems": 500,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "tax_rates"
        ],
        "type": "object"
      },
      "ApiAccountingTaxRateUploadResponse": {
        "example": {
          "accounting_connection_id": "7de1fa6c-1fe9-432e-83d8-80971a91f903",
          "tax_rates": [
            {
              "accounting_connection_id": "7de1fa6c-1fe9-432e-83d8-80971a91f903",
              "accounting_gl_account_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
              "id": "tax_rate_gst_5",
              "name": "GST",
              "ramp_id": "649b6731-33c6-4ff5-8a5d-2333fcc90ace",
              "rate": "0.05"
            }
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the tax rates are uploaded to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "one-to-many"
            }
          },
          "tax_rates": {
            "description": "A list of tax rates that were successfully uploaded.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingTaxRateResource"
            },
            "type": "array"
          }
        },
        "required": [
          "tax_rates"
        ],
        "type": "object",
        "x-resource-name": "tax_rates"
      },
      "ApiAccountingVendorUpdateRequestBody": {
        "example": {
          "code": "19566",
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "name": "Amazon",
          "reactivate": true
        },
        "properties": {
          "accounting_connection_id": {
            "description": "If this vendor belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "code": {
            "description": "Code of the vendor; you could provide an empty string to reset the code.",
            "type": "string"
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities created through POST /developer/v1/accounting/entities that this vendor should be available for. Pass null to reset the vendor to all connected entities. Omit this field to leave entity scoping unchanged.",
            "items": {
              "minLength": 1,
              "type": "string"
            },
            "minItems": 1,
            "nullable": true,
            "type": "array"
          },
          "name": {
            "description": "Name of a vendor",
            "type": "string"
          },
          "reactivate": {
            "description": "reactivate a deleted vendor",
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ApiAccountingVendorUploadRequestBody": {
        "example": {
          "vendors": [
            {
              "code": "19566",
              "id": "V-5500-0135",
              "name": "Slack Technologies, LLC"
            },
            {
              "id": "V-5500-0130",
              "name": "AirTable"
            },
            {
              "id": "V-5500-0142",
              "name": "Microsoft"
            }
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "Specify an accounting connection. This connection must be an accounting API based connection. If not provided we default to the current active connection.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "vendors": {
            "description": "A list of vendors that you want to use to classify your Ramp transactions.",
            "items": {
              "$ref": "#/components/schemas/AccountingVendor"
            },
            "maxItems": 500,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "vendors"
        ],
        "type": "object"
      },
      "ApiAccountingVendorUploadResponse": {
        "example": {
          "uploaded": [
            "459cf0e9-5cec-411b-935e-8b9b28ff63ba",
            "649b6731-33c6-4ff5-8a5d-2333fcc90ace"
          ],
          "vendors": [
            {
              "code": "19566",
              "created_at": "2019-08-28T14:15:22+00:00",
              "id": "123",
              "is_active": true,
              "is_synced": true,
              "name": "Amazon",
              "ramp_id": "649b6731-33c6-4ff5-8a5d-2333fcc90ace",
              "updated_at": "2020-08-28T14:40:12+00:00",
              "vendor_category_info": {
                "ramp_id": "96bb7007-eec5-430f-8d09-e033cbc000c2",
                "remote_id": "Merchant",
                "remote_name": "Merchant"
              }
            },
            {
              "code": "19566",
              "created_at": "2019-08-28T14:15:22+00:00",
              "id": "V-5500-0131",
              "is_active": true,
              "is_synced": true,
              "name": "Microsoft",
              "ramp_id": "459cf0e9-5cec-411b-935e-8b9b28ff63ba",
              "updated_at": "2020-08-28T14:40:12+00:00",
              "vendor_category_info": {
                "ramp_id": "96bb7007-eec5-430f-8d09-e033cbc000c2",
                "remote_id": "Merchant",
                "remote_name": "Merchant"
              }
            }
          ]
        },
        "properties": {
          "uploaded": {
            "deprecated": true,
            "description": "A list of uuids from the uploaded vendors, gl accounts or custom accounting field options.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "vendors": {
            "description": "A list of vendors that are successfully uploaded.",
            "items": {
              "$ref": "#/components/schemas/VendorAccount"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ApiAddPurchaseOrderLineItemParamsRequestBody": {
        "example": {
          "line_items": [
            {
              "accounting_field_selections": [],
              "description": "my line item",
              "external_id": "ext-line-1",
              "unit_price": 110,
              "unit_quantity": 2
            }
          ]
        },
        "properties": {
          "line_items": {
            "description": "List of line items to add to the purchase order. Existing line items attached to the purchase order won't be modified",
            "items": {
              "$ref": "#/components/schemas/ApiPurchaseOrderLineItemCreateParamsRequestBody"
            },
            "type": "array"
          }
        },
        "required": [
          "line_items"
        ],
        "type": "object"
      },
      "ApiAddressFieldAnswerRequestBody": {
        "description": "Answer for an address field.",
        "properties": {
          "address1": {
            "description": "Street address line 1.",
            "title": "Address1",
            "type": "string"
          },
          "address2": {
            "default": null,
            "description": "Street address line 2.",
            "nullable": true,
            "title": "Address2",
            "type": "string"
          },
          "answer_type": {
            "description": "Must be address.",
            "enum": [
              "address"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "city": {
            "description": "City.",
            "title": "City",
            "type": "string"
          },
          "country": {
            "description": "ISO 3166-1 alpha-2 country code, such as US.",
            "title": "Country",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "postal_code": {
            "default": null,
            "description": "Postal or ZIP code.",
            "nullable": true,
            "title": "Postal Code",
            "type": "string"
          },
          "state": {
            "default": null,
            "description": "State or province.",
            "nullable": true,
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "address1",
          "answer_type",
          "city",
          "country",
          "field_id"
        ],
        "title": "ApiAddressFieldAnswer",
        "type": "object"
      },
      "ApiAddressResource": {
        "properties": {
          "address_line_1": {
            "description": "Primary address line of the vendor address.",
            "type": "string"
          },
          "address_line_2": {
            "description": "Secondary address line of the vendor address.",
            "type": "string"
          },
          "city": {
            "description": "City of the vendor address.",
            "type": "string"
          },
          "country": {
            "description": "Country of the vendor address.",
            "type": "string"
          },
          "postal_code": {
            "description": "Postal or ZIP code of the vendor address.",
            "type": "string"
          },
          "state": {
            "description": "State or province of the vendor address.",
            "type": "string"
          }
        },
        "required": [
          "address_line_1",
          "city",
          "country",
          "postal_code"
        ],
        "type": "object"
      },
      "ApiAmount": {
        "properties": {
          "currency": {
            "description": "The currency of the amount in ISO 4217 format (e.g. USD).",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "value": {
            "description": "The non-negative amount in the smallest denomination of the currency (e.g. cents for USD).",
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "currency",
          "value"
        ],
        "type": "object"
      },
      "ApiAmountRequestBody": {
        "additionalProperties": false,
        "properties": {
          "currency": {
            "description": "The currency of the amount in ISO 4217 format (e.g. USD).",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "value": {
            "description": "The non-negative amount in the smallest denomination of the currency (e.g. cents for USD).",
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "currency",
          "value"
        ],
        "type": "object"
      },
      "ApiApplicationAddressParams": {
        "properties": {
          "apt_suite": {
            "default": null,
            "description": "Apartment or suite number.",
            "nullable": true,
            "type": "string"
          },
          "city": {
            "default": null,
            "description": "City.",
            "nullable": true,
            "type": "string"
          },
          "postal_code": {
            "default": null,
            "description": "Postal code.",
            "nullable": true,
            "type": "string"
          },
          "state": {
            "default": null,
            "description": "Two-letter state code (e.g. CA).",
            "maxLength": 2,
            "minLength": 2,
            "nullable": true,
            "type": "string"
          },
          "street_address": {
            "default": null,
            "description": "Street address.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiApplicationAddressParamsRequestBody": {
        "properties": {
          "apt_suite": {
            "default": null,
            "description": "Apartment or suite number.",
            "nullable": true,
            "type": "string"
          },
          "city": {
            "default": null,
            "description": "City.",
            "nullable": true,
            "type": "string"
          },
          "postal_code": {
            "default": null,
            "description": "Postal code.",
            "nullable": true,
            "type": "string"
          },
          "state": {
            "default": null,
            "description": "Two-letter state code (e.g. CA).",
            "maxLength": 2,
            "minLength": 2,
            "nullable": true,
            "type": "string"
          },
          "street_address": {
            "default": null,
            "description": "Street address.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiApplicationApplicantParams": {
        "properties": {
          "email": {
            "description": "Business email address of the applicant. The applicant signs in to Ramp with this email to complete the application, is the first user created on the new Ramp business, and becomes its business owner once the application is approved. Use the email of the person who should own the Ramp business. To complete general details without applicant action in Ramp, the business website domain must match this email domain or be its subdomain. If the domains differ, the applicant must explain the mismatch in Ramp.",
            "format": "email",
            "type": "string"
          },
          "first_name": {
            "description": "First name of the applicant.",
            "type": "string"
          },
          "last_name": {
            "description": "Last name of the applicant.",
            "type": "string"
          },
          "phone": {
            "default": null,
            "description": "Phone number of the applicant in E.164 format.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email",
          "first_name",
          "last_name"
        ],
        "type": "object"
      },
      "ApiApplicationApplicantParamsRequestBody": {
        "properties": {
          "email": {
            "description": "Business email address of the applicant. The applicant signs in to Ramp with this email to complete the application, is the first user created on the new Ramp business, and becomes its business owner once the application is approved. Use the email of the person who should own the Ramp business. To complete general details without applicant action in Ramp, the business website domain must match this email domain or be its subdomain. If the domains differ, the applicant must explain the mismatch in Ramp.",
            "format": "email",
            "type": "string"
          },
          "first_name": {
            "description": "First name of the applicant.",
            "type": "string"
          },
          "last_name": {
            "description": "Last name of the applicant.",
            "type": "string"
          },
          "phone": {
            "default": null,
            "description": "Phone number of the applicant in E.164 format.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email",
          "first_name",
          "last_name"
        ],
        "type": "object"
      },
      "ApiApplicationBusinessParams": {
        "properties": {
          "address": {
            "$ref": "#/components/schemas/ApiApplicationAddressParams",
            "default": null,
            "description": "Principal place of business address.",
            "nullable": true
          },
          "business_description": {
            "default": null,
            "description": "Brief description of the business.",
            "maxLength": 250,
            "nullable": true,
            "type": "string"
          },
          "business_name_dba": {
            "default": null,
            "description": "Doing-business-as name.",
            "nullable": true,
            "type": "string"
          },
          "business_name_legal": {
            "default": null,
            "description": "Legal name of the business.",
            "nullable": true,
            "type": "string"
          },
          "business_name_on_card": {
            "default": null,
            "description": "Name to display on cards.",
            "nullable": true,
            "type": "string"
          },
          "business_website": {
            "default": null,
            "description": "Business website URL. To complete general details without applicant action in Ramp, its domain must match the applicant email domain or be its subdomain. If the domains differ, the applicant must explain the mismatch in Ramp.",
            "nullable": true,
            "type": "string"
          },
          "incorporation": {
            "$ref": "#/components/schemas/ApiApplicationIncorporationParams",
            "default": null,
            "description": "Business incorporation details.",
            "nullable": true
          },
          "phone": {
            "default": null,
            "description": "Office phone number in E.164 format.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiApplicationBusinessParamsRequestBody": {
        "properties": {
          "address": {
            "$ref": "#/components/schemas/ApiApplicationAddressParamsRequestBody",
            "default": null,
            "description": "Principal place of business address.",
            "nullable": true
          },
          "business_description": {
            "default": null,
            "description": "Brief description of the business.",
            "maxLength": 250,
            "nullable": true,
            "type": "string"
          },
          "business_name_dba": {
            "default": null,
            "description": "Doing-business-as name.",
            "nullable": true,
            "type": "string"
          },
          "business_name_legal": {
            "default": null,
            "description": "Legal name of the business.",
            "nullable": true,
            "type": "string"
          },
          "business_name_on_card": {
            "default": null,
            "description": "Name to display on cards.",
            "nullable": true,
            "type": "string"
          },
          "business_website": {
            "default": null,
            "description": "Business website URL. To complete general details without applicant action in Ramp, its domain must match the applicant email domain or be its subdomain. If the domains differ, the applicant must explain the mismatch in Ramp.",
            "nullable": true,
            "type": "string"
          },
          "incorporation": {
            "$ref": "#/components/schemas/ApiApplicationIncorporationParamsRequestBody",
            "default": null,
            "description": "Business incorporation details.",
            "nullable": true
          },
          "phone": {
            "default": null,
            "description": "Office phone number in E.164 format.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiApplicationControllingOfficerParams": {
        "properties": {
          "address": {
            "$ref": "#/components/schemas/ApiApplicationPersonAddressParams",
            "default": null,
            "description": "Residential address.",
            "nullable": true
          },
          "birth_date": {
            "default": null,
            "description": "Date of birth in YYYY-MM-DD format.",
            "nullable": true,
            "type": "string"
          },
          "email": {
            "default": null,
            "description": "Email address.",
            "format": "email",
            "nullable": true,
            "type": "string"
          },
          "first_name": {
            "default": null,
            "description": "First name.",
            "nullable": true,
            "type": "string"
          },
          "is_beneficial_owner": {
            "default": false,
            "description": "Whether this officer is also a beneficial owner. Defaults to false.",
            "type": "boolean"
          },
          "last_name": {
            "default": null,
            "description": "Last name.",
            "nullable": true,
            "type": "string"
          },
          "ownership_percentage": {
            "default": null,
            "description": "Beneficial ownership percentage for this individual.",
            "maximum": 100,
            "minimum": 0,
            "nullable": true,
            "type": "integer"
          },
          "passport_last_4": {
            "default": null,
            "description": "Last 4 digits of passport number.",
            "maxLength": 4,
            "minLength": 4,
            "nullable": true,
            "type": "string"
          },
          "phone": {
            "default": null,
            "description": "Phone number in E.164 format.",
            "nullable": true,
            "type": "string"
          },
          "ssn_last_4": {
            "default": null,
            "description": "Last 4 digits of SSN.",
            "maxLength": 4,
            "minLength": 4,
            "nullable": true,
            "type": "string"
          },
          "title": {
            "default": null,
            "description": "Job title or role.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiApplicationControllingOfficerParamsRequestBody": {
        "properties": {
          "address": {
            "$ref": "#/components/schemas/ApiApplicationPersonAddressParamsRequestBody",
            "default": null,
            "description": "Residential address.",
            "nullable": true
          },
          "birth_date": {
            "default": null,
            "description": "Date of birth in YYYY-MM-DD format.",
            "nullable": true,
            "type": "string"
          },
          "email": {
            "default": null,
            "description": "Email address.",
            "format": "email",
            "nullable": true,
            "type": "string"
          },
          "first_name": {
            "default": null,
            "description": "First name.",
            "nullable": true,
            "type": "string"
          },
          "is_beneficial_owner": {
            "default": false,
            "description": "Whether this officer is also a beneficial owner. Defaults to false.",
            "type": "boolean"
          },
          "last_name": {
            "default": null,
            "description": "Last name.",
            "nullable": true,
            "type": "string"
          },
          "ownership_percentage": {
            "default": null,
            "description": "Beneficial ownership percentage for this individual.",
            "maximum": 100,
            "minimum": 0,
            "nullable": true,
            "type": "integer"
          },
          "passport_last_4": {
            "default": null,
            "description": "Last 4 digits of passport number.",
            "maxLength": 4,
            "minLength": 4,
            "nullable": true,
            "type": "string"
          },
          "phone": {
            "default": null,
            "description": "Phone number in E.164 format.",
            "nullable": true,
            "type": "string"
          },
          "ssn_last_4": {
            "default": null,
            "description": "Last 4 digits of SSN.",
            "maxLength": 4,
            "minLength": 4,
            "nullable": true,
            "type": "string"
          },
          "title": {
            "default": null,
            "description": "Job title or role.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiApplicationCreateParamsRequestBody": {
        "example": {
          "applicant": {
            "email": "jane@acmeplumbing.com",
            "first_name": "Jane",
            "last_name": "Doe",
            "phone": "+14155550124"
          },
          "application_type": "RAMP_SUITE",
          "beneficial_owners": [
            {
              "address": {
                "city": "San Francisco",
                "country": "US",
                "postal_code": "94104",
                "state": "CA",
                "street_address": "200 Pine St"
              },
              "birth_date": "1982-11-04",
              "email": "john@acmeplumbing.com",
              "first_name": "John",
              "last_name": "Smith",
              "ownership_percentage": 40,
              "phone": "+14155550125",
              "ssn_last_4": "5678",
              "title": "Co-Founder"
            }
          ],
          "business": {
            "address": {
              "apt_suite": "Suite 500",
              "city": "San Francisco",
              "postal_code": "94105",
              "state": "CA",
              "street_address": "123 Market St"
            },
            "business_description": "Residential and commercial plumbing services",
            "business_name_dba": null,
            "business_name_legal": "Acme Plumbing LLC",
            "business_name_on_card": null,
            "business_website": "https://acmeplumbing.com",
            "incorporation": {
              "date_of_incorporation": "2018-06-15",
              "ein_number": "12-3456789",
              "entity_type": "LLC",
              "state_of_incorporation": "CA"
            },
            "phone": "+14155550123"
          },
          "controlling_officer": {
            "address": {
              "city": "San Francisco",
              "country": "US",
              "postal_code": "94105",
              "state": "CA",
              "street_address": "123 Market St"
            },
            "birth_date": "1985-03-12",
            "email": "jane@acmeplumbing.com",
            "first_name": "Jane",
            "is_beneficial_owner": true,
            "last_name": "Doe",
            "ownership_percentage": 60,
            "phone": "+14155550124",
            "ssn_last_4": "1234",
            "title": "Owner"
          },
          "financial_details": {
            "estimated_monthly_ap_spend_amount": 25000,
            "estimated_monthly_spend_amount": 50000
          },
          "lead_referral_partner_channel": "cli",
          "lead_referral_partner_code": "cofounder_co",
          "manual_bank_account": {
            "account_number": "12345",
            "account_subtype": "checking",
            "balance": "12345.00",
            "routing_number": "123456780"
          },
          "oauth_authorize_params": {
            "redirect_uri": "https://partner.example.com/oauth/callback",
            "state": "abc123"
          },
          "ownership_acknowledgement": "CONFIRM_ALL_MAJOR_OWNERS_ENTERED"
        },
        "properties": {
          "applicant": {
            "$ref": "#/components/schemas/ApiApplicationApplicantParamsRequestBody",
            "description": "Information about the applicant, the person who completes the application in Ramp and becomes the business owner once it is approved."
          },
          "application_type": {
            "default": "RAMP_SUITE",
            "description": "Type of financing application to create.",
            "enum": [
              "BILL_PAY_ONLY",
              "RAMP_SUITE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "BILL_PAY_ONLY": "Application is for Bill Pay only",
              "RAMP_SUITE": "Application is for Ramp Suite, including card and bill pay"
            }
          },
          "beneficial_owners": {
            "description": "Beneficial owners of the business.",
            "items": {
              "$ref": "#/components/schemas/ApiApplicationPersonParamsRequestBody"
            },
            "nullable": true,
            "type": "array"
          },
          "business": {
            "$ref": "#/components/schemas/ApiApplicationBusinessParamsRequestBody",
            "default": null,
            "description": "Business details.",
            "nullable": true
          },
          "controlling_officer": {
            "$ref": "#/components/schemas/ApiApplicationControllingOfficerParamsRequestBody",
            "default": null,
            "description": "The controlling officer of the business.",
            "nullable": true
          },
          "country": {
            "default": "US",
            "description": "Country where the business is incorporated. GB applications only accept applicant details and basic business information; the applicant completes the rest of the application in Ramp.",
            "enum": [
              "GB",
              "US"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "GB": "United Kingdom",
              "US": "United States"
            }
          },
          "financial_details": {
            "$ref": "#/components/schemas/ApiApplicationFinancialDetailsParamsRequestBody",
            "default": null,
            "description": "Financial details for underwriting.",
            "nullable": true
          },
          "lead_referral_partner_channel": {
            "default": null,
            "description": "Optional unverified agent harness that reported the lead_referral_partner_code.",
            "enum": [
              "api",
              "cli",
              "mcp"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "api": "Partner code supplied through the Ramp API.",
              "cli": "Partner code supplied through the Ramp CLI agent harness.",
              "mcp": "Partner code supplied through a Model Context Protocol (MCP) agent harness."
            }
          },
          "lead_referral_partner_code": {
            "default": null,
            "description": "Optional unverified agent-reported Ramp partner code for agent financing application lead attribution.",
            "enum": [
              "base44",
              "clerky",
              "cofounder_co",
              "every",
              "nous_research_hermes",
              "paperclip",
              "south_park_commons",
              "yc"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "base44": "Base44",
              "clerky": "Clerky",
              "cofounder_co": "Cofounder.co",
              "every": "Every",
              "nous_research_hermes": "Hermes by Nous Research",
              "paperclip": "Paperclip",
              "south_park_commons": "South Park Commons",
              "yc": "Y Combinator"
            }
          },
          "manual_bank_account": {
            "$ref": "#/components/schemas/ApiApplicationManualBankAccountUpdateParamsRequestBody",
            "default": null,
            "description": "Manual bank account to add for underwriting.",
            "nullable": true
          },
          "oauth_authorize_params": {
            "$ref": "#/components/schemas/ApiApplicationOAuthAuthorizeParamsRequestBody",
            "default": null,
            "description": "OAuth authorization parameters. If provided, the user will be redirected to an OAuth consent screen after accepting the invite.",
            "nullable": true
          },
          "ownership_acknowledgement": {
            "default": null,
            "description": "Ownership acknowledgement confirming whether all 25%+ beneficial owners have been supplied.",
            "enum": [
              "CONFIRM_ALL_MAJOR_OWNERS_ENTERED",
              "CONFIRM_NO_INDIVIDUAL_OWNS_25_PCT"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "CONFIRM_ALL_MAJOR_OWNERS_ENTERED": "Applicant confirms all individuals who own 25% or more of the business have been provided",
              "CONFIRM_NO_INDIVIDUAL_OWNS_25_PCT": "Applicant confirms no individual owns 25% or more of the business"
            }
          }
        },
        "required": [
          "applicant"
        ],
        "type": "object"
      },
      "ApiApplicationFinancialDetailsParams": {
        "properties": {
          "estimated_monthly_ap_spend_amount": {
            "default": null,
            "description": "Estimated monthly accounts payable spend amount in dollars.",
            "nullable": true,
            "type": "integer"
          },
          "estimated_monthly_spend_amount": {
            "default": null,
            "description": "Estimated monthly card spend amount in dollars.",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "ApiApplicationFinancialDetailsParamsRequestBody": {
        "properties": {
          "estimated_monthly_ap_spend_amount": {
            "default": null,
            "description": "Estimated monthly accounts payable spend amount in dollars.",
            "nullable": true,
            "type": "integer"
          },
          "estimated_monthly_spend_amount": {
            "default": null,
            "description": "Estimated monthly card spend amount in dollars.",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "ApiApplicationIncorporationParams": {
        "properties": {
          "date_of_incorporation": {
            "default": null,
            "description": "Date of incorporation in YYYY-MM-DD format.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "ein_number": {
            "default": null,
            "description": "Employer Identification Number.",
            "nullable": true,
            "type": "string"
          },
          "entity_type": {
            "default": null,
            "description": "Type of business entity.",
            "enum": [
              "COOPERATIVE",
              "CORPORATION",
              "LLC",
              "NON_PROFIT_CORPORATION",
              "OTHER",
              "PARTNERSHIP",
              "SOLE_PROPRIETORSHIP"
            ],
            "nullable": true,
            "type": "string"
          },
          "state_of_incorporation": {
            "default": null,
            "description": "Two-letter state code where the business is incorporated.",
            "maxLength": 2,
            "minLength": 2,
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiApplicationIncorporationParamsRequestBody": {
        "properties": {
          "date_of_incorporation": {
            "default": null,
            "description": "Date of incorporation in YYYY-MM-DD format.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "ein_number": {
            "default": null,
            "description": "Employer Identification Number.",
            "nullable": true,
            "type": "string"
          },
          "entity_type": {
            "default": null,
            "description": "Type of business entity.",
            "enum": [
              "COOPERATIVE",
              "CORPORATION",
              "LLC",
              "NON_PROFIT_CORPORATION",
              "OTHER",
              "PARTNERSHIP",
              "SOLE_PROPRIETORSHIP"
            ],
            "nullable": true,
            "type": "string"
          },
          "state_of_incorporation": {
            "default": null,
            "description": "Two-letter state code where the business is incorporated.",
            "maxLength": 2,
            "minLength": 2,
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiApplicationManualBankAccountUpdateParamsRequestBody": {
        "properties": {
          "account_number": {
            "description": "Bank account number.",
            "type": "string"
          },
          "account_subtype": {
            "description": "Bank account subtype, such as checking or savings.",
            "type": "string"
          },
          "balance": {
            "description": "Current account balance.",
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "routing_number": {
            "description": "ABA routing number.",
            "type": "string"
          }
        },
        "required": [
          "account_number",
          "account_subtype",
          "balance",
          "routing_number"
        ],
        "type": "object"
      },
      "ApiApplicationOAuthAuthorizeParamsRequestBody": {
        "properties": {
          "code_challenge": {
            "default": null,
            "description": "Optional PKCE code challenge. The partner must keep the matching code verifier for token exchange.",
            "nullable": true,
            "pattern": "^[A-Za-z0-9_-]{43}$",
            "type": "string"
          },
          "redirect_uri": {
            "description": "The URI to redirect the user to after accepting the invite.",
            "type": "string"
          },
          "state": {
            "description": "An opaque value used by the client to maintain state between the request and callback.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "redirect_uri",
          "state"
        ],
        "type": "object"
      },
      "ApiApplicationPersonAddressParams": {
        "properties": {
          "apt_suite": {
            "default": null,
            "description": "Apartment or suite number.",
            "nullable": true,
            "type": "string"
          },
          "city": {
            "default": null,
            "description": "City.",
            "nullable": true,
            "type": "string"
          },
          "country": {
            "default": null,
            "description": "Two-letter country code (e.g. US).",
            "maxLength": 2,
            "minLength": 2,
            "nullable": true,
            "type": "string"
          },
          "postal_code": {
            "default": null,
            "description": "Postal code.",
            "nullable": true,
            "type": "string"
          },
          "state": {
            "default": null,
            "description": "Two-letter state code (e.g. CA).",
            "maxLength": 2,
            "minLength": 2,
            "nullable": true,
            "type": "string"
          },
          "street_address": {
            "default": null,
            "description": "Street address.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiApplicationPersonAddressParamsRequestBody": {
        "properties": {
          "apt_suite": {
            "default": null,
            "description": "Apartment or suite number.",
            "nullable": true,
            "type": "string"
          },
          "city": {
            "default": null,
            "description": "City.",
            "nullable": true,
            "type": "string"
          },
          "country": {
            "default": null,
            "description": "Two-letter country code (e.g. US).",
            "maxLength": 2,
            "minLength": 2,
            "nullable": true,
            "type": "string"
          },
          "postal_code": {
            "default": null,
            "description": "Postal code.",
            "nullable": true,
            "type": "string"
          },
          "state": {
            "default": null,
            "description": "Two-letter state code (e.g. CA).",
            "maxLength": 2,
            "minLength": 2,
            "nullable": true,
            "type": "string"
          },
          "street_address": {
            "default": null,
            "description": "Street address.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiApplicationPersonParams": {
        "properties": {
          "address": {
            "$ref": "#/components/schemas/ApiApplicationPersonAddressParams",
            "default": null,
            "description": "Residential address.",
            "nullable": true
          },
          "birth_date": {
            "default": null,
            "description": "Date of birth in YYYY-MM-DD format.",
            "nullable": true,
            "type": "string"
          },
          "email": {
            "default": null,
            "description": "Email address.",
            "format": "email",
            "nullable": true,
            "type": "string"
          },
          "first_name": {
            "default": null,
            "description": "First name.",
            "nullable": true,
            "type": "string"
          },
          "last_name": {
            "default": null,
            "description": "Last name.",
            "nullable": true,
            "type": "string"
          },
          "ownership_percentage": {
            "default": null,
            "description": "Beneficial ownership percentage for this individual.",
            "maximum": 100,
            "minimum": 0,
            "nullable": true,
            "type": "integer"
          },
          "passport_last_4": {
            "default": null,
            "description": "Last 4 digits of passport number.",
            "maxLength": 4,
            "minLength": 4,
            "nullable": true,
            "type": "string"
          },
          "phone": {
            "default": null,
            "description": "Phone number in E.164 format.",
            "nullable": true,
            "type": "string"
          },
          "ssn_last_4": {
            "default": null,
            "description": "Last 4 digits of SSN.",
            "maxLength": 4,
            "minLength": 4,
            "nullable": true,
            "type": "string"
          },
          "title": {
            "default": null,
            "description": "Job title or role.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiApplicationPersonParamsRequestBody": {
        "properties": {
          "address": {
            "$ref": "#/components/schemas/ApiApplicationPersonAddressParamsRequestBody",
            "default": null,
            "description": "Residential address.",
            "nullable": true
          },
          "birth_date": {
            "default": null,
            "description": "Date of birth in YYYY-MM-DD format.",
            "nullable": true,
            "type": "string"
          },
          "email": {
            "default": null,
            "description": "Email address.",
            "format": "email",
            "nullable": true,
            "type": "string"
          },
          "first_name": {
            "default": null,
            "description": "First name.",
            "nullable": true,
            "type": "string"
          },
          "last_name": {
            "default": null,
            "description": "Last name.",
            "nullable": true,
            "type": "string"
          },
          "ownership_percentage": {
            "default": null,
            "description": "Beneficial ownership percentage for this individual.",
            "maximum": 100,
            "minimum": 0,
            "nullable": true,
            "type": "integer"
          },
          "passport_last_4": {
            "default": null,
            "description": "Last 4 digits of passport number.",
            "maxLength": 4,
            "minLength": 4,
            "nullable": true,
            "type": "string"
          },
          "phone": {
            "default": null,
            "description": "Phone number in E.164 format.",
            "nullable": true,
            "type": "string"
          },
          "ssn_last_4": {
            "default": null,
            "description": "Last 4 digits of SSN.",
            "maxLength": 4,
            "minLength": 4,
            "nullable": true,
            "type": "string"
          },
          "title": {
            "default": null,
            "description": "Job title or role.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiApplicationResource": {
        "example": {
          "applicant": {
            "email": "jane@acmeplumbing.com",
            "first_name": "Jane",
            "last_name": "Doe",
            "phone": "+14155550124"
          },
          "application_type": "RAMP_SUITE",
          "beneficial_owners": [
            {
              "address": {
                "city": "San Francisco",
                "country": "US",
                "postal_code": "94104",
                "state": "CA",
                "street_address": "200 Pine St"
              },
              "birth_date": "1982-11-04",
              "email": "john@acmeplumbing.com",
              "first_name": "John",
              "last_name": "Smith",
              "ownership_percentage": 40,
              "phone": "+14155550125",
              "ssn_last_4": "5678",
              "title": "Co-Founder"
            }
          ],
          "business": {
            "address": {
              "apt_suite": "Suite 500",
              "city": "San Francisco",
              "postal_code": "94105",
              "state": "CA",
              "street_address": "123 Market St"
            },
            "business_description": "Residential and commercial plumbing services",
            "business_name_dba": null,
            "business_name_legal": "Acme Plumbing LLC",
            "business_name_on_card": null,
            "business_website": "https://acmeplumbing.com",
            "incorporation": {
              "date_of_incorporation": "2018-06-15",
              "ein_number": "12-3456789",
              "entity_type": "LLC",
              "state_of_incorporation": "CA"
            },
            "phone": "+14155550123"
          },
          "controlling_officer": {
            "address": {
              "city": "San Francisco",
              "country": "US",
              "postal_code": "94105",
              "state": "CA",
              "street_address": "123 Market St"
            },
            "birth_date": "1985-03-12",
            "email": "jane@acmeplumbing.com",
            "first_name": "Jane",
            "is_beneficial_owner": true,
            "last_name": "Doe",
            "ownership_percentage": 60,
            "phone": "+14155550124",
            "ssn_last_4": "1234",
            "title": "Owner"
          },
          "financial_details": {
            "estimated_monthly_ap_spend_amount": 25000,
            "estimated_monthly_spend_amount": 50000
          },
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "incorporation_status": "NOT_INCORPORATED",
          "needs_incorporation": false,
          "open_ramp_checking_account": true,
          "status": "IN_REVIEW"
        },
        "properties": {
          "applicant": {
            "$ref": "#/components/schemas/ApiApplicationApplicantParams",
            "description": "Information about the applicant, the person who completes the application in Ramp and becomes the business owner once it is approved."
          },
          "application_type": {
            "description": "Type of financing application.",
            "enum": [
              "BILL_PAY_ONLY",
              "RAMP_SUITE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "BILL_PAY_ONLY": "Application is for Bill Pay only",
              "RAMP_SUITE": "Application is for Ramp Suite, including card and bill pay"
            }
          },
          "beneficial_owners": {
            "description": "Beneficial owners of the business.",
            "items": {
              "$ref": "#/components/schemas/ApiApplicationPersonParams"
            },
            "nullable": true,
            "type": "array"
          },
          "business": {
            "$ref": "#/components/schemas/ApiApplicationBusinessParams",
            "description": "Business details.",
            "nullable": true
          },
          "controlling_officer": {
            "$ref": "#/components/schemas/ApiApplicationControllingOfficerParams",
            "description": "The controlling officer of the business.",
            "nullable": true
          },
          "financial_details": {
            "$ref": "#/components/schemas/ApiApplicationFinancialDetailsParams",
            "description": "Financial details for underwriting.",
            "nullable": true
          },
          "id": {
            "description": "Unique identifier of the application.",
            "format": "uuid",
            "type": "string"
          },
          "incorporation_status": {
            "description": "Incorporation status for the business. NOT_INCORPORATED when the business has no incorporation record.",
            "enum": [
              "FORMED",
              "INCORPORATED_EXTERNALLY",
              "INCORPORATING",
              "NOT_INCORPORATED"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "FORMED": "The entity has been formed and its details have been backfilled onto the application.",
              "INCORPORATED_EXTERNALLY": "The business supplied its own EIN; it was incorporated outside of Ramp.",
              "INCORPORATING": "The business is in the process of incorporating through Ramp.",
              "NOT_INCORPORATED": "The business has no incorporation record with Ramp."
            }
          },
          "needs_incorporation": {
            "description": "Whether the business still needs to be incorporated through Ramp. Reflects the needs_incorporation flag supplied at application creation.",
            "type": "boolean"
          },
          "open_ramp_checking_account": {
            "description": "Whether the applicant is applying for a Ramp checking account. For Agent FA, this is always true and external bank linking is unavailable.",
            "type": "boolean"
          },
          "status": {
            "description": "Current status of the financing application.",
            "enum": [
              "APPROVED",
              "FOLLOW_UPS_REQUIRED",
              "IN_REVIEW",
              "REJECTED",
              "STARTED",
              "WITHDRAWN"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "APPROVED": "Application has been approved",
              "FOLLOW_UPS_REQUIRED": "Application requires follow-up actions",
              "IN_REVIEW": "Application is currently under review by Ramp",
              "REJECTED": "Application has been rejected",
              "STARTED": "Application has been started but not yet submitted for review",
              "WITHDRAWN": "Application has been withdrawn by the applicant"
            }
          }
        },
        "required": [
          "applicant",
          "beneficial_owners",
          "business",
          "controlling_officer",
          "financial_details",
          "id",
          "incorporation_status",
          "needs_incorporation",
          "open_ramp_checking_account",
          "status"
        ],
        "type": "object"
      },
      "ApiBankAccountResource": {
        "properties": {
          "account_name": {
            "description": "Name of the bank account",
            "type": "string"
          },
          "account_number_last_four": {
            "description": "Last four digits of the account number",
            "type": "string"
          },
          "account_subtype": {
            "description": "Bank account subtype",
            "type": "string"
          },
          "connection_provider": {
            "description": "Bank account connection provider.",
            "enum": [
              "finicity",
              "manual",
              "plaid",
              "ramp_brokerage",
              "ramp_wallet",
              "teller"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "finicity": "Bank account was connected through Finicity",
              "manual": "Bank account was connected using manually provided account details",
              "plaid": "Bank account was connected through Plaid",
              "ramp_brokerage": "Bank account is a Ramp brokerage account",
              "ramp_wallet": "Bank account is a Ramp checking account",
              "teller": "Bank account was connected through Teller"
            }
          },
          "financial_institution_name": {
            "description": "Name of the associated financial institution",
            "nullable": true,
            "type": "string"
          },
          "has_ach_details": {
            "description": "Whether Ramp has ACH routing and account numbers for the bank account. External accounts without ACH details cannot fund USD payments. Ramp checking accounts (`connection_provider` of `ramp_wallet`) can fund payments even when this is false.",
            "type": "boolean"
          },
          "id": {
            "description": "Unique identifier of the bank account",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "account_name",
          "account_number_last_four",
          "account_subtype",
          "connection_provider",
          "financial_institution_name",
          "has_ach_details",
          "id"
        ],
        "type": "object",
        "x-resource-name": "bank_accounts"
      },
      "ApiBillAssociationParamsRequestBody": {
        "example": {
          "bill_id": "1cc4b57c-fe4a-4425-90f1-9019d06376b3",
          "label": "Insurance bill",
          "reverse_label": "Rental bill"
        },
        "properties": {
          "bill_id": {
            "description": "Unique identifier of the bill to associate.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "bills",
              "type": "many-to-many"
            }
          },
          "label": {
            "description": "Label shown on this bill for the associated bill (e.g. 'Insurance bill').",
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          },
          "reverse_label": {
            "description": "Label shown on the associated bill for this bill (e.g. 'Rental bill').",
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "bill_id",
          "label",
          "reverse_label"
        ],
        "type": "object"
      },
      "ApiBillAttachmentResource": {
        "properties": {
          "attachment_type": {
            "description": "Type of attachment.",
            "enum": [
              "EMAIL",
              "FILE",
              "INVOICE",
              "VENDOR_CREDIT"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "EMAIL": "An email associated with the bill.",
              "FILE": "A supporting file attached to the bill.",
              "INVOICE": "The invoice document for the bill.",
              "VENDOR_CREDIT": "A vendor credit document."
            }
          },
          "id": {
            "description": "Unique identifier of the bill attachment.",
            "format": "uuid",
            "type": "string"
          },
          "url": {
            "description": "Pre-signed URL to download the attachment.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "attachment_type",
          "id",
          "url"
        ],
        "type": "object",
        "x-resource-name": "bill_attachments"
      },
      "ApiBillAttachmentResponse": {
        "properties": {
          "id": {
            "description": "Attachment UUID",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "x-resource-name": "bill_attachments"
      },
      "ApiBillAttachmentUploadInputRequestBody": {
        "description": "Pydantic input model for bill attachment upload",
        "example": {
          "attachment_type": "INVOICE"
        },
        "properties": {
          "attachment_type": {
            "$ref": "#/components/schemas/BillPayAttachmentTypeRequestBody",
            "description": "Type of attachment. Supported values: INVOICE, FILE. Set to 'INVOICE' for the actual invoice on a bill."
          },
          "file": {
            "$ref": "#/components/schemas/UploadedFileRequestBody"
          }
        },
        "required": [
          "attachment_type",
          "file"
        ],
        "title": "ApiBillAttachmentUploadInput",
        "type": "object"
      },
      "ApiBillHoldParamsRequestBody": {
        "example": {
          "reason": "Awaiting additional review"
        },
        "properties": {
          "reason": {
            "default": null,
            "description": "Optional reason for placing the bill on hold.",
            "nullable": true,
            "title": "Reason",
            "type": "string"
          }
        },
        "title": "ApiBillHoldParams",
        "type": "object"
      },
      "ApiBillInventoryLineItem": {
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the line item.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the line item, equal to the product of unit quantity and unit price, represented in the lowest denomination of the currency (e.g., cents for USD).",
            "readOnly": true
          },
          "id": {
            "description": "Unique identifier of the inventory line item. Stable across bill updates and draft-to-bill conversion.",
            "format": "uuid",
            "type": "string"
          },
          "item_receipt_line_item_ids": {
            "description": "List of unique identifiers for item receipt line items associated with this bill inventory line item through the purchase order line item",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "memo": {
            "description": "Memo of the line item",
            "type": "string"
          },
          "purchase_order_line_item_id": {
            "description": "Unique identifier of the matched purchase order line item, if any",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "quantity": {
            "description": "Quantity of the line item",
            "type": "number"
          },
          "unit_price": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Unit price of the line item, represented in the lowest denomination of the currency (e.g., cents for USD).",
            "readOnly": true
          },
          "withholding_line_item": {
            "$ref": "#/components/schemas/ApiBillWithholdingLineItem",
            "description": "Retainage withholding details for the inventory line item, if applicable.",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "accounting_field_selections",
          "amount",
          "id",
          "item_receipt_line_item_ids",
          "purchase_order_line_item_id",
          "quantity",
          "unit_price"
        ],
        "type": "object"
      },
      "ApiBillLineItem": {
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the line item.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "readOnly": true,
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the line item, represented in the lowest denomination of the currency (e.g., cents for USD).",
            "readOnly": true
          },
          "id": {
            "description": "Unique identifier of the line item. Stable across bill updates and draft-to-bill conversion.",
            "format": "uuid",
            "type": "string"
          },
          "item_receipt_line_item_ids": {
            "description": "List of unique identifiers for item receipt line items associated with this bill line item through the purchase order line item",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "memo": {
            "description": "Memo of the line item",
            "type": "string"
          },
          "purchase_order_line_item_id": {
            "description": "Unique identifier of the matched purchase order line item, if any",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "withholding_line_item": {
            "$ref": "#/components/schemas/ApiBillWithholdingLineItem",
            "description": "Retainage withholding details for the line item, if applicable.",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "accounting_field_selections",
          "amount",
          "id",
          "item_receipt_line_item_ids",
          "purchase_order_line_item_id"
        ],
        "type": "object"
      },
      "ApiBillOwner": {
        "properties": {
          "first_name": {
            "description": "Bill owner's first name.",
            "type": "string"
          },
          "id": {
            "description": "Bill owner's ID.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "last_name": {
            "description": "Bill owner's last name.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "ApiBillPayment": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Paid amount of the bill."
          },
          "bank_debit_trace_id": {
            "$ref": "#/components/schemas/ApiBillTraceId",
            "description": "The bank-facing accountability reference for the business bank debit leg of this payment, when available.",
            "readOnly": true
          },
          "customer_friendly_payment_id": {
            "description": "Customer-friendly payment identifier for non-card payment methods, if available. Bills sharing the same value belong to the same payment or batch payment.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "details": {
            "$ref": "#/components/schemas/ApiPaymentDetailsResource",
            "description": "Additional payment details specific to payment method."
          },
          "effective_date": {
            "description": "For non-card payment methods only, the date the payment is actually initiated.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the payment. Bills sharing the same payment ID belong to the same batch payment.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "payment_date": {
            "description": "For non-card payment methods, the scheduled initiation date. For card payment methods, the scheduled payment or card-delivery date until a transaction is associated, then the transaction date. This field does not indicate settlement; use details.transaction_ids and the Transactions API.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "payment_method": {
            "enum": [
              "ACH",
              "AUTOMATIC_CARD_PAYMENT",
              "CARD",
              "CHECK",
              "CRYPTO_WALLET_TRANSFER",
              "DIRECT_DEBIT",
              "DOMESTIC_WIRE",
              "EARLY_PAYMENT_DISCOUNT",
              "FED_NOW",
              "INTERNATIONAL",
              "LOCAL_BANK_TRANSFER",
              "ONE_TIME_CARD",
              "ONE_TIME_CARD_DELIVERY",
              "PAID_MANUALLY",
              "RTP",
              "SWIFT",
              "UNSPECIFIED",
              "VENDOR_CREDIT"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "ACH": "A US ACH bank transfer.",
              "AUTOMATIC_CARD_PAYMENT": "A card payment that Ramp automatically initiates for the bill.",
              "CARD": "A payment made with an existing Ramp card.",
              "CHECK": "A paper check payment mailed to the vendor.",
              "CRYPTO_WALLET_TRANSFER": "A transfer to a cryptocurrency wallet.",
              "DIRECT_DEBIT": "A direct debit from a Ramp account.",
              "DOMESTIC_WIRE": "A US domestic wire transfer.",
              "EARLY_PAYMENT_DISCOUNT": "A noncash contribution from an early payment discount.",
              "FED_NOW": "An instant FedNow bank transfer.",
              "INTERNATIONAL": "An international bank transfer.",
              "LOCAL_BANK_TRANSFER": "A local bank transfer in a non-USD currency.",
              "ONE_TIME_CARD": "A single-use card payment where the business user pays the vendor directly.",
              "ONE_TIME_CARD_DELIVERY": "A single-use card payment where Ramp sends card details to the vendor contact.",
              "PAID_MANUALLY": "A payment recorded as paid outside of Ramp.",
              "RTP": "A real-time payment bank transfer.",
              "SWIFT": "An international USD-denominated SWIFT bank transfer.",
              "UNSPECIFIED": "No payment method has been selected.",
              "VENDOR_CREDIT": "A payment satisfied with vendor credit."
            }
          },
          "trace_id": {
            "$ref": "#/components/schemas/ApiBillTraceId",
            "description": "For non-card payment methods only, the trace ID for this bill. This field is only returned in the GET /bills/{bill_id} response body (not in the GET /bills paginated query).",
            "nullable": true
          }
        },
        "required": [
          "amount",
          "customer_friendly_payment_id",
          "details",
          "effective_date",
          "id",
          "payment_date",
          "payment_method",
          "trace_id"
        ],
        "type": "object"
      },
      "ApiBillTraceId": {
        "properties": {
          "descriptor": {
            "description": "Human-readable description of the trace ID. For example, 'Check Number' or 'ACH Trace ID'.",
            "type": "string"
          },
          "trace_id": {
            "description": "The unique reference ID to the payment for this bill.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiBillVendor": {
        "properties": {
          "id": {
            "description": "Unique identifier of the vendor.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "one-to-many"
            }
          },
          "name": {
            "description": "Name of the vendor.",
            "type": "string"
          },
          "remote_code": {
            "description": "Code of the vendor; usually it is a unique identifier for the vendor in the remote ERP system.",
            "type": "string"
          },
          "remote_id": {
            "description": "External ID that uniquely identifies the vendor on the client's side.",
            "type": "string"
          },
          "remote_name": {
            "description": "Name of the vendor.",
            "type": "string"
          },
          "type": {
            "enum": [
              "BUSINESS",
              "INDIVIDUAL"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "ApiBillWithholdingLineItem": {
        "properties": {
          "gross_amount": {
            "$ref": "#/components/schemas/ApiAmount",
            "description": "Gross amount of the line item before retainage withholding."
          },
          "withholding_amount": {
            "$ref": "#/components/schemas/ApiAmount",
            "description": "Retainage withholding amount for the line item."
          },
          "withholding_percentage": {
            "description": "Retainage withholding percentage for the line item.",
            "format": "decimal",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "gross_amount",
          "withholding_amount",
          "withholding_percentage"
        ],
        "type": "object"
      },
      "ApiBillingStatementPeriod": {
        "properties": {
          "end": {
            "default": null,
            "description": "End date of the billing statement period, or null if the period is still open.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "start": {
            "description": "Start date of the billing statement period.",
            "format": "date",
            "type": "string"
          }
        },
        "required": [
          "end",
          "start"
        ],
        "type": "object"
      },
      "ApiBillingStatementResource": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/ApiAmount",
            "description": "The total amount due for this billing statement.",
            "readOnly": true
          },
          "id": {
            "description": "Unique identifier of the billing statement.",
            "format": "uuid",
            "type": "string"
          },
          "statement_period": {
            "$ref": "#/components/schemas/ApiBillingStatementPeriod",
            "description": "The billing statement period date range.",
            "readOnly": true
          },
          "statement_url": {
            "description": "Presigned URL to download the billing statement PDF, or null if unavailable.",
            "format": "url",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "amount",
          "id",
          "statement_period",
          "statement_url"
        ],
        "type": "object",
        "x-resource-name": "billing_statements"
      },
      "ApiBooleanFieldAnswerRequestBody": {
        "description": "Answer for a yes/no field.",
        "properties": {
          "answer_type": {
            "description": "Must be boolean.",
            "enum": [
              "boolean"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "value": {
            "description": "Boolean answer for this field.",
            "title": "Value",
            "type": "boolean"
          }
        },
        "required": [
          "answer_type",
          "field_id",
          "value"
        ],
        "title": "ApiBooleanFieldAnswer",
        "type": "object"
      },
      "ApiCardFulfillment": {
        "properties": {
          "card_personalization": {
            "$ref": "#/components/schemas/CardPersonalization"
          },
          "cardholder_uuid": {
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "fulfillment_status": {
            "description": "Fulfillment status of the card",
            "enum": [
              "DELIVERED",
              "DIGITALLY_PRESENTED",
              "ISSUED",
              "ORDERED",
              "REJECTED",
              "SHIPPED"
            ],
            "type": "string"
          },
          "shipping": {
            "$ref": "#/components/schemas/CardShipping"
          },
          "shipping_date": {
            "description": "Date on which the card is shipped out, presented in ISO8601 format",
            "format": "date-time",
            "type": "string"
          },
          "shipping_eta": {
            "description": "Estimated arrival time, presented in ISO8601 format",
            "format": "date-time",
            "type": "string"
          },
          "shipping_tracking_url": {
            "description": "Tracking url",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiCardPaymentDetailsResource": {
        "properties": {
          "fund_id": {
            "description": "Unique identifier of the fund associated with this bill payment.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "funds",
              "type": "many-to-one"
            }
          },
          "spend_limit_id": {
            "deprecated": true,
            "description": "Alias of fund_id. The fund to which this bill payment is attributed, if it exists.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "limits",
              "type": "many-to-one"
            }
          },
          "transaction_ids": {
            "description": "Transaction IDs associated with this card bill payment, including pre-matched and automatically matched transactions once cleared. Bill is marked paid once transaction matched and prerequisite bill and payment approvals are complete.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ApiCardSpendingRestrictionsDump": {
        "properties": {
          "amount": {
            "deprecated": true,
            "description": "Deprecated. Use `total_amount`.",
            "type": "number"
          },
          "auto_lock_date": {
            "description": "Date to automatically lock the card. Note that this is different from the actual card expiration date. It conforms to ISO8601 format",
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "blocked_categories": {
            "description": "List of [Ramp Category Codes](/developer-api/v1/overview/conventions#ramp-category-codes) blocked for this card.",
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "categories": {
            "description": "List of [Ramp Category Codes](/developer-api/v1/overview/conventions#ramp-category-codes) this card is restricted to.",
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "interval": {
            "description": "Time interval to apply limit to.",
            "enum": [
              "ANNUAL",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ANNUAL": "The spend limit resets on an annual cycle based on the request or fund start date.",
              "DAILY": "The spend limit resets daily.",
              "MONTHLY": "The spend limit resets monthly.",
              "QUARTERLY": "The spend limit resets every three months.",
              "TERTIARY": "The spend limit resets every four months.",
              "TOTAL": "The spend limit does not reset.",
              "WEEKLY": "The spend limit resets weekly.",
              "YEARLY": "The spend limit resets on the calendar year."
            }
          },
          "suspended": {
            "description": "Whether the card has been locked.",
            "type": "boolean"
          },
          "total_amount": {
            "$ref": "#/components/schemas/ApiAmount",
            "description": "Replaces legacy `amount`. Amount limit total per interval, including currency. Falls back to USD when the restriction does not specify a currency.",
            "nullable": true,
            "readOnly": true
          },
          "total_transaction_amount_limit": {
            "$ref": "#/components/schemas/ApiAmount",
            "description": "Replaces legacy `transaction_amount_limit`. Max amount limit per transaction, including currency. Falls back to USD when the restriction does not specify a currency.",
            "nullable": true,
            "readOnly": true
          },
          "transaction_amount_limit": {
            "deprecated": true,
            "description": "Deprecated. Use `total_transaction_amount_limit`.",
            "type": "number"
          }
        },
        "required": [
          "auto_lock_date",
          "total_amount",
          "total_transaction_amount_limit"
        ],
        "type": "object"
      },
      "ApiCardVaultCreationRequestBody": {
        "example": {
          "accounting_rules": [
            {
              "field_id": "3f30896b-cd22-47af-b48a-c6c3068bc780",
              "field_option_id": "d062e221-9c95-47b5-8dc6-d6c881693caf"
            }
          ],
          "allowed_overage_percent_override": "10.00",
          "display_name": "Travel Hotel Booking Purchase",
          "spending_restrictions": {
            "allowed_categories": [
              18,
              20
            ],
            "auto_lock_date": null,
            "interval": "TOTAL",
            "limit": {
              "amount": 500000,
              "currency_code": "USD"
            }
          },
          "user_id": "d8135cfe-0396-4b2d-b2cf-ad809fb04731"
        },
        "properties": {
          "accounting_rules": {
            "description": "Set accounting rules for the limit and card",
            "items": {
              "$ref": "#/components/schemas/SpendLimitAccountingRulesDataRequestBody"
            },
            "type": "array"
          },
          "allowed_overage_percent_override": {
            "description": "Optional fund-level override for the allowed overage percent. This must be a decimal value between 0 and 100, where `10` means 10%. If omitted, the limit inherits from the spend program or business default.",
            "maximum": 100,
            "minimum": 0,
            "nullable": true,
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "display_name": {
            "description": "Cosmetic display name of the limit.",
            "type": "string"
          },
          "spend_program_id": {
            "description": "The id of the associated spend program.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "spend_programs",
              "type": "many-to-one"
            }
          },
          "spending_restrictions": {
            "$ref": "#/components/schemas/ApiSpendingRestrictionsRequestBody",
            "description": "Specifies the spending restrictions. If spend_program_id is passed, this field is ignored and the limit will inherit the spending restrictions of the spend program."
          },
          "user_id": {
            "description": "Unique identifier of the card owner.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "user_id"
        ],
        "type": "object"
      },
      "ApiCheckAddressResourceJsonMode": {
        "description": "An address as it would be printed on a physical check.",
        "properties": {
          "address_line_1": {
            "description": "First delivery line as it would be printed.",
            "title": "Address Line 1",
            "type": "string"
          },
          "address_line_2": {
            "description": "Second delivery line as it would be printed. Empty when the address fits on one line.",
            "title": "Address Line 2",
            "type": "string"
          },
          "city": {
            "description": "City as it would be printed.",
            "title": "City",
            "type": "string"
          },
          "owner_name": {
            "description": "Recipient name as it would be printed.",
            "title": "Owner Name",
            "type": "string"
          },
          "postal_code": {
            "description": "Postal code as it would be printed.",
            "title": "Postal Code",
            "type": "string"
          },
          "state": {
            "description": "Two-letter state abbreviation as it would be printed, or null when the state could not be resolved.",
            "nullable": true,
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "address_line_1",
          "address_line_2",
          "city",
          "owner_name",
          "postal_code",
          "state"
        ],
        "title": "ApiCheckAddressResource",
        "type": "object"
      },
      "ApiCheckPreviewParamsRequestBody": {
        "additionalProperties": false,
        "description": "Request body for POST /developer/v1/payments/check-preview.",
        "example": {
          "address_line_1": "1234 Extraordinary Boulevard, Suite 1200",
          "address_line_2": null,
          "city": "San Francisco",
          "entity_id": "0ef02ad1-824d-4e85-8a59-a78e428bd883",
          "external_invoice_number": "INV-12345",
          "owner_name": "Rocketship Supply Company Incorporated",
          "postal_code": "94105",
          "secondary_owner_line": "c/o Accounts Receivable",
          "state": "California"
        },
        "properties": {
          "address_line_1": {
            "description": "Primary address line of the recipient.",
            "minLength": 1,
            "title": "Address Line 1",
            "type": "string"
          },
          "address_line_2": {
            "default": null,
            "description": "Secondary address line of the recipient.",
            "nullable": true,
            "title": "Address Line 2",
            "type": "string"
          },
          "city": {
            "description": "City of the recipient.",
            "minLength": 1,
            "title": "City",
            "type": "string"
          },
          "entity_id": {
            "default": null,
            "description": "Unique identifier of the entity that would pay. Required when the business has multiple entities, because the entity name is printed in the check memo.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "external_invoice_number": {
            "default": null,
            "description": "The invoice number that would be printed in the check memo.",
            "nullable": true,
            "title": "External Invoice Number",
            "type": "string"
          },
          "owner_name": {
            "description": "Name of the recipient the check is mailed to.",
            "minLength": 1,
            "title": "Owner Name",
            "type": "string"
          },
          "postal_code": {
            "description": "Postal or ZIP code of the recipient.",
            "minLength": 1,
            "title": "Postal Code",
            "type": "string"
          },
          "secondary_owner_line": {
            "default": null,
            "description": "Additional recipient line, such as a care-of name.",
            "nullable": true,
            "title": "Secondary Owner Line",
            "type": "string"
          },
          "state": {
            "description": "State or province of the recipient.",
            "minLength": 1,
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "address_line_1",
          "city",
          "owner_name",
          "postal_code",
          "state"
        ],
        "title": "ApiCheckPreviewParams",
        "type": "object"
      },
      "ApiCheckPreviewResourceJsonMode": {
        "description": "A physical check's recipient address and memo as they would be printed.",
        "example": {
          "address": {
            "address_line_1": "c/o Accounts Receivable",
            "address_line_2": "1234 Extraordinary Boulevard",
            "city": "San Francisco",
            "owner_name": "Rocketship Supply Company Incorporated",
            "postal_code": "94105",
            "state": "CA"
          },
          "memo": "INVOICE #INV-12345 (Rocketship Supply Company)"
        },
        "properties": {
          "address": {
            "$ref": "#/components/schemas/ApiCheckAddressResourceJsonMode",
            "description": "The recipient address as it would be printed."
          },
          "memo": {
            "description": "The memo line as it would be printed.",
            "title": "Memo",
            "type": "string"
          }
        },
        "required": [
          "address",
          "memo"
        ],
        "title": "ApiCheckPreviewResource",
        "type": "object"
      },
      "ApiCommentCreateRequestBody": {
        "example": {
          "mention_user_ids": [
            "1f2e3d4c-5678-49ab-9123-abcdefabcdef",
            "8a4f8b6c-1234-4f5a-9bcd-1a2b3c4d5e6f"
          ],
          "message": "Please review [line-item totals](https://example.com/totals).",
          "message_format": "MARKDOWN"
        },
        "properties": {
          "mention_user_ids": {
            "description": "User IDs to mention in the comment, which will be prepended to the message with @DisplayName",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "message": {
            "description": "The comment message content. When message_format is MARKDOWN, standard Markdown syntax is supported (e.g., [link text](https://example.com) for hyperlinks, **bold**, *italic*).",
            "type": "string"
          },
          "message_format": {
            "default": "PLAIN_TEXT",
            "description": "Format of the message field. PLAIN_TEXT (default) treats the message as plain text. MARKDOWN parses the message as Markdown, enabling rich text features such as hyperlinks ([text](url)), bold (**text**), and italic (*text*).",
            "enum": [
              "MARKDOWN",
              "PLAIN_TEXT"
            ],
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object"
      },
      "ApiCommentResource": {
        "example": {
          "created_at": "2026-05-05T00:00:00Z",
          "id": "e123198c-1fd2-439c-a268-220c2f8fb115",
          "message": "Please review [line-item totals](https://example.com/totals).",
          "user_id": "506a7096-98c0-4ab5-86ef-20c884a78e74"
        },
        "properties": {
          "created_at": {
            "description": "Time at which the comment was created in ISO 8601 format.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the comment.",
            "type": "string"
          },
          "message": {
            "description": "The comment message content.",
            "type": "string"
          },
          "user_id": {
            "description": "Unique identifier of the user who created the comment.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "created_at",
          "id",
          "message",
          "user_id"
        ],
        "type": "object",
        "x-resource-name": "comments"
      },
      "ApiContactFieldAnswerRequestBody": {
        "description": "Answer for a contact field.",
        "properties": {
          "answer_type": {
            "description": "Must be contact.",
            "enum": [
              "contact"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "email": {
            "description": "Contact email address.",
            "title": "Email",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "first_name": {
            "default": null,
            "description": "Optional first name.",
            "nullable": true,
            "title": "First Name",
            "type": "string"
          },
          "last_name": {
            "default": null,
            "description": "Optional last name.",
            "nullable": true,
            "title": "Last Name",
            "type": "string"
          },
          "phone_number": {
            "default": null,
            "description": "Optional phone number.",
            "nullable": true,
            "title": "Phone Number",
            "type": "string"
          }
        },
        "required": [
          "answer_type",
          "email",
          "field_id"
        ],
        "title": "ApiContactFieldAnswer",
        "type": "object"
      },
      "ApiCreateAccountingFieldParamsRequestBody": {
        "properties": {
          "field_external_id": {
            "description": "Remote ID of accounting field. This is the external ID, likely from ERP system.",
            "type": "string"
          },
          "field_option_external_id": {
            "default": null,
            "description": "Remote ID of accounting field option. This is the external ID, likely from ERP system. Required if free_form_text is not provided.",
            "nullable": true,
            "type": "string"
          },
          "free_form_text": {
            "default": null,
            "description": "Free form text for the accounting field selection. For DATE-type fields, use ISO format (YYYY-MM-DD). Required if field_option_external_id is not provided.",
            "minLength": 1,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "field_external_id"
        ],
        "type": "object"
      },
      "ApiCreateBankAccountPaymentParamsRequestBody": {
        "properties": {
          "is_same_day": {
            "default": false,
            "description": "\nEnables same-day delivery for eligible payments. Currently, this functionality is available only for ACH payments.\nSame-day delivery may incur an additional fee. For more details, see the [Ramp Help Center](https://support.ramp.com/hc/en-us/articles/4417836454419-Bill-payment-methods-and-timelines#same-day-delivery).\nTo use same-day delivery via the API, your account must first be enabled for this feature. Please visit https://app.ramp.com/chat?entryVariant=developerSupport to request access before implementing.\n",
            "type": "boolean"
          },
          "payment_arrival_date": {
            "description": "\nThe expected date the payment will arrive in the vendor's bank account.\n\nThe required time and fee to process the payment depends on the payment method. See the [Ramp Help Center](https://support.ramp.com/hc/en-us/articles/4417836454419-Bill-payment-methods-and-timelines) for more information on payment speeds. An error will be thrown if selected date is invalid.\n",
            "format": "date",
            "type": "string"
          },
          "source_bank_account_id": {
            "description": "Unique identifier of the bank account to pay the bill from. Must be associated with the passed business entity and have usage_type=BILL_PAY_BANK_ACCOUNT.",
            "format": "uuid",
            "type": "string"
          },
          "vendor_account_id": {
            "description": "Unique identifier of the vendor account to pay the bill to.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "payment_arrival_date",
          "source_bank_account_id",
          "vendor_account_id"
        ],
        "type": "object"
      },
      "ApiCreateBillInventoryLineItemParamsRequestBody": {
        "properties": {
          "accounting_field_selections": {
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "memo": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "quantity": {
            "minimum": 0,
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "unit_price": {
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "required": [
          "quantity",
          "unit_price"
        ],
        "type": "object"
      },
      "ApiCreateBillLineItemParamsRequestBody": {
        "properties": {
          "accounting_field_selections": {
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "amount": {
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "memo": {
            "default": null,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "amount"
        ],
        "type": "object"
      },
      "ApiCreateBillParamsRequestBody": {
        "example": {
          "accounting_field_selections": [
            {
              "field_external_id": "b3B0aW9uX2lk",
              "field_option_external_id": "aln2l3B0aW9uX2lk"
            }
          ],
          "due_at": "2024-10-15",
          "enable_accounting_sync": true,
          "entity_id": "1cc4b57c-fe4a-4425-90f1-9019d06376b3",
          "inventory_line_items": [
            {
              "accounting_field_selections": [
                {
                  "field_external_id": "aa73laMazi2",
                  "field_option_external_id": "abk3Rkfnls25"
                }
              ],
              "memo": "Pens",
              "quantity": 2.25,
              "unit_price": 55
            }
          ],
          "invoice_currency": "USD",
          "invoice_number": "123",
          "issued_at": "2024-08-15",
          "line_items": [
            {
              "accounting_field_selections": [],
              "amount": 100,
              "memo": "Printing services"
            }
          ],
          "memo": "Office supplies",
          "payment_date": "2024-08-15",
          "payment_details": {
            "payment_arrival_date": "2024-08-18",
            "source_bank_account_id": "6f4ab1c2-3d5e-4f60-8a7b-9012cdef3456",
            "vendor_account_id": "9a1b2c3d-4e5f-4607-8a9b-0c1d2e3f4a5b"
          },
          "payment_method": "ACH",
          "posting_date": null,
          "remote_id": "bo2f1lAnkf3llL",
          "vendor_contact_id": "12f55361-8c7f-42dc-8667-64926d330b80",
          "vendor_id": "c0c89fa8-976e-428d-938d-a5ec89838474",
          "vendor_memo": "Invoice #432 - July 2020"
        },
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the bill.",
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "attachment_id": {
            "default": null,
            "description": "UUID of a previously uploaded file to attach to this bill.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "bill_attachments",
              "type": "many-to-many"
            }
          },
          "due_at": {
            "description": "Due date of the bill.",
            "format": "date",
            "type": "string"
          },
          "enable_accounting_sync": {
            "default": true,
            "description": "A flag you can set to False to prevent this bill from syncing to your ERP. Note: enable_accounting_sync must be True when remote_id is provided.",
            "type": "boolean"
          },
          "entity_id": {
            "description": "Associated business entity.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "inventory_line_items": {
            "description": "List of inventory line items related to the bill.",
            "items": {
              "$ref": "#/components/schemas/ApiCreateBillInventoryLineItemParamsRequestBody"
            },
            "nullable": true,
            "type": "array"
          },
          "invoice_currency": {
            "description": "Currency of the invoice.",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "invoice_number": {
            "description": "The invoice number on the bill.",
            "maxLength": 84,
            "type": "string"
          },
          "issued_at": {
            "description": "Issued date of the bill.",
            "format": "date",
            "type": "string"
          },
          "line_items": {
            "description": "List of line items related to the bill.",
            "items": {
              "$ref": "#/components/schemas/ApiCreateBillLineItemParamsRequestBody"
            },
            "nullable": true,
            "type": "array"
          },
          "memo": {
            "default": null,
            "description": "Memo of the bill.",
            "maxLength": 1000,
            "nullable": true,
            "type": "string"
          },
          "payment_date": {
            "description": "For a non-card bill, the date the payment is scheduled to be initiated. If the requested date is unavailable, such as a weekend, bank holiday, past date, or same-day cutoff miss, Ramp schedules the payment for the next available initiation date.",
            "format": "date",
            "type": "string"
          },
          "payment_details": {
            "$ref": "#/components/schemas/ApiCreateBillPaymentRequestBody",
            "default": null,
            "description": "Payment details for the bill. Expected schema depends on payment_method.",
            "nullable": true
          },
          "payment_method": {
            "default": "UNSPECIFIED",
            "description": "Payment method for the bill. Required unless use_default_payment_method is true.",
            "enum": [
              "ACH",
              "CARD",
              "CHECK",
              "CRYPTO_WALLET_TRANSFER",
              "DOMESTIC_WIRE",
              "INTERNATIONAL",
              "LOCAL_BANK_TRANSFER",
              "ONE_TIME_CARD",
              "ONE_TIME_CARD_DELIVERY",
              "PAID_MANUALLY",
              "SWIFT"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ACH": "A US ACH bank transfer.",
              "CARD": "A payment made with an existing Ramp card.",
              "CHECK": "A paper check payment mailed to the vendor.",
              "CRYPTO_WALLET_TRANSFER": "A transfer to a cryptocurrency wallet.",
              "DOMESTIC_WIRE": "A US domestic wire transfer.",
              "INTERNATIONAL": "An international bank transfer.",
              "LOCAL_BANK_TRANSFER": "A local bank transfer in a non-USD currency.",
              "ONE_TIME_CARD": "A single-use card payment where the business user pays the vendor directly.",
              "ONE_TIME_CARD_DELIVERY": "A single-use card payment where Ramp sends card details to the vendor contact.",
              "PAID_MANUALLY": "A payment recorded as paid outside of Ramp.",
              "SWIFT": "An international USD-denominated SWIFT bank transfer."
            }
          },
          "posting_date": {
            "default": null,
            "description": "The date the bill is posted to the accounting system.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "purchase_order_ids": {
            "description": "Unique identifiers of the purchase orders to match this bill to.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "purchase_orders",
                "type": "many-to-many"
              }
            },
            "type": "array"
          },
          "remote_id": {
            "default": null,
            "description": "An ID that identifies the bill on the client's side. An accounting connection is required and enable_accounting_sync must be True when remote_id is provided. Omit remote_id for bills that will not be synced to an accounting provider.",
            "nullable": true,
            "type": "string"
          },
          "target_payment_arrival_date": {
            "default": null,
            "description": "For a bill created with use_default_payment_method=true, the target vendor arrival date. Ramp uses this date to compute the latest payment initiation date needed to target vendor arrival. If that initiation date is in the past or after today's cutoff, Ramp schedules the next valid initiation date.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "use_default_payment_method": {
            "default": false,
            "description": "When set to true, create the bill using the default payment method configured for the vendor. If set to true, payment_method and payment_details should not be provided.",
            "type": "boolean"
          },
          "use_default_vendor_contact": {
            "default": false,
            "description": "When set to true, create the bill using the default contact configured for the vendor. If set to true, vendor_contact_id should not be provided.",
            "type": "boolean"
          },
          "vendor_contact_id": {
            "default": null,
            "description": "Unique identifier of vendor contact, must be associated with passed vendor. Required unless use_default_vendor_contact is true.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendor_contacts",
              "type": "many-to-one"
            }
          },
          "vendor_id": {
            "description": "Unique identifier of bill vendor.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          },
          "vendor_memo": {
            "default": null,
            "description": "Memo to the vendor.",
            "maxLength": 400,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "due_at",
          "entity_id",
          "invoice_currency",
          "invoice_number",
          "issued_at",
          "vendor_id"
        ],
        "type": "object"
      },
      "ApiCreateBillPaymentRequestBody": {
        "discriminator": {
          "mapping": {
            "ACH": "#/components/schemas/ApiCreateBankAccountPaymentParamsRequestBody",
            "CARD": "#/components/schemas/ApiCreateCardBillPaymentParamsRequestBody",
            "CHECK": "#/components/schemas/ApiCreateBillVendorPaymentParamsRequestBody",
            "CRYPTO_WALLET_TRANSFER": "#/components/schemas/ApiCreateBankAccountPaymentParamsRequestBody",
            "DOMESTIC_WIRE": "#/components/schemas/ApiCreateBankAccountPaymentParamsRequestBody",
            "INTERNATIONAL": "#/components/schemas/ApiCreateBankAccountPaymentParamsRequestBody",
            "LOCAL_BANK_TRANSFER": "#/components/schemas/ApiCreateBankAccountPaymentParamsRequestBody",
            "PAID_MANUALLY": "#/components/schemas/ApiCreateManualBillPaymentParamsRequestBody",
            "SWIFT": "#/components/schemas/ApiCreateBankAccountPaymentParamsRequestBody"
          },
          "propertyName": "payment_method"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ApiCreateBankAccountPaymentParamsRequestBody"
          },
          {
            "$ref": "#/components/schemas/ApiCreateBillVendorPaymentParamsRequestBody"
          },
          {
            "$ref": "#/components/schemas/ApiCreateCardBillPaymentParamsRequestBody"
          },
          {
            "$ref": "#/components/schemas/ApiCreateManualBillPaymentParamsRequestBody"
          }
        ]
      },
      "ApiCreateBillVendorPaymentParamsRequestBody": {
        "properties": {
          "is_same_day": {
            "default": false,
            "description": "\nEnables same-day delivery for eligible payments. Currently, this functionality is available only for ACH payments.\nSame-day delivery may incur an additional fee. For more details, see the [Ramp Help Center](https://support.ramp.com/hc/en-us/articles/4417836454419-Bill-payment-methods-and-timelines#same-day-delivery).\nTo use same-day delivery via the API, your account must first be enabled for this feature. Please visit https://app.ramp.com/chat?entryVariant=developerSupport to request access before implementing.\n",
            "type": "boolean"
          },
          "payment_arrival_date": {
            "description": "\nThe expected date the payment will arrive in the vendor's bank account.\n\nThe required time and fee to process the payment depends on the payment method. See the [Ramp Help Center](https://support.ramp.com/hc/en-us/articles/4417836454419-Bill-payment-methods-and-timelines) for more information on payment speeds. An error will be thrown if selected date is invalid.\n",
            "format": "date",
            "type": "string"
          },
          "source_bank_account_id": {
            "description": "Unique identifier of the bank account to pay the bill from. Must be associated with the passed business entity and have usage_type=BILL_PAY_BANK_ACCOUNT.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "payment_arrival_date",
          "source_bank_account_id"
        ],
        "type": "object"
      },
      "ApiCreateCardBillPaymentParamsRequestBody": {
        "properties": {
          "spend_limit_id": {
            "description": "Unique identifier of the spend limit associated with the matched transaction.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "limits",
              "type": "many-to-one"
            }
          },
          "transaction_id": {
            "default": null,
            "description": "If already paid, the unique identifier of the bill payment transaction. The bill will be marked as paid with this transaction once approved.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "transactions",
              "type": "many-to-many"
            }
          }
        },
        "required": [
          "spend_limit_id"
        ],
        "type": "object"
      },
      "ApiCreateManualBillPaymentParamsRequestBody": {
        "properties": {
          "manual_payment_method": {
            "description": "Manual payment method of the bill. If passed, payment_date must also be passed and the bill will be marked as paid.",
            "enum": [
              "CASH",
              "CHECK",
              "CROSS_BORDER_PAYMENT",
              "CRYPTO_WALLET_TRANSFER",
              "DIRECT_DEBIT",
              "DOMESTIC_WIRE_TRANSFER",
              "NON_RAMP_CREDIT_CARD",
              "OTHER",
              "PAID_IN_ERP"
            ],
            "type": "string"
          },
          "payment_date": {
            "description": "The date the bill is paid. This field is not relevant for one-time card delivery, as limits are created immediately and sent out to the vendor on the due date.",
            "format": "date",
            "type": "string"
          }
        },
        "required": [
          "manual_payment_method",
          "payment_date"
        ],
        "type": "object"
      },
      "ApiCustomFormCollectionLogEntryDump": {
        "properties": {
          "forms": {
            "description": "The collection of custom forms for the custom form collection log entry.",
            "items": {
              "$ref": "#/components/schemas/ApiCustomFormDump"
            },
            "type": "array"
          },
          "label": {
            "description": "The label or name for the custom form collection log entry.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "forms",
          "label"
        ],
        "type": "object"
      },
      "ApiCustomFormCollectionResponse": {
        "properties": {
          "custom_form_collection_log_entry": {
            "$ref": "#/components/schemas/ApiCustomFormCollectionResponseLogEntry",
            "description": "Log entry for response to a custom form collection.",
            "nullable": true
          }
        },
        "required": [
          "custom_form_collection_log_entry"
        ],
        "type": "object"
      },
      "ApiCustomFormCollectionResponseLogEntry": {
        "properties": {
          "allow_comments": {
            "description": "Whether comments are allowed on field responses.",
            "type": "boolean"
          },
          "forms": {
            "description": "The custom forms and responses associated with the response log entry.",
            "items": {
              "$ref": "#/components/schemas/ApiCustomFormResponse"
            },
            "type": "array"
          },
          "label": {
            "description": "The label for the response log entry.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "allow_comments",
          "forms",
          "label"
        ],
        "type": "object"
      },
      "ApiCustomFormCollectionResponseResource": {
        "example": {
          "custom_form_collection_response": {
            "custom_form_collection_log_entry": {
              "forms": [
                {
                  "fields": [
                    {
                      "conditions": null,
                      "description": "",
                      "field": {
                        "field_type": "TEXT",
                        "mapped_fields": [],
                        "value": {
                          "value": "my message for approver"
                        }
                      },
                      "field_id": "fc6e0459-a164-4a44-ace1-c432d860423b",
                      "is_mapped_to_ironclad_field": false,
                      "is_used_in_approval_workflow_condition": false,
                      "is_used_in_custom_form_workflow_condition": false,
                      "label": "Add a message for approvers to review",
                      "required": false,
                      "validation_errors": []
                    }
                  ],
                  "label": "my custom form"
                }
              ],
              "label": null
            }
          },
          "id": "550e8400-e29b-41d4-a716-446655440000"
        },
        "properties": {
          "custom_form_collection_response": {
            "$ref": "#/components/schemas/ApiCustomFormCollectionResponse",
            "description": "The custom form collection with response data."
          },
          "id": {
            "description": "Unique identifier of the custom form collection response.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "custom_form_collection_response",
          "id"
        ],
        "type": "object"
      },
      "ApiCustomFormCollectionTemplate": {
        "properties": {
          "custom_form_collection_log_entry": {
            "$ref": "#/components/schemas/ApiCustomFormCollectionLogEntryDump",
            "description": "Latest log entry for the custom form collection.",
            "nullable": true
          }
        },
        "required": [
          "custom_form_collection_log_entry"
        ],
        "type": "object"
      },
      "ApiCustomFormDump": {
        "properties": {
          "fields": {
            "description": "The individual custom form fields associated with the custom form.",
            "items": {
              "$ref": "#/components/schemas/CustomFormFieldWrapperDumpSchema"
            },
            "type": "array"
          },
          "label": {
            "description": "The label or name for the custom form.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "fields",
          "label"
        ],
        "type": "object"
      },
      "ApiCustomFormResponse": {
        "properties": {
          "fields": {
            "description": "The fields for the custom form responses.",
            "items": {
              "$ref": "#/components/schemas/CustomFormFieldResponseWrapperDumpSchemaV2"
            },
            "type": "array"
          },
          "label": {
            "description": "The label for the custom form.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "fields",
          "label"
        ],
        "type": "object"
      },
      "ApiDateFieldAnswerRequestBody": {
        "description": "Answer for a date field (YYYY-MM-DD).",
        "properties": {
          "answer_type": {
            "description": "Must be date. Value must be a YYYY-MM-DD string.",
            "enum": [
              "date"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "value": {
            "description": "String answer for this field.",
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "answer_type",
          "field_id",
          "value"
        ],
        "title": "ApiDateFieldAnswer",
        "type": "object"
      },
      "ApiDefaultBusinessVendorResourceRequestBody": {
        "properties": {
          "email": {
            "type": "string"
          },
          "first_name": {
            "type": "string"
          },
          "last_name": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "ApiDepartmentCreateRequestBody": {
        "additionalProperties": false,
        "example": {
          "name": "Engineering"
        },
        "properties": {
          "name": {
            "description": "Name of the department.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "ApiDepartmentFieldAnswerRequestBody": {
        "description": "Answer for a department field.",
        "properties": {
          "answer_type": {
            "description": "Must be department.",
            "enum": [
              "department"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "department_uuid": {
            "description": "Existing Ramp department UUID.",
            "format": "uuid",
            "title": "Department Uuid",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          }
        },
        "required": [
          "answer_type",
          "department_uuid",
          "field_id"
        ],
        "title": "ApiDepartmentFieldAnswer",
        "type": "object"
      },
      "ApiDepartmentUpdateRequestBody": {
        "example": {
          "name": "HR"
        },
        "properties": {
          "name": {
            "description": "Name of the department.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "ApiDraftBillInventoryLineItem": {
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the inventory line item.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the line item, equal to the product of unit quantity and unit price, represented in the lowest denomination of the currency (e.g., cents for USD).",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "description": "Unique identifier of the inventory line item. Stable across draft updates and draft-to-bill conversion.",
            "format": "uuid",
            "type": "string"
          },
          "memo": {
            "description": "Memo of the inventory line item",
            "nullable": true,
            "type": "string"
          },
          "quantity": {
            "description": "Quantity of the inventory line item",
            "nullable": true,
            "readOnly": true,
            "type": "number"
          },
          "unit_price": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Unit price of the line item, represented in the lowest denomination of the currency (e.g., cents for USD).",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "accounting_field_selections",
          "amount",
          "id",
          "memo",
          "quantity",
          "unit_price"
        ],
        "type": "object"
      },
      "ApiDraftBillLineItem": {
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the line item.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the line item, represented in the lowest denomination of the currency (e.g., cents for USD).",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "description": "Unique identifier of the line item. Stable across draft updates and draft-to-bill conversion.",
            "format": "uuid",
            "type": "string"
          },
          "memo": {
            "description": "Memo of the line item",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "accounting_field_selections",
          "amount",
          "id",
          "memo"
        ],
        "type": "object"
      },
      "ApiEmailFieldAnswerRequestBody": {
        "description": "Answer for an email field.",
        "properties": {
          "answer_type": {
            "description": "Must be email.",
            "enum": [
              "email"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "value": {
            "description": "String answer for this field.",
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "answer_type",
          "field_id",
          "value"
        ],
        "title": "ApiEmailFieldAnswer",
        "type": "object"
      },
      "ApiEmbedInitTokenCreateRequestParamsRequestBody": {
        "example": {
          "parent_origin": "https://ramp.com/"
        },
        "properties": {
          "parent_origin": {
            "description": "Valid HTTP or HTTPS origin URL with hostname (e.g., https://app.ramp.com/). Localhost origins are restricted in production.",
            "format": "url",
            "type": "string"
          }
        },
        "required": [
          "parent_origin"
        ],
        "type": "object"
      },
      "ApiEmbedInitTokenCreateResponse": {
        "example": {
          "embed_init_token": "ramp_embed_init_token_cv00Tlm7HMZatHREkiR0JLUDiqeQ1st7ogczDq4jdbs"
        },
        "properties": {
          "embed_init_token": {
            "description": "The embed init token to exchange for a session token",
            "type": "string"
          }
        },
        "required": [
          "embed_init_token"
        ],
        "type": "object"
      },
      "ApiEmptyResponse": {
        "properties": {
          "message": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiEntityResource": {
        "example": {
          "accounts": [
            {
              "bank_account_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
              "classification": "ASSET",
              "created_at": "2020-01-12T01:30:00+00:00",
              "external_id": "123456",
              "external_name": "Checking Account",
              "internal_id": "",
              "usage_type": "BILL_PAY_BANK_ACCOUNT"
            }
          ],
          "connected_subsidiary": {
            "external_id": "426",
            "id": "07b4ce4d-2750-412e-aef4-6b7815f1411c",
            "name": "Ramp Canada Inc."
          },
          "currency": "CAD",
          "custom_record_fields": [
            {
              "column_display_name": "Entity Region",
              "column_id": "entity_region",
              "value": {
                "display_name": "West",
                "type": "text",
                "value": "West"
              }
            }
          ],
          "default_bill_pay_payment_account_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
          "entity_name": "Jill's Art Shop Canada",
          "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
          "is_primary": true,
          "location_ids": [
            "cabfda32-91a9-41d7-9d24-5c9c6dd19419"
          ],
          "payment_accounts": [
            {
              "account_name": "Business Checking",
              "account_number_last_four": "1234",
              "currency": "USD",
              "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
            }
          ]
        },
        "properties": {
          "accounts": {
            "description": "Information about the entity's active accounts",
            "items": {
              "$ref": "#/components/schemas/EntityProviderAccount"
            },
            "readOnly": true,
            "type": "array"
          },
          "connected_subsidiary": {
            "$ref": "#/components/schemas/EntityConnectedSubsidiary",
            "description": "The subsidiary in the ERP system that this entity is mapped to. This determines which subsidiary transactions from this entity will be synced to.",
            "nullable": true,
            "readOnly": true
          },
          "currency": {
            "description": "Currency used by this business entity.",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "custom_record_fields": {
            "description": "Custom record field values associated with this entity. Only returned when `include_custom_field_values=true`.",
            "items": {
              "$ref": "#/components/schemas/CustomCellOutputWithLoadedReferences"
            },
            "readOnly": true,
            "type": "array"
          },
          "default_bill_pay_payment_account_id": {
            "description": "Bank account UUID of the entity's configured default Bill Pay payment account, if one exists. This UUID can be matched against payment_accounts[].id and accounts[].bank_account_id when those records are present.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "bank_accounts",
              "type": "many-to-one"
            }
          },
          "entity_name": {
            "description": "Name of the business entity.",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier for the business entity.",
            "format": "uuid",
            "type": "string"
          },
          "is_primary": {
            "description": "Whether this is the primary entity for the business.",
            "nullable": true,
            "type": "boolean"
          },
          "location_ids": {
            "description": "List of identifiers for locations associated with this entity.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "payment_accounts": {
            "description": "Bank accounts eligible for bill payment for this entity.",
            "items": {
              "$ref": "#/components/schemas/EntityPaymentAccount"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "required": [
          "accounts",
          "connected_subsidiary",
          "currency",
          "default_bill_pay_payment_account_id",
          "entity_name",
          "id",
          "is_primary",
          "location_ids",
          "payment_accounts"
        ],
        "type": "object",
        "x-resource-name": "entities"
      },
      "ApiFundAccountingRuleRequestBody": {
        "properties": {
          "field_id": {
            "description": "UUID of the accounting field.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_fields",
              "type": "many-to-one"
            }
          },
          "field_option_id": {
            "description": "UUID of the accounting field option.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "custom_field_options",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "field_id",
          "field_option_id"
        ],
        "type": "object"
      },
      "ApiFundBalance": {
        "properties": {
          "cleared": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Cleared amount on this fund.",
            "readOnly": true
          },
          "pending": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Pending amount towards this fund.",
            "readOnly": true
          },
          "total": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total amount spent on this fund.",
            "readOnly": true
          }
        },
        "required": [
          "cleared",
          "pending",
          "total"
        ],
        "type": "object"
      },
      "ApiFundCard": {
        "properties": {
          "card_id": {
            "description": "Unique identifier of the card.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "cards",
              "type": "one-to-many"
            }
          },
          "created_at": {
            "description": "Time the card was created.",
            "format": "date-time",
            "type": "string"
          },
          "display_name": {
            "description": "Display name of the card.",
            "type": "string"
          },
          "expiration": {
            "description": "Expiration date in MMYY format. Redacted if the card has not been activated.",
            "readOnly": true,
            "type": "string"
          },
          "last_four": {
            "description": "Last four digits of the card number. Redacted if the card has not been activated.",
            "readOnly": true,
            "type": "string"
          },
          "user_id": {
            "description": "Unique identifier of the cardholder.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "card_id",
          "created_at",
          "display_name",
          "expiration",
          "last_four",
          "user_id"
        ],
        "type": "object"
      },
      "ApiFundCreateRequestBody": {
        "example": {
          "accounting_rules": [
            {
              "field_id": "3f30896b-cd22-47af-b48a-c6c3068bc780",
              "field_option_id": "d062e221-9c95-47b5-8dc6-d6c881693caf"
            }
          ],
          "display_name": "T&E",
          "is_exempt_from_policy_agent": false,
          "is_shareable": false,
          "permitted_spend_types": {
            "physical_card": true,
            "reimbursements": false,
            "virtual_card": true
          },
          "spending_restrictions": {
            "allowed_category_codes": [
              18,
              20
            ],
            "allowed_vendor_ids": null,
            "blocked_category_codes": null,
            "blocked_mcc_codes": null,
            "blocked_vendor_ids": null,
            "interval": "MONTHLY",
            "limit": {
              "amount": 500000,
              "currency_code": "USD"
            },
            "lock_date": null,
            "transaction_amount_limit": {
              "amount": 10000,
              "currency_code": "USD"
            }
          },
          "user_id": "d8135cfe-0396-4b2d-b2cf-ad809fb04731"
        },
        "properties": {
          "accounting_rules": {
            "description": "Accounting rules for the fund.",
            "items": {
              "$ref": "#/components/schemas/ApiFundAccountingRuleRequestBody"
            },
            "type": "array"
          },
          "display_name": {
            "description": "Display name of the fund.",
            "type": "string"
          },
          "is_exempt_from_policy_agent": {
            "default": false,
            "description": "Whether this fund is exempt from policy agent review.",
            "type": "boolean"
          },
          "is_shareable": {
            "default": false,
            "description": "Whether the fund is shareable among multiple users.",
            "type": "boolean"
          },
          "permitted_spend_types": {
            "$ref": "#/components/schemas/ApiFundPermittedSpendTypesRequestBody",
            "description": "Permitted spend types for the fund."
          },
          "spend_program_id": {
            "description": "The ID of the associated spend program.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "spend_programs",
              "type": "many-to-one"
            }
          },
          "spending_restrictions": {
            "$ref": "#/components/schemas/ApiFundSpendingRestrictionsRequestBody",
            "description": "Spending restrictions for the fund. If spend_program_id is provided and this field is omitted, the fund inherits the program's spending restrictions."
          },
          "user_id": {
            "description": "Unique identifier of the fund owner.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "user_id"
        ],
        "type": "object"
      },
      "ApiFundMember": {
        "properties": {
          "suspension": {
            "$ref": "#/components/schemas/ApiFundSuspension",
            "description": "Suspension details for this member, or null if not suspended.",
            "nullable": true,
            "readOnly": true
          },
          "user_id": {
            "description": "Unique identifier of the fund member.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "suspension",
          "user_id"
        ],
        "type": "object"
      },
      "ApiFundMembersRequestBody": {
        "properties": {
          "user_ids": {
            "description": "List of user ids to add or remove.",
            "items": {
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "user_ids"
        ],
        "type": "object"
      },
      "ApiFundPermittedSpendTypes": {
        "properties": {
          "physical_card_enabled": {
            "description": "Whether the user's physical card can be linked to this fund.",
            "type": "boolean"
          },
          "reimbursements_enabled": {
            "description": "Whether reimbursements can be submitted against this fund.",
            "type": "boolean"
          },
          "virtual_card_enabled": {
            "description": "Whether virtual cards can be linked to this fund.",
            "type": "boolean"
          }
        },
        "required": [
          "physical_card_enabled",
          "reimbursements_enabled",
          "virtual_card_enabled"
        ],
        "type": "object"
      },
      "ApiFundPermittedSpendTypesRequestBody": {
        "properties": {
          "physical_card": {
            "description": "Whether the user's physical card can be linked to this fund.",
            "type": "boolean"
          },
          "reimbursements": {
            "description": "Whether reimbursements can be submitted against this fund.",
            "type": "boolean"
          },
          "virtual_card": {
            "description": "Whether virtual cards can be linked to this fund.",
            "type": "boolean"
          }
        },
        "required": [
          "physical_card",
          "reimbursements",
          "virtual_card"
        ],
        "type": "object"
      },
      "ApiFundSpendingRestrictionsDump": {
        "properties": {
          "allowed_category_codes": {
            "description": "List of allowed Ramp category codes, or null if unrestricted.",
            "items": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            },
            "nullable": true,
            "type": "array"
          },
          "allowed_vendor_ids": {
            "description": "List of allowed vendor IDs, or null if unrestricted.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "merchants",
                "type": "many-to-many"
              }
            },
            "nullable": true,
            "type": "array"
          },
          "auto_lock_date": {
            "description": "Date to automatically lock the fund.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "blocked_category_codes": {
            "description": "List of blocked Ramp category codes, or null if unrestricted.",
            "items": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            },
            "nullable": true,
            "type": "array"
          },
          "blocked_vendor_ids": {
            "description": "List of blocked vendor IDs, or null if unrestricted.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "merchants",
                "type": "many-to-many"
              }
            },
            "nullable": true,
            "type": "array"
          },
          "interval": {
            "description": "Time interval the limit is applied on.",
            "enum": [
              "ANNUAL",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ANNUAL": "The spend limit resets on an annual cycle based on the request or fund start date.",
              "DAILY": "The spend limit resets daily.",
              "MONTHLY": "The spend limit resets monthly.",
              "QUARTERLY": "The spend limit resets every three months.",
              "TERTIARY": "The spend limit resets every four months.",
              "TOTAL": "The spend limit does not reset.",
              "WEEKLY": "The spend limit resets weekly.",
              "YEARLY": "The spend limit resets on the calendar year."
            }
          },
          "limit": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount limit total per interval denominated in the smallest currency unit.",
            "nullable": true,
            "readOnly": true
          },
          "next_interval_resets_at": {
            "description": "Date and time for the next interval reset.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "start_of_interval": {
            "description": "Date and time for the start of the current interval.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "temporary_limit": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Temporary limit total per interval.",
            "nullable": true,
            "readOnly": true
          },
          "transaction_amount_limit": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Max amount allowed on a single transaction.",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "allowed_category_codes",
          "allowed_vendor_ids",
          "auto_lock_date",
          "blocked_category_codes",
          "blocked_vendor_ids",
          "limit",
          "next_interval_resets_at",
          "start_of_interval",
          "temporary_limit",
          "transaction_amount_limit"
        ],
        "type": "object"
      },
      "ApiFundSpendingRestrictionsRequestBody": {
        "properties": {
          "allowed_category_codes": {
            "description": "List of allowed Ramp category codes.",
            "items": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            },
            "type": "array"
          },
          "allowed_vendor_ids": {
            "description": "List of allowed vendor IDs.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "blocked_category_codes": {
            "description": "List of blocked Ramp category codes.",
            "items": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            },
            "type": "array"
          },
          "blocked_mcc_codes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "blocked_vendor_ids": {
            "description": "List of blocked vendor IDs.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "convert_to_entity_currency": {
            "default": false,
            "description": "Convert limits to the currency of the fund's entity at Ramp's daily rate. Not supported for fixed-amount spend programs.",
            "type": "boolean"
          },
          "interval": {
            "description": "Time interval to apply limit to.",
            "enum": [
              "ANNUAL",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ANNUAL": "The spend limit resets on an annual cycle based on the request or fund start date.",
              "DAILY": "The spend limit resets daily.",
              "MONTHLY": "The spend limit resets monthly.",
              "QUARTERLY": "The spend limit resets every three months.",
              "TERTIARY": "The spend limit resets every four months.",
              "TOTAL": "The spend limit does not reset.",
              "WEEKLY": "The spend limit resets weekly.",
              "YEARLY": "The spend limit resets on the calendar year."
            }
          },
          "limit": {
            "$ref": "#/components/schemas/CurrencyAmountRequestBody",
            "description": "Total amount limit per interval denominated in the smallest currency unit (e.g. cents for USD)."
          },
          "lock_date": {
            "description": "Date to automatically suspend the fund. If lock date has passed, set to a future date or to null to unsuspend.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "transaction_amount_limit": {
            "$ref": "#/components/schemas/CurrencyAmountRequestBody",
            "description": "Max amount per transaction denominated in the smallest currency unit (e.g. cents for USD)."
          }
        },
        "required": [
          "interval",
          "limit"
        ],
        "type": "object"
      },
      "ApiFundSpendingRestrictionsUpdateRequestBody": {
        "properties": {
          "allowed_category_codes": {
            "description": "List of allowed Ramp category codes.",
            "items": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            },
            "type": "array"
          },
          "allowed_vendor_ids": {
            "description": "List of allowed vendor IDs.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "blocked_category_codes": {
            "description": "List of blocked Ramp category codes.",
            "items": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            },
            "type": "array"
          },
          "blocked_mcc_codes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "blocked_vendor_ids": {
            "description": "List of blocked vendor IDs.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "convert_to_entity_currency": {
            "default": false,
            "description": "Convert limits to the currency of the fund's entity at Ramp's daily rate. Not supported for fixed-amount spend programs.",
            "type": "boolean"
          },
          "interval": {
            "description": "Time interval to apply limit to.",
            "enum": [
              "ANNUAL",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ANNUAL": "The spend limit resets on an annual cycle based on the request or fund start date.",
              "DAILY": "The spend limit resets daily.",
              "MONTHLY": "The spend limit resets monthly.",
              "QUARTERLY": "The spend limit resets every three months.",
              "TERTIARY": "The spend limit resets every four months.",
              "TOTAL": "The spend limit does not reset.",
              "WEEKLY": "The spend limit resets weekly.",
              "YEARLY": "The spend limit resets on the calendar year."
            }
          },
          "is_temporary_increase": {
            "default": false,
            "description": "Whether this limit change is temporary.",
            "type": "boolean"
          },
          "limit": {
            "$ref": "#/components/schemas/CurrencyAmountRequestBody",
            "description": "Total amount limit per interval denominated in the smallest currency unit (e.g. cents for USD)."
          },
          "lock_date": {
            "description": "Date to automatically suspend the fund. If lock date has passed, set to a future date or to null to unsuspend.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "transaction_amount_limit": {
            "$ref": "#/components/schemas/CurrencyAmountRequestBody",
            "description": "Max amount per transaction denominated in the smallest currency unit (e.g. cents for USD)."
          }
        },
        "type": "object"
      },
      "ApiFundSuspension": {
        "properties": {
          "suspended_at": {
            "description": "Date and time at which the suspension was placed.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "suspended_by_ramp": {
            "description": "Whether the suspension was placed by Ramp.",
            "readOnly": true,
            "type": "boolean"
          },
          "suspended_by_user_id": {
            "description": "Unique identifier of the user who placed the suspension.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "suspended_at",
          "suspended_by_ramp",
          "suspended_by_user_id"
        ],
        "type": "object"
      },
      "ApiFundUpdateRequestBody": {
        "example": {
          "display_name": "Updated Fund Name",
          "spending_restrictions": {
            "limit": {
              "amount": 500000,
              "currency_code": "USD"
            }
          }
        },
        "properties": {
          "accounting_rules": {
            "description": "Accounting rules (full replace).",
            "items": {
              "$ref": "#/components/schemas/ApiFundAccountingRuleRequestBody"
            },
            "type": "array"
          },
          "display_name": {
            "description": "Display name for the fund.",
            "type": "string"
          },
          "is_exempt_from_policy_agent": {
            "description": "Whether the fund is exempt from policy agent review.",
            "type": "boolean"
          },
          "is_shareable": {
            "description": "Whether the fund supports multiple members.",
            "type": "boolean"
          },
          "permitted_spend_types": {
            "$ref": "#/components/schemas/ApiFundPermittedSpendTypesRequestBody",
            "description": "Permitted spend types (full replace)."
          },
          "spend_program_id": {
            "description": "Spend program to link (null to detach).",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "spend_programs",
              "type": "many-to-one"
            }
          },
          "spending_restrictions": {
            "$ref": "#/components/schemas/ApiFundSpendingRestrictionsUpdateRequestBody",
            "description": "Spending restriction overrides (partial merge). When the fund is linked to a spend program, provided sub-fields override the program's default values."
          }
        },
        "type": "object"
      },
      "ApiInventoryAssignmentCreateParamsRequestBody": {
        "properties": {
          "expiration_date": {
            "default": null,
            "description": "Expiration date for this lot, if any.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "lot_number": {
            "description": "Lot number for this portion of the received quantity.",
            "type": "string"
          },
          "quantity": {
            "description": "Quantity received for this lot.",
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "required": [
          "lot_number",
          "quantity"
        ],
        "type": "object"
      },
      "ApiItemReceiptCreateParamsRequestBody": {
        "example": {
          "item_receipt_line_items": [
            {
              "purchase_order_line_item_id": "39786dab-ce04-4033-84f1-913016a90b9d"
            },
            {
              "purchase_order_line_item_id": "7736417a-6a9f-4989-96ad-720b320d0afa",
              "unit_quantity": 2
            }
          ],
          "item_receipt_number": "IR-1234",
          "memo": "my item receipt",
          "purchase_order_id": "0a6c6475-94c6-4556-b45e-10f5360f3c60",
          "receieved_at": "2025-03-20"
        },
        "properties": {
          "item_receipt_line_items": {
            "description": "Item receipt line items.",
            "items": {
              "$ref": "#/components/schemas/ApiItemReceiptLineItemCreateParamsRequestBody"
            },
            "type": "array"
          },
          "item_receipt_number": {
            "description": "Item receipt number.",
            "type": "string"
          },
          "memo": {
            "default": null,
            "description": "Memo for the item receipt.",
            "nullable": true,
            "type": "string"
          },
          "purchase_order_id": {
            "description": "Unique identifier of the purchase order this item receipt is attached to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "purchase_orders",
              "type": "many-to-one"
            }
          },
          "received_at": {
            "description": "The date the vendor will deliver the goods or services.",
            "format": "date",
            "type": "string"
          }
        },
        "required": [
          "item_receipt_line_items",
          "item_receipt_number",
          "purchase_order_id",
          "received_at"
        ],
        "type": "object"
      },
      "ApiItemReceiptLineItem": {
        "properties": {
          "accounting_field_selections": {
            "description": "Accounting field selections for the item receipt line item.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "The cost of the item receipt line item.",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "description": "Unique identifier of the item receipt line item.",
            "format": "uuid",
            "type": "string"
          },
          "inventory_assignments": {
            "description": "Per-lot inventory detail (lot number, quantity, expiration) for lot-tracked items.",
            "items": {
              "$ref": "#/components/schemas/ApiItemReceiptLineItemInventoryAssignment"
            },
            "type": "array"
          },
          "memo": {
            "description": "Memo of the item receipt line item.",
            "nullable": true,
            "type": "string"
          },
          "purchase_order_line_item_id": {
            "description": "Unique identifier of the purchase order line item that was received.",
            "format": "uuid",
            "type": "string"
          },
          "quantity": {
            "description": "Received quantity of the line item.",
            "nullable": true,
            "type": "number"
          },
          "remote_id": {
            "description": "The accounting remote identifier of the item receipt line item.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "unit_price": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "The cost of the item receipt line item per unit.",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "accounting_field_selections",
          "amount",
          "id",
          "inventory_assignments",
          "memo",
          "purchase_order_line_item_id",
          "quantity",
          "remote_id",
          "unit_price"
        ],
        "type": "object"
      },
      "ApiItemReceiptLineItemCreateParamsRequestBody": {
        "properties": {
          "inventory_assignments": {
            "description": "Per-lot inventory detail (lot number, quantity, expiration) for lot-tracked items; quantities must sum to unit_quantity.",
            "items": {
              "$ref": "#/components/schemas/ApiInventoryAssignmentCreateParamsRequestBody"
            },
            "type": "array"
          },
          "purchase_order_line_item_id": {
            "description": "Unique identifier of the purchase order line item being received.",
            "format": "uuid",
            "type": "string"
          },
          "unit_quantity": {
            "default": null,
            "description": "The number of units of an item received; required for purchase order line items with inventory item accounting field selections. For expense line items, this is only applied when quantity-based expense receiving is enabled for the business and the purchase order was created through the API; otherwise the line is received in full: the receipt amount is the full purchase order line amount, and this value is saved and returned as `quantity` for reference only.",
            "nullable": true,
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "required": [
          "purchase_order_line_item_id"
        ],
        "type": "object"
      },
      "ApiItemReceiptLineItemInventoryAssignment": {
        "properties": {
          "expiration_date": {
            "description": "Expiration date for this lot, if any.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the inventory assignment.",
            "format": "uuid",
            "type": "string"
          },
          "lot_number": {
            "description": "Lot number for this portion of the received quantity.",
            "type": "string"
          },
          "quantity": {
            "description": "Quantity received for this lot.",
            "format": "decimal",
            "type": "string"
          }
        },
        "required": [
          "expiration_date",
          "id",
          "lot_number",
          "quantity"
        ],
        "type": "object"
      },
      "ApiItemReceiptResource": {
        "example": {
          "archived_at": null,
          "created_at": "2022-05-10T00:00:00Z",
          "documents": [
            "https://someurl.com"
          ],
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "item_receipt_number": "1234567890",
          "line_items": [
            {
              "accounting_field_selections": [],
              "amount": {
                "amount": 100,
                "currency_code": "USD"
              },
              "inventory_assignments": [],
              "memo": null,
              "purchase_order_line_item_id": "123e4567-e89b-12d3-a456-426614174000",
              "quantity": 1,
              "unit_price": {
                "amount": 500,
                "currency_code": "USD"
              }
            }
          ],
          "memo": null,
          "purchase_order_id": "123e4567-e89b-12d3-a456-426614174000",
          "received_at": "2022-05-09T00:00:00Z",
          "remote_id": "1"
        },
        "properties": {
          "archived_at": {
            "description": "The date and time when the item receipt was archived.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "created_at": {
            "description": "The date and time when the item receipt was created.",
            "format": "date-time",
            "type": "string"
          },
          "documents": {
            "description": "The URLs of the documents associated with the item receipt.",
            "items": {
              "format": "url",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "id": {
            "description": "The unique identifier of the item receipt.",
            "format": "uuid",
            "type": "string"
          },
          "item_receipt_number": {
            "description": "The user-defined identifier of the item receipt.",
            "type": "string"
          },
          "line_items": {
            "description": "List of line items on the item receipt.",
            "items": {
              "$ref": "#/components/schemas/ApiItemReceiptLineItem"
            },
            "type": "array"
          },
          "memo": {
            "description": "Memo of the item receipt.",
            "nullable": true,
            "type": "string"
          },
          "purchase_order_id": {
            "description": "The unique identifier of the purchase order that the item receipt belongs to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "purchase_orders",
              "type": "many-to-one"
            }
          },
          "received_at": {
            "description": "The date and time when the item receipt was received.",
            "format": "date-time",
            "type": "string"
          },
          "remote_id": {
            "description": "The accounting remote identifier of the item receipt.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "archived_at",
          "created_at",
          "documents",
          "id",
          "item_receipt_number",
          "line_items",
          "memo",
          "purchase_order_id",
          "received_at",
          "remote_id"
        ],
        "type": "object",
        "x-resource-name": "item_receipts"
      },
      "ApiLineItemCustomFieldValueRequestBody": {
        "additionalProperties": false,
        "description": "One purchase-order line-item custom field value.",
        "properties": {
          "custom_field_id": {
            "description": "ID of the field (`id` in the spend program's line_item_custom_fields).",
            "title": "Custom Field Id",
            "type": "string"
          },
          "value": {
            "description": "Value matching the field's `field_type`: a number for `number`, `currency` and `percentage`; a boolean for `boolean`; the option's display name for `select` and `category`; a list of display names for `multi_select`; otherwise a string (`\"10\"`, not `10`, for a text field). On PATCH, `\"\"` clears the field.",
            "oneOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value"
          }
        },
        "required": [
          "custom_field_id",
          "value"
        ],
        "title": "ApiLineItemCustomFieldValue",
        "type": "object"
      },
      "ApiLinkFieldAnswerRequestBody": {
        "description": "Answer for a URL field.",
        "properties": {
          "answer_type": {
            "description": "Must be link.",
            "enum": [
              "link"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "value": {
            "description": "String answer for this field.",
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "answer_type",
          "field_id",
          "value"
        ],
        "title": "ApiLinkFieldAnswer",
        "type": "object"
      },
      "ApiLocationCreateRequestBody": {
        "example": {
          "entity_id": "140af3ce-b00a-4c0e-adaa-ac83b65e2e18",
          "name": "Miami, FL"
        },
        "properties": {
          "entity_id": {
            "description": "Identifier of the business entity this location belongs to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "name": {
            "description": "Name of the location.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "ApiLocationUpdateRequestBody": {
        "example": {
          "entity_id": "bb25a7e8-cc2f-4ba7-9bf4-7730ffe152bb",
          "name": "New York City, NY"
        },
        "properties": {
          "entity_id": {
            "description": "Updated identifier of the business entity this location belongs to. Existing users assigned to this location will also be moved to the updated entity.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "name": {
            "description": "Updated name of the location.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "ApiManualPaymentDetailsResource": {
        "properties": {
          "manual_payment_method": {
            "description": "Manual payment method used for this bill payment. Null if the bill has not yet been marked as paid.",
            "enum": [
              "CASH",
              "CHECK",
              "CROSS_BORDER_PAYMENT",
              "CRYPTO_WALLET_TRANSFER",
              "DIRECT_DEBIT",
              "DOMESTIC_WIRE_TRANSFER",
              "NON_RAMP_CREDIT_CARD",
              "OTHER",
              "PAID_IN_ERP"
            ],
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "manual_payment_method"
        ],
        "type": "object"
      },
      "ApiMemoCreateRequestBody": {
        "properties": {
          "is_memo_recurring": {
            "default": false,
            "deprecated": true,
            "description": "Whether this memo should automatically apply to similar future transactions.",
            "type": "boolean"
          },
          "memo": {
            "description": "Text content of the memo to create.",
            "maxLength": 255,
            "type": "string"
          }
        },
        "required": [
          "memo"
        ],
        "type": "object"
      },
      "ApiMerchantCategoryFieldAnswerRequestBody": {
        "description": "Answer for a merchant category field.",
        "properties": {
          "answer_type": {
            "description": "Must be merchant_category.",
            "enum": [
              "merchant_category"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "category_ids": {
            "description": "IDs of existing merchant categories.",
            "items": {
              "type": "integer"
            },
            "title": "Category Ids",
            "type": "array"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          }
        },
        "required": [
          "answer_type",
          "category_ids",
          "field_id"
        ],
        "title": "ApiMerchantCategoryFieldAnswer",
        "type": "object"
      },
      "ApiMerchantFieldAnswerRequestBody": {
        "description": "Answer for a merchant field.",
        "properties": {
          "answer_type": {
            "description": "Must be merchant.",
            "enum": [
              "merchant"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "merchant_uuids": {
            "description": "IDs of existing merchants.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Merchant Uuids",
            "type": "array"
          }
        },
        "required": [
          "answer_type",
          "field_id",
          "merchant_uuids"
        ],
        "title": "ApiMerchantFieldAnswer",
        "type": "object"
      },
      "ApiMerchantLocation": {
        "properties": {
          "city": {
            "nullable": true,
            "type": "string"
          },
          "country": {
            "nullable": true,
            "type": "string"
          },
          "postal_code": {
            "nullable": true,
            "type": "string"
          },
          "state": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "city",
          "country",
          "postal_code",
          "state"
        ],
        "type": "object"
      },
      "ApiMileageReimbursementCreateRequestBody": {
        "example": {
          "distance": 125.5,
          "distance_units": "MILES",
          "end_location": "456 Business Ave, Philadelphia, PA 19103",
          "memo": "Client meeting in downtown office",
          "reimbursee_id": "7979392e-8d41-4f97-815b-ccd7584802bf",
          "spend_allocation_id": "92a68991-8374-4c0a-b5c0-5180c41b5148",
          "start_location": "123 Main St, Scranton, PA 18503",
          "trip_date": "2023-08-19",
          "waypoints": [
            "321 Rest Area Dr, King of Prussia, PA 19406",
            "789 Highway Stop, Allentown, PA 18101"
          ]
        },
        "properties": {
          "distance": {
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "distance_units": {
            "enum": [
              "KILOMETERS",
              "MILES"
            ],
            "type": "string"
          },
          "end_location": {
            "type": "string"
          },
          "memo": {
            "type": "string"
          },
          "reimbursee_id": {
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "spend_allocation_id": {
            "description": "Unique identifier of the fund to attribute the mileage reimbursement to",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "funds",
              "type": "many-to-one"
            }
          },
          "start_location": {
            "type": "string"
          },
          "trip_date": {
            "format": "date",
            "type": "string"
          },
          "waypoints": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "distance",
          "reimbursee_id",
          "trip_date"
        ],
        "type": "object"
      },
      "ApiMonetaryAmountFieldAnswerRequestBody": {
        "description": "Answer for a monetary amount field.",
        "properties": {
          "amount": {
            "description": "Finite amount in currency units. String values are preferred.",
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Amount"
          },
          "answer_type": {
            "description": "Must be monetary_amount.",
            "enum": [
              "monetary_amount"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "currency": {
            "description": "ISO 4217 currency code, such as USD.",
            "title": "Currency",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "answer_type",
          "currency",
          "field_id"
        ],
        "title": "ApiMonetaryAmountFieldAnswer",
        "type": "object"
      },
      "ApiMultiSelectFieldAnswerRequestBody": {
        "description": "Answer for a multi-select field.",
        "properties": {
          "answer_type": {
            "description": "Must be multi_select.",
            "enum": [
              "multi_select"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "values": {
            "description": "The selected choice values, exactly as configured on the field.",
            "items": {
              "type": "string"
            },
            "title": "Values",
            "type": "array"
          }
        },
        "required": [
          "answer_type",
          "field_id",
          "values"
        ],
        "title": "ApiMultiSelectFieldAnswer",
        "type": "object"
      },
      "ApiNumberFieldAnswerRequestBody": {
        "description": "Answer for a numeric field.",
        "properties": {
          "answer_type": {
            "description": "Must be number.",
            "enum": [
              "number"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "value": {
            "description": "Finite numeric answer for this field.",
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value"
          }
        },
        "required": [
          "answer_type",
          "field_id",
          "value"
        ],
        "title": "ApiNumberFieldAnswer",
        "type": "object"
      },
      "ApiParagraphFieldAnswerRequestBody": {
        "description": "Answer for a multi-line paragraph field.",
        "properties": {
          "answer_type": {
            "description": "Must be paragraph.",
            "enum": [
              "paragraph"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "value": {
            "description": "String answer for this field.",
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "answer_type",
          "field_id",
          "value"
        ],
        "title": "ApiParagraphFieldAnswer",
        "type": "object"
      },
      "ApiPaymentCreateParamsRequestBody": {
        "additionalProperties": false,
        "example": {
          "accounting_field_selections": [
            {
              "field_external_id": "servicetitan_expense_type",
              "field_option_external_id": "job"
            }
          ],
          "amount": {
            "currency": "USD",
            "value": 500000
          },
          "entity_id": "0ef02ad1-824d-4e85-8a59-a78e428bd883",
          "external_invoice_number": "INV-12345",
          "external_ref": "ST_INV_12345",
          "payment_method": {
            "id": "87e601aa-1832-4879-b808-ba99a857f839",
            "type": "ACH"
          },
          "scheduled_date": "2026-02-10",
          "source_bank_account_id": "4bcbba09-40a8-434f-9573-fa565c76fbcc",
          "vendor_id": "c99e6793-e2d3-4d26-8b0e-98ff4765726d"
        },
        "properties": {
          "accounting_field_selections": {
            "description": "Accounting field selections to apply to the payment.",
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/ApiAmountRequestBody",
            "description": "The payment amount and currency."
          },
          "entity_id": {
            "description": "Unique identifier of the entity to associate with this payment.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "external_invoice_number": {
            "default": null,
            "description": "The invoice number associated with this payment.",
            "nullable": true,
            "type": "string"
          },
          "external_ref": {
            "default": null,
            "description": "An external reference identifier for this payment.",
            "nullable": true,
            "type": "string"
          },
          "payment_method": {
            "$ref": "#/components/schemas/ApiPaymentMethodParamsRequestBody",
            "description": "The payment method to use for this payment."
          },
          "scheduled_date": {
            "description": "The date the payment should be initiated (YYYY-MM-DD).",
            "format": "date",
            "type": "string"
          },
          "source_bank_account_id": {
            "description": "Unique identifier of the bank account to pay from.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "bank_accounts",
              "type": "many-to-one"
            }
          },
          "vendor_id": {
            "description": "Unique identifier of the vendor to pay.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "amount",
          "entity_id",
          "payment_method",
          "scheduled_date",
          "source_bank_account_id",
          "vendor_id"
        ],
        "type": "object"
      },
      "ApiPaymentDetailsResource": {
        "discriminator": {
          "mapping": {
            "CardPaymentDetailsSchema": "#/components/schemas/ApiCardPaymentDetailsResource",
            "ManualPaymentDetailsSchema": "#/components/schemas/ApiManualPaymentDetailsResource",
            "VendorPaymentDetailsSchema": "#/components/schemas/ApiVendorPaymentDetailsResource"
          },
          "propertyName": "schema_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ApiCardPaymentDetailsResource"
          },
          {
            "$ref": "#/components/schemas/ApiManualPaymentDetailsResource"
          },
          {
            "$ref": "#/components/schemas/ApiVendorPaymentDetailsResource"
          }
        ]
      },
      "ApiPaymentMethodParamsRequestBody": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "Unique identifier of the payment instrument. For ACH, this is the vendor bank account ID. For CHECK, this is the vendor address ID.",
            "format": "uuid",
            "type": "string"
          },
          "type": {
            "description": "The type of payment method.",
            "enum": [
              "ACH",
              "CHECK"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ACH": "Payment via ACH bank transfer.",
              "CHECK": "Payment via mailed paper check."
            }
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "ApiPaymentMethodResource": {
        "properties": {
          "id": {
            "description": "Unique identifier of the payment instrument.",
            "format": "uuid",
            "type": "string"
          },
          "type": {
            "description": "The type of payment method.",
            "enum": [
              "ACH",
              "CHECK"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ACH": "Payment via ACH bank transfer.",
              "CHECK": "Payment via mailed paper check."
            }
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "ApiPaymentRetryParamsRequestBody": {
        "additionalProperties": false,
        "example": {
          "payment_method": {
            "id": "87e601aa-1832-4879-b808-ba99a857f839",
            "type": "ACH"
          },
          "source_bank_account_id": "4bcbba09-40a8-434f-9573-fa565c76fbcc"
        },
        "properties": {
          "payment_method": {
            "$ref": "#/components/schemas/ApiPaymentMethodParamsRequestBody",
            "default": null,
            "description": "Optional updated payment method for the retry. Only ACH is supported.",
            "nullable": true
          },
          "source_bank_account_id": {
            "default": null,
            "description": "Optional updated source bank account for the retry.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "bank_accounts",
              "type": "many-to-one"
            }
          }
        },
        "type": "object"
      },
      "ApiPaymentUpdateParamsRequestBody": {
        "example": {
          "amount": {
            "currency": "USD",
            "value": 500000
          },
          "external_invoice_number": "INV-12345",
          "external_ref": "ST_INV_12345",
          "payment_method": {
            "id": "87e601aa-1832-4879-b808-ba99a857f839",
            "type": "ACH"
          },
          "scheduled_date": "2026-02-10",
          "source_bank_account_id": "4bcbba09-40a8-434f-9573-fa565c76fbcc"
        },
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/ApiAmountRequestBody",
            "description": "The payment amount and currency."
          },
          "external_invoice_number": {
            "description": "The invoice number associated with this payment.",
            "nullable": true,
            "type": "string"
          },
          "external_ref": {
            "description": "An external reference identifier for this payment.",
            "type": "string"
          },
          "payment_method": {
            "$ref": "#/components/schemas/ApiPaymentMethodParamsRequestBody",
            "description": "The payment method to use for this payment."
          },
          "scheduled_date": {
            "description": "The date the payment should be initiated (YYYY-MM-DD).",
            "format": "date",
            "type": "string"
          },
          "source_bank_account_id": {
            "description": "Unique identifier of the bank account to pay from.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "bank_accounts",
              "type": "many-to-one"
            }
          }
        },
        "type": "object"
      },
      "ApiPermittedSpendTypesDump": {
        "properties": {
          "primary_card_enabled": {
            "description": "Indicates whether the user's physical card can be linked to this limit.",
            "type": "boolean"
          },
          "reimbursements_enabled": {
            "description": "Indicates whether reimbursements can be submitted against this limit.",
            "type": "boolean"
          }
        },
        "required": [
          "primary_card_enabled",
          "reimbursements_enabled"
        ],
        "type": "object"
      },
      "ApiPermittedSpendTypesRequestBody": {
        "properties": {
          "primary_card_enabled": {
            "description": "Dictates whether the user's physical card can be linked to this limit.",
            "type": "boolean"
          },
          "reimbursements_enabled": {
            "description": "Dictates whether reimbursements can be submitted against this limit.",
            "type": "boolean"
          }
        },
        "required": [
          "primary_card_enabled",
          "reimbursements_enabled"
        ],
        "type": "object"
      },
      "ApiPhysicalCardCreateResourceRequestBody": {
        "example": {
          "automatic_routing_enabled": false,
          "fund_id": "f8135cfe-0396-4b2d-b2cf-ad809fb04731",
          "shipping_address": {
            "address1": "123 Main St",
            "city": "New York City",
            "country": "US",
            "first_name": "Cardholder's first name",
            "last_name": "Cardholder's last name",
            "postal_code": "10003",
            "state": "NY"
          },
          "user_id": "d8135cfe-0396-4b2d-b2cf-ad809fb04731"
        },
        "properties": {
          "automatic_routing_enabled": {
            "description": "Set to true to enable automatic routing. Can only be set if this card is the primary card of a user. If this field is set to True, fund_id cannot be set.",
            "type": "boolean"
          },
          "fund_id": {
            "description": "Specify id to set the fund this card is associated with. If set, auto_routing_enabled cannot be passed in, and will automatically be set to False.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "funds",
              "type": "many-to-one"
            }
          },
          "shipping_address": {
            "$ref": "#/components/schemas/BaseCardShippingAddressRequestBody",
            "description": "Shipping address for the physical card."
          },
          "user_id": {
            "description": "ID of the user receiving this card.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "one-to-one"
            }
          }
        },
        "required": [
          "shipping_address",
          "user_id"
        ],
        "type": "object",
        "x-resource-name": "physical_cards"
      },
      "ApiPhysicalCardUpdateResourceRequestBody": {
        "example": {
          "automatic_routing_enabled": false,
          "display_name": "WFH Spending Card",
          "fund_id": "506a7096-98c0-4ab5-86ef-20c884a78e74"
        },
        "properties": {
          "automatic_routing_enabled": {
            "description": "Set to true to enable automatic routing. Can only be set if this card is the primary card of a user. If this field is set to True, fund_id cannot be set.",
            "type": "boolean"
          },
          "display_name": {
            "description": "Cosmetic display name of the card. If a card is associated with a single spend limit, its display name will use the spend limit's display name.",
            "type": "string"
          },
          "fund_id": {
            "description": "Specify id to set the fund this card is associated with. If set, auto_routing_enabled cannot be passed in, and will automatically be set to False.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "funds",
              "type": "many-to-one"
            }
          }
        },
        "type": "object"
      },
      "ApiProcurementLineItemPatchRequestBody": {
        "additionalProperties": false,
        "description": "Complete editable payload for a retained or new line.",
        "properties": {
          "accounting_field_selections": {
            "description": "Line-level selections for accounting fields the program enables. On PATCH: omit to preserve, unlisted enabled fields are cleared, [] clears all.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelectionRequestBody"
            },
            "title": "Accounting Field Selections",
            "type": "array"
          },
          "custom_field_values": {
            "description": "Values for line-item custom fields the program enables. On PATCH: omit to preserve, unlisted enabled fields are cleared, [] clears all.",
            "items": {
              "$ref": "#/components/schemas/ApiLineItemCustomFieldValueRequestBody"
            },
            "title": "Custom Field Values",
            "type": "array"
          },
          "description": {
            "default": null,
            "description": "Description of the line item. Omitted or null on PATCH clears it.",
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "id": {
            "$ref": "#/components/schemas/UUIDStrRequestBody",
            "description": "ID of an existing line (`purchase_order.purchase_order_line_item_log_entries[].id` in the request detail). Omit to create a new line.",
            "title": "Id"
          },
          "unit_price": {
            "description": "Unit price in major currency units (`\"450.00\"` is 450.00 USD, not cents). Decimal string or number.",
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Unit Price"
          },
          "unit_quantity": {
            "description": "Quantity of the line item. Fractional quantities are accepted, up to 8 decimal places.",
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Unit Quantity"
          }
        },
        "required": [
          "unit_price",
          "unit_quantity"
        ],
        "title": "ApiProcurementLineItemPatch",
        "type": "object"
      },
      "ApiProcurementLineItemRequestBody": {
        "description": "A line item on a new procurement request. Mirrors the purchase-order line item.",
        "properties": {
          "accounting_field_selections": {
            "description": "Line-level selections for accounting fields the program enables. On PATCH: omit to preserve, unlisted enabled fields are cleared, [] clears all.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelectionRequestBody"
            },
            "title": "Accounting Field Selections",
            "type": "array"
          },
          "custom_field_values": {
            "description": "Values for line-item custom fields the program enables. On PATCH: omit to preserve, unlisted enabled fields are cleared, [] clears all.",
            "items": {
              "$ref": "#/components/schemas/ApiLineItemCustomFieldValueRequestBody"
            },
            "title": "Custom Field Values",
            "type": "array"
          },
          "description": {
            "default": null,
            "description": "Description of the line item. Omitted or null on PATCH clears it.",
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "unit_price": {
            "description": "Unit price in major currency units (`\"450.00\"` is 450.00 USD, not cents). Decimal string or number.",
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Unit Price"
          },
          "unit_quantity": {
            "description": "Quantity of the line item. Fractional quantities are accepted, up to 8 decimal places.",
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Unit Quantity"
          }
        },
        "required": [
          "unit_price",
          "unit_quantity"
        ],
        "title": "ApiProcurementLineItem",
        "type": "object"
      },
      "ApiProcurementRequestCreateInputRequestBody": {
        "description": "Body for POST /unified-requests: create a procurement request.\n\nThe spend program must be a procurement program; other program types are\nrejected.",
        "example": {
          "accounting_field_selections": [
            {
              "accounting_field_id": "3d9c1e2f-4b5a-4c6d-8e7f-0a1b2c3d4e5f",
              "accounting_field_option_id": "7a8b9c0d-1e2f-4a3b-9c4d-5e6f7a8b9c0d"
            }
          ],
          "currency": "USD",
          "field_answers": [
            {
              "answer_type": "single_select",
              "field_id": "cost_center",
              "value": "design"
            },
            {
              "answer_type": "vendor",
              "field_id": "vendor",
              "payee_uuid": "9bb68358-e173-4fd1-9e2b-7a5673067040"
            }
          ],
          "line_items": [
            {
              "custom_field_values": [
                {
                  "custom_field_id": "project_code",
                  "value": "PRJ-42"
                }
              ],
              "description": "Figma professional seats",
              "unit_price": "150.00",
              "unit_quantity": "12.5"
            }
          ],
          "name": "Figma annual subscription",
          "request_owner_id": "30ffb5d0-3021-4438-8253-25819d480237",
          "spend_program_id": "01b7dc97-5b67-45a2-8b05-e4e078f3a722"
        },
        "properties": {
          "accounting_field_selections": {
            "description": "Request-level accounting selections; purchase-order programs only. Limited to fields the program enables at the request level and your ERP allows there.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelectionRequestBody"
            },
            "title": "Accounting Field Selections",
            "type": "array"
          },
          "currency": {
            "$ref": "#/components/schemas/CurrencyRequestBody",
            "description": "ISO 4217 currency code for the request."
          },
          "end_date": {
            "default": null,
            "description": "End of the spend period, formatted YYYY-MM-DD.",
            "format": "date",
            "nullable": true,
            "title": "End Date",
            "type": "string"
          },
          "entity_id": {
            "default": null,
            "description": "ID of the business entity the request belongs to. Defaults to the spend program's entity, or the requester's entity.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "field_answers": {
            "description": "Answers to the spend program's request form fields. Each answer's answer_type must match the field's type.",
            "items": {
              "discriminator": {
                "mapping": {
                  "address": "#/components/schemas/ApiAddressFieldAnswerRequestBody",
                  "boolean": "#/components/schemas/ApiBooleanFieldAnswerRequestBody",
                  "contact": "#/components/schemas/ApiContactFieldAnswerRequestBody",
                  "date": "#/components/schemas/ApiDateFieldAnswerRequestBody",
                  "department": "#/components/schemas/ApiDepartmentFieldAnswerRequestBody",
                  "email": "#/components/schemas/ApiEmailFieldAnswerRequestBody",
                  "link": "#/components/schemas/ApiLinkFieldAnswerRequestBody",
                  "merchant": "#/components/schemas/ApiMerchantFieldAnswerRequestBody",
                  "merchant_category": "#/components/schemas/ApiMerchantCategoryFieldAnswerRequestBody",
                  "monetary_amount": "#/components/schemas/ApiMonetaryAmountFieldAnswerRequestBody",
                  "multi_select": "#/components/schemas/ApiMultiSelectFieldAnswerRequestBody",
                  "number": "#/components/schemas/ApiNumberFieldAnswerRequestBody",
                  "paragraph": "#/components/schemas/ApiParagraphFieldAnswerRequestBody",
                  "single_select": "#/components/schemas/ApiSingleSelectFieldAnswerRequestBody",
                  "text": "#/components/schemas/ApiTextFieldAnswerRequestBody",
                  "user": "#/components/schemas/ApiUserFieldAnswerRequestBody",
                  "vendor": "#/components/schemas/ApiVendorFieldAnswerRequestBody"
                },
                "propertyName": "answer_type"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiAddressFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiBooleanFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiContactFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiDateFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiDepartmentFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiEmailFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiLinkFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiMerchantCategoryFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiMerchantFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiMonetaryAmountFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiMultiSelectFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiNumberFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiParagraphFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiSingleSelectFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiTextFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiUserFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiVendorFieldAnswerRequestBody"
                }
              ]
            },
            "title": "Field Answers",
            "type": "array"
          },
          "line_items": {
            "description": "Line items for the request; purchase-order programs only.",
            "items": {
              "$ref": "#/components/schemas/ApiProcurementLineItemRequestBody"
            },
            "title": "Line Items",
            "type": "array"
          },
          "name": {
            "default": null,
            "description": "Name of the request.",
            "nullable": true,
            "title": "Name",
            "type": "string"
          },
          "request_owner_id": {
            "$ref": "#/components/schemas/UUIDStrRequestBody",
            "description": "ID of the user who owns the request. Approvals route as if this user submitted it."
          },
          "spend_program_id": {
            "$ref": "#/components/schemas/UUIDStrRequestBody",
            "description": "ID of the procurement spend program to request against. Non-procurement programs are rejected."
          },
          "start_date": {
            "default": null,
            "description": "Start of the spend period, formatted YYYY-MM-DD.",
            "format": "date",
            "nullable": true,
            "title": "Start Date",
            "type": "string"
          },
          "submit": {
            "default": true,
            "description": "Submit for approval (default true). Set false to save a draft.",
            "title": "Submit",
            "type": "boolean"
          }
        },
        "required": [
          "currency",
          "request_owner_id",
          "spend_program_id"
        ],
        "title": "ApiProcurementRequestCreateInput",
        "type": "object"
      },
      "ApiProcurementRequestPatchInputRequestBody": {
        "additionalProperties": false,
        "description": "Sparse scalar edits and complete collection replacements for draft or submitted requests.",
        "properties": {
          "accounting_field_selections": {
            "description": "Complete replacement of request-level accounting selections: omit to preserve, unlisted enabled fields are cleared, [] clears all.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelectionRequestBody"
            },
            "title": "Accounting Field Selections",
            "type": "array"
          },
          "currency": {
            "$ref": "#/components/schemas/CurrencyRequestBody",
            "description": "ISO 4217 currency code for the request. Omit to keep the saved value."
          },
          "end_date": {
            "description": "Spend period end, YYYY-MM-DD. Null clears it.",
            "format": "date",
            "nullable": true,
            "title": "End Date",
            "type": "string"
          },
          "entity_id": {
            "$ref": "#/components/schemas/UUIDStrRequestBody",
            "description": "ID of the business entity for the request. Omit to keep the saved value.",
            "title": "Entity Id"
          },
          "field_answers": {
            "description": "Complete replacement of API-editable answers. Omit to preserve answers; omitted supported field IDs are cleared, and [] clears all supported answers. Unexposed answers, including file uploads, are preserved.",
            "items": {
              "discriminator": {
                "mapping": {
                  "address": "#/components/schemas/ApiAddressFieldAnswerRequestBody",
                  "boolean": "#/components/schemas/ApiBooleanFieldAnswerRequestBody",
                  "contact": "#/components/schemas/ApiContactFieldAnswerRequestBody",
                  "date": "#/components/schemas/ApiDateFieldAnswerRequestBody",
                  "department": "#/components/schemas/ApiDepartmentFieldAnswerRequestBody",
                  "email": "#/components/schemas/ApiEmailFieldAnswerRequestBody",
                  "link": "#/components/schemas/ApiLinkFieldAnswerRequestBody",
                  "merchant": "#/components/schemas/ApiMerchantFieldAnswerRequestBody",
                  "merchant_category": "#/components/schemas/ApiMerchantCategoryFieldAnswerRequestBody",
                  "monetary_amount": "#/components/schemas/ApiMonetaryAmountFieldAnswerRequestBody",
                  "multi_select": "#/components/schemas/ApiMultiSelectFieldAnswerRequestBody",
                  "number": "#/components/schemas/ApiNumberFieldAnswerRequestBody",
                  "paragraph": "#/components/schemas/ApiParagraphFieldAnswerRequestBody",
                  "single_select": "#/components/schemas/ApiSingleSelectFieldAnswerRequestBody",
                  "text": "#/components/schemas/ApiTextFieldAnswerRequestBody",
                  "user": "#/components/schemas/ApiUserFieldAnswerRequestBody",
                  "vendor": "#/components/schemas/ApiVendorFieldAnswerRequestBody"
                },
                "propertyName": "answer_type"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ApiAddressFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiBooleanFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiContactFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiDateFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiDepartmentFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiEmailFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiLinkFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiMerchantCategoryFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiMerchantFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiMonetaryAmountFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiMultiSelectFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiNumberFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiParagraphFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiSingleSelectFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiTextFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiUserFieldAnswerRequestBody"
                },
                {
                  "$ref": "#/components/schemas/ApiVendorFieldAnswerRequestBody"
                }
              ]
            },
            "title": "Field Answers",
            "type": "array"
          },
          "line_items": {
            "description": "Complete replacement set. Omit to preserve all lines; omitted existing IDs are deleted, and [] removes all source lines. Every item requires unit_price and unit_quantity. Omitted or null description clears it. Retained lines preserve unexposed metadata and omitted coding.",
            "items": {
              "$ref": "#/components/schemas/ApiProcurementLineItemPatchRequestBody"
            },
            "title": "Line Items",
            "type": "array"
          },
          "name": {
            "description": "Name of the request. Omit to keep the saved value.",
            "title": "Name",
            "type": "string"
          },
          "start_date": {
            "description": "Spend period start, YYYY-MM-DD. Null clears it.",
            "format": "date",
            "nullable": true,
            "title": "Start Date",
            "type": "string"
          }
        },
        "title": "ApiProcurementRequestPatchInput",
        "type": "object"
      },
      "ApiPurchaseOrderArchiveRequestBody": {
        "example": {
          "archived_reason": "This purchase order is no longer needed."
        },
        "properties": {
          "archived_reason": {
            "description": "Reason for archiving the purchase order.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiPurchaseOrderCreateParamsRequestBody": {
        "example": {
          "accounting_field_selections": [],
          "currency": "USD",
          "entity_id": "7b96a1f2-4b86-45f8-943a-f1ca6b5194d4",
          "external_id": "ext-po-123",
          "line_items": [
            {
              "accounting_field_selections": [],
              "description": "my line item",
              "external_id": "ext-line-1",
              "unit_price": 100,
              "unit_quantity": 1
            }
          ],
          "memo": "Purchase order for general software services",
          "name": "Annual software subscription",
          "net_payment_terms": 30,
          "owner_id": "54683adc-f49d-4163-b407-f231c62943ea",
          "promise_date": "2024-05-10",
          "purchase_order_number": "PO-1234",
          "remote_id": null,
          "spend_end_date": "2024-05-10",
          "spend_start_date": "2024-05-01",
          "three_way_match_enabled": false,
          "vendor_id": "b901afe8-46d7-4f30-b7b5-3c8af127e5a0"
        },
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the purchase order. Generally, only a single vendor accounting field is supported.",
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "currency": {
            "description": "Currency of the purchase order.",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "entity_id": {
            "description": "Unique identifier of associated business entity.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "external_id": {
            "default": null,
            "description": "An ID that uniquely identifies the purchase order on the client's side. Must be unique per business and cannot be updated after creation.",
            "nullable": true,
            "type": "string"
          },
          "line_items": {
            "description": "List of purchase order line items.",
            "items": {
              "$ref": "#/components/schemas/ApiPurchaseOrderLineItemCreateParamsRequestBody"
            },
            "type": "array"
          },
          "memo": {
            "default": null,
            "description": "Memo for the purchase order.",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "default": null,
            "description": "Name of the purchase order. Must contain a non-whitespace character.",
            "nullable": true,
            "pattern": "\\s*\\S",
            "type": "string"
          },
          "net_payment_terms": {
            "default": null,
            "description": "The required time an invoice needs to be paid after receipt in days.",
            "nullable": true,
            "type": "integer"
          },
          "owner_id": {
            "default": null,
            "description": "Unique identifier for the owner of the purchase order. Defaults to the API caller when not provided.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "promise_date": {
            "default": null,
            "description": "The date the vendor will deliver the goods or services.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "purchase_order_number": {
            "default": null,
            "description": "Unique purchase order number with format <prefix>-<number>. Prefixes must only contain numbers, uppercase letters, and dashes. Invalid characters will be filtered out automatically. If not provided, one will be auto-generated using a prefix specified in procurement settings, if it exists.",
            "nullable": true,
            "type": "string"
          },
          "spend_end_date": {
            "default": null,
            "description": "The date when spending for this purchase order ends.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "spend_start_date": {
            "default": null,
            "description": "The date when spending for this purchase order begins.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "three_way_match_enabled": {
            "description": "Whether three-way match is enabled for the purchase order. I.e. whether an item receipt will be attached to indicate goods were received.",
            "type": "boolean"
          },
          "vendor_id": {
            "default": null,
            "description": "Unique identifier for the vendor.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          },
          "withholding_default_rate": {
            "default": null,
            "description": "Default retainage withholding rate for the purchase order, expressed as a fractional decimal. For example, 0.10 means 10%.",
            "exclusiveMaximum": true,
            "maximum": 1,
            "minimum": 0,
            "nullable": true,
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "required": [
          "currency",
          "entity_id",
          "line_items",
          "three_way_match_enabled"
        ],
        "type": "object"
      },
      "ApiPurchaseOrderDetailLineItem": {
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the purchase order line item.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "readOnly": true,
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the line item.",
            "readOnly": true
          },
          "custom_field_values": {
            "description": "Custom field values associated with this purchase order line item.",
            "items": {
              "$ref": "#/components/schemas/LineItemCustomFieldValueWithArchiveStatus"
            },
            "readOnly": true,
            "type": "array"
          },
          "description": {
            "description": "Description of the line item.",
            "nullable": true,
            "type": "string"
          },
          "end_date": {
            "description": "The date when spending for this line item ends.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "external_id": {
            "description": "Customer-provided external identifier of the line item.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier for the line item.",
            "format": "uuid",
            "type": "string"
          },
          "quantity": {
            "description": "Quantity of the line item.",
            "nullable": true,
            "type": "number"
          },
          "remote_id": {
            "description": "The accounting remote identifier of the line item.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "start_date": {
            "description": "The date when spending for this line item begins.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "unit_price": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Unit price of the line item.",
            "nullable": true,
            "readOnly": true
          },
          "withholding_rate": {
            "description": "Retainage withholding rate for the line item, expressed as a fractional decimal. If set, this line-level rate overrides the purchase order withholding_default_rate for this line item. For example, 0.10 means 10%.",
            "format": "decimal",
            "maximum": 1,
            "minimum": 0,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "accounting_field_selections",
          "amount",
          "custom_field_values",
          "description",
          "end_date",
          "external_id",
          "id",
          "quantity",
          "remote_id",
          "start_date",
          "unit_price",
          "withholding_rate"
        ],
        "type": "object"
      },
      "ApiPurchaseOrderDetailResource": {
        "example": {
          "accounting_field_selections": [],
          "amount": {
            "amount": 10000,
            "currency": "USD"
          },
          "archived_at": null,
          "bill_ids": [
            "ac6b4c79-9fcd-47d5-9c7e-55b6746903ef",
            "ea0a40d9-d7c4-4cf5-a8a8-e9230fb17459"
          ],
          "billing_status": "CLOSED",
          "created_at": "2022-05-10T00:00:00Z",
          "creation_source": "ACCOUNTING_PROVIDER",
          "custom_form_collection_response": {
            "custom_form_collection_log_entry": {
              "forms": [
                {
                  "fields": [
                    {
                      "conditions": null,
                      "description": "",
                      "field": {
                        "field_type": "TEXT",
                        "mapped_fields": [],
                        "value": {
                          "value": "my message for approver"
                        }
                      },
                      "field_id": "fc6e0459-a164-4a44-ace1-c432d860423b",
                      "is_mapped_to_ironclad_field": false,
                      "is_used_in_approval_workflow_condition": false,
                      "is_used_in_custom_form_workflow_condition": false,
                      "label": "Add a message for approvers to review",
                      "required": false,
                      "validation_errors": [],
                      "value_display_string": "my message for approver"
                    }
                  ],
                  "label": "my custom form"
                }
              ],
              "label": null
            }
          },
          "entity_id": "7b96a1f2-4b86-45f8-943a-f1ca6b5194d4",
          "external_id": "PO-EXT-1234",
          "id": "54683adc-f49d-4163-b407-f231c62943ea",
          "item_receipt_ids": [
            "0c48b64a-51c2-4848-9dd9-3b30615f4911",
            "5fe9c5a6-791f-4fa8-9d64-5a1cad703710"
          ],
          "line_items": [
            {
              "accounting_field_selections": [],
              "amount": {
                "amount": 100,
                "currency_code": "USD"
              },
              "description": "my line item",
              "end_date": "2024-05-31",
              "external_id": "ext-line-123",
              "id": "54683adc-f49d-4163-b407-f231c62943ea",
              "quantity": 1,
              "remote_id": null,
              "start_date": "2024-05-01",
              "unit_price": {
                "amount": 100,
                "currency_code": "USD"
              }
            }
          ],
          "memo": "Purchase order for general software services",
          "name": "Purchase order for general software services",
          "net_payment_terms": 30,
          "owner_id": "54683adc-f49d-4163-b407-f231c62943ea",
          "promise_date": "2024-05-10T00:00:00Z",
          "purchase_order_number": "PO-0001",
          "ramp_url": "https://app.ramp.com/s/procurement/purchase-orders/54683adc-f49d-4163-b407-f231c62943ea",
          "receipt_status": "FULLY_RECEIVED",
          "ship_to_address": {
            "address1": "28 W 23rd St",
            "address2": "Floor 4",
            "city": "New York",
            "country": "USA",
            "postal_code": "10010",
            "state": "NY"
          },
          "ship_to_company_name": "Ramp",
          "shipping_contact_email": "alex.morgan@ramp.com",
          "shipping_contact_first_name": "Alex",
          "shipping_contact_last_name": "Morgan",
          "shipping_contact_phone_number": "+12125551234",
          "spend_end_date": "2024-05-31T00:00:00Z",
          "spend_program_id": "ac8b9c2e-1234-5678-9abc-def012345678",
          "spend_request_id": "fb718d18-5435-416b-940e-083fc637614",
          "spend_start_date": "2024-05-01T00:00:00Z",
          "spend_total_amount": {
            "amount": 10000,
            "currency_code": "USD"
          },
          "three_way_match_enabled": false,
          "transaction_ids": [
            "5a65cefc-5d59-40ec-9ae8-82fa657dc1b7"
          ],
          "user_id": "54683adc-f49d-4163-b407-f231c62943ea",
          "vendor_id": "b901afe8-46d7-4f30-b7b5-3c8af127e5a0"
        },
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the purchase order.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "readOnly": true,
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the purchse order.",
            "readOnly": true
          },
          "archived_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "bill_ids": {
            "description": "List of unique identifiers for attached bills.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "billing_status": {
            "enum": [
              "CLOSED",
              "DELETED",
              "FULLY_BILLED",
              "OPEN",
              "PARTIALLY_BILLED"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "creation_source": {
            "enum": [
              "ACCOUNTING_PROVIDER",
              "DEVELOPER_API",
              "EXTERNAL_IMPORT",
              "RAMP"
            ],
            "type": "string"
          },
          "custom_form_collection_response": {
            "$ref": "#/components/schemas/ApiCustomFormCollectionResponse",
            "description": "Custom form collection with an associated response log entry.",
            "nullable": true,
            "readOnly": true
          },
          "entity_id": {
            "description": "Associated business entity.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "external_id": {
            "description": "An ID that uniquely identifies the purchase order on the client's side. Must be unique per business and cannot be updated after creation.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "item_receipt_ids": {
            "description": "List of unique identifiers for item receipts matched to the purchase order.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "line_items": {
            "description": "List of line items on the purchase order.",
            "items": {
              "$ref": "#/components/schemas/ApiPurchaseOrderDetailLineItem"
            },
            "type": "array"
          },
          "memo": {
            "description": "Memo of the purchase order.",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "The name of the spend request associated with the purchase order.",
            "nullable": true,
            "type": "string"
          },
          "net_payment_terms": {
            "description": "The required time an invoice needs to be paid after receipt.",
            "nullable": true,
            "type": "integer"
          },
          "owner_id": {
            "description": "Unique identifier for the owner of the spend request. This value will only be present for Ramp-created purchase orders.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "promise_date": {
            "description": "The date the vendor will deliver the goods or services.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "purchase_order_number": {
            "nullable": true,
            "type": "string"
          },
          "ramp_url": {
            "description": "A stable URL that links to the purchase order in the Ramp web application.",
            "readOnly": true,
            "type": "string"
          },
          "receipt_status": {
            "enum": [
              "FULLY_RECEIVED",
              "NOT_RECEIVED",
              "OVER_RECEIVED",
              "PARTIALLY_RECEIVED"
            ],
            "type": "string"
          },
          "remote_id": {
            "description": "The accounting remote identifier of the purchase order.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "ship_to_address": {
            "$ref": "#/components/schemas/PurchaseOrderAddress",
            "description": "Delivery address for the purchase order.",
            "nullable": true
          },
          "ship_to_company_name": {
            "description": "Company name associated with the delivery address.",
            "nullable": true,
            "type": "string"
          },
          "shipping_contact_email": {
            "description": "Email address of the delivery contact.",
            "nullable": true,
            "type": "string"
          },
          "shipping_contact_first_name": {
            "description": "First name of the delivery contact.",
            "nullable": true,
            "type": "string"
          },
          "shipping_contact_last_name": {
            "description": "Last name of the delivery contact.",
            "nullable": true,
            "type": "string"
          },
          "shipping_contact_phone_number": {
            "description": "Phone number of the delivery contact.",
            "nullable": true,
            "type": "string"
          },
          "spend_end_date": {
            "description": "The date when spending for this purchase order ends.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "spend_program_id": {
            "description": "Unique identifier for the spend program associated with the purchase order. This value will only be null for purchase orders imported from an accounting provider.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "spend_programs",
              "type": "many-to-one"
            }
          },
          "spend_request_id": {
            "description": "Unique identifier for the spend request associated with the purchase order. This value will only be null for purchase orders imported from an accounting provider.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "spend_start_date": {
            "description": "The date when spending for this purchase order begins.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "spend_total_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total amount of the purchase order, calculated based on frequency and date range for recurring purchases.",
            "nullable": true,
            "readOnly": true
          },
          "three_way_match_enabled": {
            "description": "Whether three-way match is enabled for the purchase order.",
            "readOnly": true,
            "type": "boolean"
          },
          "transaction_ids": {
            "description": "List of unique identifiers for attached transactions. This does not include transactions on attached bills.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "user_id": {
            "description": "Unique identifier for the user who created the spend request. This value will only be present for Ramp-created purchase orders.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "vendor_id": {
            "description": "Unique identifier for the vendor.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          },
          "withholding_default_rate": {
            "description": "Default retainage withholding rate for the purchase order, expressed as a fractional decimal. For example, 0.10 means 10%.",
            "format": "decimal",
            "maximum": 1,
            "minimum": 0,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "accounting_field_selections",
          "amount",
          "archived_at",
          "bill_ids",
          "created_at",
          "creation_source",
          "custom_form_collection_response",
          "entity_id",
          "external_id",
          "id",
          "item_receipt_ids",
          "line_items",
          "memo",
          "name",
          "net_payment_terms",
          "owner_id",
          "promise_date",
          "purchase_order_number",
          "ramp_url",
          "receipt_status",
          "remote_id",
          "ship_to_address",
          "ship_to_company_name",
          "shipping_contact_email",
          "shipping_contact_first_name",
          "shipping_contact_last_name",
          "shipping_contact_phone_number",
          "spend_end_date",
          "spend_program_id",
          "spend_request_id",
          "spend_start_date",
          "spend_total_amount",
          "three_way_match_enabled",
          "transaction_ids",
          "user_id",
          "vendor_id",
          "withholding_default_rate"
        ],
        "type": "object",
        "x-resource-name": "purchase_orders"
      },
      "ApiPurchaseOrderLineItem": {
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the purchase order line item.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "readOnly": true,
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the line item.",
            "readOnly": true
          },
          "description": {
            "description": "Description of the line item.",
            "nullable": true,
            "type": "string"
          },
          "end_date": {
            "description": "The date when spending for this line item ends.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "external_id": {
            "description": "Customer-provided external identifier of the line item.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier for the line item.",
            "format": "uuid",
            "type": "string"
          },
          "quantity": {
            "description": "Quantity of the line item.",
            "nullable": true,
            "type": "number"
          },
          "remote_id": {
            "description": "The accounting remote identifier of the line item.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "start_date": {
            "description": "The date when spending for this line item begins.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "unit_price": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Unit price of the line item.",
            "nullable": true,
            "readOnly": true
          },
          "withholding_rate": {
            "description": "Retainage withholding rate for the line item, expressed as a fractional decimal. If set, this line-level rate overrides the purchase order withholding_default_rate for this line item. For example, 0.10 means 10%.",
            "format": "decimal",
            "maximum": 1,
            "minimum": 0,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "accounting_field_selections",
          "amount",
          "description",
          "end_date",
          "external_id",
          "id",
          "quantity",
          "remote_id",
          "start_date",
          "unit_price",
          "withholding_rate"
        ],
        "type": "object"
      },
      "ApiPurchaseOrderLineItemCreateParamsRequestBody": {
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the line item.",
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "description": {
            "default": null,
            "description": "Description of the line item.",
            "nullable": true,
            "type": "string"
          },
          "end_date": {
            "default": null,
            "description": "The date when spending for this line item ends.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "external_id": {
            "default": null,
            "description": "An ID that identifies the line item on the client's side. Must be unique within the purchase order and cannot be updated after creation.",
            "nullable": true,
            "type": "string"
          },
          "start_date": {
            "default": null,
            "description": "The date when spending for this line item begins.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "unit_price": {
            "description": "Unit price of the line item.",
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "unit_quantity": {
            "description": "Quantity of the line item. Supports fractional values as a JSON number or decimal string.",
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "withholding_rate": {
            "default": null,
            "description": "Retainage withholding rate for the line item, expressed as a fractional decimal. If set, this line-level rate overrides the purchase order withholding_default_rate for this line item. For example, 0.10 means 10%.",
            "exclusiveMaximum": true,
            "maximum": 1,
            "minimum": 0,
            "nullable": true,
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "required": [
          "unit_price",
          "unit_quantity"
        ],
        "type": "object"
      },
      "ApiPurchaseOrderResource": {
        "example": {
          "accounting_field_selections": [],
          "amount": {
            "amount": 10000,
            "currency": "USD"
          },
          "archived_at": null,
          "bill_ids": [
            "ac6b4c79-9fcd-47d5-9c7e-55b6746903ef",
            "ea0a40d9-d7c4-4cf5-a8a8-e9230fb17459"
          ],
          "billing_status": "CLOSED",
          "created_at": "2022-05-10T00:00:00Z",
          "creation_source": "ACCOUNTING_PROVIDER",
          "entity_id": "7b96a1f2-4b86-45f8-943a-f1ca6b5194d4",
          "external_id": "PO-EXT-1234",
          "id": "54683adc-f49d-4163-b407-f231c62943ea",
          "item_receipt_ids": [
            "0c48b64a-51c2-4848-9dd9-3b30615f4911",
            "5fe9c5a6-791f-4fa8-9d64-5a1cad703710"
          ],
          "line_items": [
            {
              "accounting_field_selections": [],
              "amount": {
                "amount": 100,
                "currency_code": "USD"
              },
              "description": "my line item",
              "end_date": "2024-05-31",
              "external_id": "ext-line-123",
              "id": "54683adc-f49d-4163-b407-f231c62943ea",
              "quantity": 1,
              "remote_id": null,
              "start_date": "2024-05-01",
              "unit_price": {
                "amount": 100,
                "currency_code": "USD"
              }
            }
          ],
          "memo": "Purchase order for general software services",
          "name": "Purchase order for general software services",
          "net_payment_terms": 30,
          "owner_id": "54683adc-f49d-4163-b407-f231c62943ea",
          "promise_date": "2024-05-10T00:00:00Z",
          "purchase_order_number": "PO-0001",
          "ramp_url": "https://app.ramp.com/s/procurement/purchase-orders/54683adc-f49d-4163-b407-f231c62943ea",
          "receipt_status": "FULLY_RECEIVED",
          "ship_to_address": {
            "address1": "28 W 23rd St",
            "address2": "Floor 4",
            "city": "New York",
            "country": "USA",
            "postal_code": "10010",
            "state": "NY"
          },
          "ship_to_company_name": "Ramp",
          "shipping_contact_email": "alex.morgan@ramp.com",
          "shipping_contact_first_name": "Alex",
          "shipping_contact_last_name": "Morgan",
          "shipping_contact_phone_number": "+12125551234",
          "spend_end_date": "2024-05-31T00:00:00Z",
          "spend_program_id": "ac8b9c2e-1234-5678-9abc-def012345678",
          "spend_request_id": "fb718d18-5435-416b-940e-083fc637614",
          "spend_start_date": "2024-05-01T00:00:00Z",
          "spend_total_amount": {
            "amount": 10000,
            "currency_code": "USD"
          },
          "three_way_match_enabled": false,
          "transaction_ids": [
            "5a65cefc-5d59-40ec-9ae8-82fa657dc1b7"
          ],
          "user_id": "54683adc-f49d-4163-b407-f231c62943ea",
          "vendor_id": "b901afe8-46d7-4f30-b7b5-3c8af127e5a0"
        },
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the purchase order.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "readOnly": true,
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the purchse order.",
            "readOnly": true
          },
          "archived_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "bill_ids": {
            "description": "List of unique identifiers for attached bills.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "billing_status": {
            "enum": [
              "CLOSED",
              "DELETED",
              "FULLY_BILLED",
              "OPEN",
              "PARTIALLY_BILLED"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "creation_source": {
            "enum": [
              "ACCOUNTING_PROVIDER",
              "DEVELOPER_API",
              "EXTERNAL_IMPORT",
              "RAMP"
            ],
            "type": "string"
          },
          "entity_id": {
            "description": "Associated business entity.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "external_id": {
            "description": "An ID that uniquely identifies the purchase order on the client's side. Must be unique per business and cannot be updated after creation.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "item_receipt_ids": {
            "description": "List of unique identifiers for item receipts matched to the purchase order.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "line_items": {
            "description": "List of line items on the purchase order.",
            "items": {
              "$ref": "#/components/schemas/ApiPurchaseOrderLineItem"
            },
            "type": "array"
          },
          "memo": {
            "description": "Memo of the purchase order.",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "The name of the spend request associated with the purchase order.",
            "nullable": true,
            "type": "string"
          },
          "net_payment_terms": {
            "description": "The required time an invoice needs to be paid after receipt.",
            "nullable": true,
            "type": "integer"
          },
          "owner_id": {
            "description": "Unique identifier for the owner of the spend request. This value will only be present for Ramp-created purchase orders.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "promise_date": {
            "description": "The date the vendor will deliver the goods or services.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "purchase_order_number": {
            "nullable": true,
            "type": "string"
          },
          "ramp_url": {
            "description": "A stable URL that links to the purchase order in the Ramp web application.",
            "readOnly": true,
            "type": "string"
          },
          "receipt_status": {
            "enum": [
              "FULLY_RECEIVED",
              "NOT_RECEIVED",
              "OVER_RECEIVED",
              "PARTIALLY_RECEIVED"
            ],
            "type": "string"
          },
          "remote_id": {
            "description": "The accounting remote identifier of the purchase order.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "ship_to_address": {
            "$ref": "#/components/schemas/PurchaseOrderAddress",
            "description": "Delivery address for the purchase order.",
            "nullable": true
          },
          "ship_to_company_name": {
            "description": "Company name associated with the delivery address.",
            "nullable": true,
            "type": "string"
          },
          "shipping_contact_email": {
            "description": "Email address of the delivery contact.",
            "nullable": true,
            "type": "string"
          },
          "shipping_contact_first_name": {
            "description": "First name of the delivery contact.",
            "nullable": true,
            "type": "string"
          },
          "shipping_contact_last_name": {
            "description": "Last name of the delivery contact.",
            "nullable": true,
            "type": "string"
          },
          "shipping_contact_phone_number": {
            "description": "Phone number of the delivery contact.",
            "nullable": true,
            "type": "string"
          },
          "spend_end_date": {
            "description": "The date when spending for this purchase order ends.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "spend_program_id": {
            "description": "Unique identifier for the spend program associated with the purchase order. This value will only be null for purchase orders imported from an accounting provider.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "spend_programs",
              "type": "many-to-one"
            }
          },
          "spend_request_id": {
            "description": "Unique identifier for the spend request associated with the purchase order. This value will only be null for purchase orders imported from an accounting provider.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "spend_start_date": {
            "description": "The date when spending for this purchase order begins.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "spend_total_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total amount of the purchase order, calculated based on frequency and date range for recurring purchases.",
            "nullable": true,
            "readOnly": true
          },
          "three_way_match_enabled": {
            "description": "Whether three-way match is enabled for the purchase order.",
            "readOnly": true,
            "type": "boolean"
          },
          "transaction_ids": {
            "description": "List of unique identifiers for attached transactions. This does not include transactions on attached bills.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "user_id": {
            "description": "Unique identifier for the user who created the spend request. This value will only be present for Ramp-created purchase orders.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "vendor_id": {
            "description": "Unique identifier for the vendor.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          },
          "withholding_default_rate": {
            "description": "Default retainage withholding rate for the purchase order, expressed as a fractional decimal. For example, 0.10 means 10%.",
            "format": "decimal",
            "maximum": 1,
            "minimum": 0,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "accounting_field_selections",
          "amount",
          "archived_at",
          "bill_ids",
          "created_at",
          "creation_source",
          "entity_id",
          "external_id",
          "id",
          "item_receipt_ids",
          "line_items",
          "memo",
          "name",
          "net_payment_terms",
          "owner_id",
          "promise_date",
          "purchase_order_number",
          "ramp_url",
          "receipt_status",
          "remote_id",
          "ship_to_address",
          "ship_to_company_name",
          "shipping_contact_email",
          "shipping_contact_first_name",
          "shipping_contact_last_name",
          "shipping_contact_phone_number",
          "spend_end_date",
          "spend_program_id",
          "spend_request_id",
          "spend_start_date",
          "spend_total_amount",
          "three_way_match_enabled",
          "transaction_ids",
          "user_id",
          "vendor_id",
          "withholding_default_rate"
        ],
        "type": "object",
        "x-resource-name": "purchase_orders"
      },
      "ApiPurchaseOrderUpdateParamsRequestBody": {
        "example": {
          "accounting_field_selections": [
            {
              "field_external_id": "dept_field_123",
              "field_option_external_id": "engineering_dept_456"
            }
          ],
          "memo": "Updated memo with concierge fee-waive note",
          "name": "Renewed annual software subscription",
          "spend_end_date": "2025-05-18",
          "spend_start_date": "2025-05-12"
        },
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the purchase order at the body level. Will be updated in an 'all or nothing' manner. Generally, only a single vendor accounting field is supported.",
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "memo": {
            "description": "Memo for the purchase order.",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the purchase order. Must contain a non-whitespace character. Omit to preserve the current name, or set to null to clear it.",
            "nullable": true,
            "pattern": "\\s*\\S",
            "type": "string"
          },
          "owner_id": {
            "description": "Unique identifier of the new owner of the purchase order. The purchase order must be approved.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "spend_end_date": {
            "description": "The date when spending for this purchase order ends.",
            "format": "date",
            "type": "string"
          },
          "spend_start_date": {
            "description": "The date when spending for this purchase order begins.",
            "format": "date",
            "type": "string"
          },
          "withholding_default_rate": {
            "description": "Default retainage withholding rate for the purchase order, expressed as a fractional decimal. For example, 0.10 means 10%.",
            "exclusiveMaximum": true,
            "maximum": 1,
            "minimum": 0,
            "nullable": true,
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "type": "object"
      },
      "ApiRampAccountingCustomFieldOptionUpdateRequestBody": {
        "example": {
          "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
          "code": "450",
          "display_name": "Sales & Marketing Display",
          "reactivate": true,
          "value": "Sales & Marketing",
          "visibility": "VISIBLE"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the direct ERP accounting connection this Ramp-only field option request should target.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "code": {
            "description": "Only available if not using a direct ERP integration: Code of the custom accounting field option; you could provide an empty string to reset the code.",
            "type": "string"
          },
          "display_name": {
            "description": "Available to all: Update the display name of the custom field option.",
            "type": "string"
          },
          "reactivate": {
            "description": "Only available if not using a direct ERP integration: reactivate a deleted custom field option",
            "enum": [
              true
            ],
            "type": "boolean"
          },
          "value": {
            "description": "Only available if not using a direct ERP integration: Name of the custom accounting field option.",
            "type": "string"
          },
          "visibility": {
            "description": "Available to all: Hide or Show option",
            "enum": [
              "HIDDEN",
              "VISIBLE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "HIDDEN": "The option is hidden from selection in Ramp.",
              "VISIBLE": "The option is available for selection in Ramp."
            }
          }
        },
        "required": [
          "accounting_connection_id"
        ],
        "type": "object"
      },
      "ApiRampAccountingCustomFieldOptionUploadRequestBody": {
        "example": {
          "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
          "field_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
          "options": [
            {
              "id": "418",
              "value": "Engineering & Design"
            },
            {
              "id": "514",
              "value": "Sales & Marketing"
            }
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the direct ERP accounting connection this Ramp-only field option request should target.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "field_id": {
            "description": "The ID of the custom accounting field that this custom accounting field option belongs to. This is the ramp_id returned from custom field endpoints.",
            "format": "uuid",
            "type": "string"
          },
          "options": {
            "description": "A list of field options for a given Ramp-only custom accounting field.",
            "items": {
              "$ref": "#/components/schemas/RampFieldOption"
            },
            "maxItems": 500,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "accounting_connection_id",
          "field_id",
          "options"
        ],
        "type": "object"
      },
      "ApiReceiptIntegrationOptedOutEmailCreateRequestBody": {
        "properties": {
          "business_id": {
            "type": "integer"
          },
          "email": {
            "type": "string"
          }
        },
        "required": [
          "business_id",
          "email"
        ],
        "type": "object"
      },
      "ApiReceiptIntegrationOptedOutEmailResource": {
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiReceiptIntegrationOptedOutEmailResourceRequestBody": {
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiReceiptOcr": {
        "properties": {
          "currency_code": {
            "description": "Currency code extracted from receipt OCR. Can be null when OCR could not extract a value.",
            "nullable": true,
            "type": "string"
          },
          "line_items": {
            "description": "Line items extracted from receipt OCR.",
            "items": {
              "$ref": "#/components/schemas/ApiReceiptOcrLineItem"
            },
            "type": "array"
          },
          "taxes": {
            "description": "Taxes extracted from receipt OCR.",
            "items": {
              "$ref": "#/components/schemas/ApiReceiptOcrTax"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ApiReceiptOcrLineItem": {
        "properties": {
          "item_date": {
            "description": "Date associated with the item extracted from receipt OCR. Can be null when OCR could not extract a value.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "item_name": {
            "description": "Name of the item extracted from receipt OCR. Can be null when OCR could not extract a value.",
            "nullable": true,
            "type": "string"
          },
          "item_quantity": {
            "description": "Quantity of the item extracted from receipt OCR. Can be null when OCR could not extract a value.",
            "nullable": true,
            "type": "number"
          },
          "item_total_price": {
            "description": "Total price of the item extracted from receipt OCR. Can be null when OCR could not extract a value.",
            "nullable": true,
            "type": "number"
          },
          "item_unit_price": {
            "description": "Unit price of the item extracted from receipt OCR. Can be null when OCR could not extract a value.",
            "nullable": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "ApiReceiptOcrTax": {
        "properties": {
          "tax_amount": {
            "description": "Tax amount extracted from receipt OCR. Can be null when OCR could not extract a value.",
            "nullable": true,
            "type": "number"
          },
          "tax_name": {
            "description": "Name of the tax extracted from receipt OCR. Can be null when OCR could not extract a value.",
            "nullable": true,
            "type": "string"
          },
          "tax_rate": {
            "description": "Tax rate extracted from receipt OCR. Can be null when OCR could not extract a value.",
            "nullable": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "ApiReceiptUploadRequestRequestBody": {
        "description": "Multipart request documented for receipt uploads.",
        "properties": {
          "idempotency_key": {
            "description": "Caller-supplied key that makes upload retries idempotent.",
            "title": "Idempotency Key",
            "type": "string"
          },
          "receipt": {
            "$ref": "#/components/schemas/UploadedFileRequestBody",
            "description": "Receipt image or PDF to upload."
          },
          "transaction_id": {
            "default": null,
            "description": "Transaction to attach to the uploaded receipt.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "transactions",
              "type": "many-to-one"
            }
          },
          "user_id": {
            "$ref": "#/components/schemas/UUIDStrRequestBody",
            "description": "User to associate with the receipt (affects transaction matching priority).",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "idempotency_key",
          "receipt",
          "user_id"
        ],
        "title": "ApiReceiptUploadRequest",
        "type": "object"
      },
      "ApiReimbursementAccountingCategoryInfo": {
        "properties": {
          "external_id": {
            "description": "External ID that uniquely identifies this field in the ERP.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier for this accounting field within Ramp.",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the accounting field.",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "description": "Type of accounting field.",
            "enum": [
              "AMORTIZATION_TEMPLATE",
              "BILLABLE",
              "COST_CENTER",
              "CUSTOMERS_JOBS",
              "DEFERRAL_CODE",
              "EXPENSE_ENTITY",
              "GL_ACCOUNT",
              "INVENTORY_ITEM",
              "JOURNAL",
              "MERCHANT",
              "NON_ERP",
              "OTHER",
              "PAYROLL_PROVIDER",
              "PROJECT",
              "REPORTING_TAG",
              "SALES_TAX_CODE",
              "SUBSIDIARY",
              "TAX_CODE",
              "UNIT_OF_MEASURE"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "SALES_TAX_CODE": "A sales tax code from the accounting provider."
            }
          }
        },
        "required": [
          "external_id",
          "id",
          "name",
          "type"
        ],
        "type": "object"
      },
      "ApiReimbursementAccountingFieldSelection": {
        "properties": {
          "category_info": {
            "$ref": "#/components/schemas/ApiReimbursementAccountingCategoryInfo",
            "description": "Information about the parent accounting category.",
            "nullable": true
          },
          "display_name": {
            "description": "Customer-set display name for the accounting field option in Ramp. When the customer renames an option inside Ramp, this returns the new label while `name` continues to return the ERP-source name. May be null if no Ramp-side override is set.",
            "nullable": true,
            "type": "string"
          },
          "external_code": {
            "description": "External code displayed in the ERP for this option.",
            "nullable": true,
            "type": "string"
          },
          "external_id": {
            "description": "External ID that uniquely identifies this option in the ERP.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier for this option within Ramp.",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the accounting field option.",
            "nullable": true,
            "type": "string"
          },
          "provider_name": {
            "description": "Name of accounting field provider",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "source": {
            "$ref": "#/components/schemas/ApiAccountingFieldSelectionSource",
            "description": "Source of this accounting coding selection.",
            "nullable": true
          },
          "type": {
            "description": "Type of accounting field.",
            "enum": [
              "AMORTIZATION_TEMPLATE",
              "BILLABLE",
              "COST_CENTER",
              "CUSTOMERS_JOBS",
              "DEFERRAL_CODE",
              "EXPENSE_ENTITY",
              "GL_ACCOUNT",
              "INVENTORY_ITEM",
              "JOURNAL",
              "MERCHANT",
              "NON_ERP",
              "OTHER",
              "PAYROLL_PROVIDER",
              "PROJECT",
              "REPORTING_TAG",
              "SALES_TAX_CODE",
              "SUBSIDIARY",
              "TAX_CODE",
              "UNIT_OF_MEASURE"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "SALES_TAX_CODE": "A sales tax code from the accounting provider."
            }
          }
        },
        "required": [
          "category_info",
          "display_name",
          "external_code",
          "external_id",
          "id",
          "name",
          "provider_name",
          "source",
          "type"
        ],
        "type": "object"
      },
      "ApiReimbursementAmount": {
        "properties": {
          "currency": {
            "description": "The currency of the amount in ISO 4217 format (e.g. USD).",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "minor_unit_conversion_rate": {
            "description": "The conversion factor to convert from the integer amount to the actual currency value. Divide `value` by this value to get the real currency amount. For USD, this is 100 (e.g., 12034 / 100 = 120.34 USD). See https://docs.ramp.com/developer-api/v1/monetary-values for more information.",
            "nullable": true,
            "readOnly": true,
            "type": "integer"
          },
          "value": {
            "description": "The non-negative amount in the smallest denomination of the currency (e.g. cents for USD).",
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "currency",
          "minor_unit_conversion_rate",
          "value"
        ],
        "type": "object"
      },
      "ApiReimbursementAttendee": {
        "properties": {
          "name": {
            "description": "Full name of the attendee",
            "type": "string"
          },
          "user_id": {
            "description": "User ID of the attendee, if linked to a Ramp user. Missing if the attendee is not a Ramp user",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "name",
          "user_id"
        ],
        "type": "object"
      },
      "ApiReimbursementLineItem": {
        "properties": {
          "accounting_field_selections": {
            "description": "Accounting field selections used to code this line item.",
            "items": {
              "$ref": "#/components/schemas/ApiReimbursementAccountingFieldSelection"
            },
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the line item.",
            "nullable": true
          },
          "memo": {
            "description": "Memo text for this line item.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "accounting_field_selections",
          "amount",
          "memo"
        ],
        "type": "object"
      },
      "ApiReimbursementTraceId": {
        "properties": {
          "descriptor": {
            "default": null,
            "description": "Human-readable description of the bank reference. For example, 'Trace ID', 'IMAD number', or 'Reference number'.",
            "nullable": true,
            "type": "string"
          },
          "trace_id": {
            "default": null,
            "description": "The bank-facing accountability reference for the reimbursement payment.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "descriptor",
          "trace_id"
        ],
        "type": "object"
      },
      "ApiReimbursementUploadReceiptRequestRequestBody": {
        "description": "Multipart request documented for reimbursement receipt uploads.",
        "properties": {
          "idempotency_key": {
            "description": "Caller-supplied key that makes upload retries idempotent.",
            "title": "Idempotency Key",
            "type": "string"
          },
          "receipt": {
            "$ref": "#/components/schemas/UploadedFileRequestBody",
            "description": "Receipt image or PDF to attach to the reimbursement."
          },
          "reimbursee_id": {
            "$ref": "#/components/schemas/UUIDStrRequestBody",
            "description": "UUID of the user to create the reimbursement for.",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "reimbursement_id": {
            "default": null,
            "description": "Optional UUID of an existing reimbursement to attach the receipt to. If omitted, a new draft reimbursement will be created via OCR.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "reimbursements",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "idempotency_key",
          "receipt",
          "reimbursee_id"
        ],
        "title": "ApiReimbursementUploadReceiptRequest",
        "type": "object"
      },
      "ApiRelatedBill": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the associated bill in the lowest denomination of its invoice currency.",
            "nullable": true,
            "readOnly": true
          },
          "bill_id": {
            "description": "Unique identifier of the associated bill.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "bills",
              "type": "many-to-many"
            }
          },
          "invoice_number": {
            "description": "Invoice number of the associated bill.",
            "nullable": true,
            "type": "string"
          },
          "label": {
            "description": "Display label for the associated bill as seen from this bill (e.g. 'Insurance bill').",
            "type": "string"
          },
          "status": {
            "description": "Payment status of the associated bill.",
            "enum": [
              "OPEN",
              "PAID"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "OPEN": "The bill has not been fully paid.",
              "PAID": "The bill has been paid in full."
            }
          },
          "vendor_name": {
            "description": "Vendor name of the associated bill.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "amount",
          "bill_id",
          "invoice_number",
          "label",
          "status",
          "vendor_name"
        ],
        "type": "object"
      },
      "ApiRequiredAccountingConnectionIdRequestBody": {
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the direct ERP accounting connection this Ramp-only field option request should target.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "accounting_connection_id"
        ],
        "type": "object"
      },
      "ApiRole": {
        "properties": {
          "base_role": {
            "description": "System role this custom role is based on.",
            "type": "string"
          },
          "description": {
            "description": "Description of the custom role.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the custom role.",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "Display name of the custom role.",
            "type": "string"
          },
          "product_capabilities": {
            "description": "Product capabilities enabled for the custom role.",
            "items": {
              "$ref": "#/components/schemas/ApiRoleProductCapability"
            },
            "type": "array"
          }
        },
        "required": [
          "base_role",
          "description",
          "id",
          "name",
          "product_capabilities"
        ],
        "type": "object",
        "x-resource-name": "roles"
      },
      "ApiRoleProductCapability": {
        "properties": {
          "access": {
            "description": "Access level granted for the product capability, or null when the capability does not use access levels.",
            "nullable": true,
            "type": "string"
          },
          "description": {
            "description": "Description of the product capability.",
            "type": "string"
          },
          "name": {
            "description": "Name of the product capability.",
            "type": "string"
          }
        },
        "required": [
          "access",
          "description",
          "name"
        ],
        "type": "object"
      },
      "ApiRolesList": {
        "example": {
          "data": [
            {
              "base_role": "CUSTOM",
              "description": "Can review expenses across the business.",
              "id": "9abffcf0-dd7d-42f0-b806-ce0502ab6496",
              "name": "Expense reviewer",
              "product_capabilities": [
                {
                  "access": "global",
                  "description": "View transactions and reimbursements",
                  "name": "EXPENSES_VIEW_EXPENSES"
                }
              ]
            }
          ]
        },
        "properties": {
          "data": {
            "description": "Custom roles for the business.",
            "items": {
              "$ref": "#/components/schemas/ApiRole"
            },
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "ApiSignedAmount": {
        "properties": {
          "currency": {
            "description": "The currency of the amount in ISO 4217 format (e.g. USD).",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "value": {
            "description": "The amount in the smallest denomination of the currency (e.g. cents for USD). May be negative for refunds or credits.",
            "type": "integer"
          }
        },
        "required": [
          "currency",
          "value"
        ],
        "type": "object"
      },
      "ApiSingleSelectFieldAnswerRequestBody": {
        "description": "Answer for a single-select field.",
        "properties": {
          "answer_type": {
            "description": "Must be single_select. Use choices[].value exactly.",
            "enum": [
              "single_select"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "value": {
            "description": "String answer for this field.",
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "answer_type",
          "field_id",
          "value"
        ],
        "title": "ApiSingleSelectFieldAnswer",
        "type": "object"
      },
      "ApiSpendProgramCreateIssuanceRulesRequestBody": {
        "properties": {
          "automatic": {
            "$ref": "#/components/schemas/ApiSpendProgramIssuanceRulesRequestBody",
            "description": "Set of rules for having spend programs issued by default to users",
            "nullable": true
          },
          "requestable": {
            "$ref": "#/components/schemas/ApiSpendProgramIssuanceRulesRequestBody",
            "description": "Set of rules for users requesting spend programs.",
            "nullable": true
          }
        },
        "type": "object"
      },
      "ApiSpendProgramCreateRequestBody": {
        "properties": {
          "description": {
            "description": "Description of the spend program.",
            "type": "string"
          },
          "display_name": {
            "description": "Display name of the spend program.",
            "type": "string"
          },
          "icon": {
            "description": "The template icon for the spend program.",
            "enum": [
              "AccountingServicesIcon",
              "AdvertisingIcon",
              "CONTRACTORS_AND_PROFESSIONAL_SERVICES",
              "CUSTOM",
              "CardIcon",
              "EducationStipendIcon",
              "EmployeeRewardsIcon",
              "GroundTransportationIcon",
              "LegalFeesIcon",
              "LodgingIcon",
              "LunchOrderingIcon",
              "OnboardingIcon",
              "PerDiemCardIcon",
              "SOFTWARE",
              "SaasSubscriptionIcon",
              "SoftwareTrialIcon",
              "SuppliesIcon",
              "TeamSocialIcon",
              "TravelExpensesIcon",
              "VirtualEventIcon",
              "WellnessIcon",
              "WorkFromHomeIcon",
              "advertising",
              "airlines",
              "bills",
              "business",
              "car_services",
              "contractor",
              "education",
              "entertainment",
              "event_balloons",
              "event_virtual",
              "food",
              "fuel_and_gas",
              "general_expense",
              "general_merchandise",
              "gift",
              "government_services",
              "internet_and_phone",
              "legal",
              "lodging",
              "lodging_room",
              "newspaper",
              "office",
              "physical_card",
              "procurement_checklist",
              "procurement_intake",
              "professional_services",
              "restaurants",
              "reward",
              "saas_software",
              "shipping",
              "travel_misc",
              "wellness"
            ],
            "type": "string"
          },
          "is_shareable": {
            "default": false,
            "description": "Dictates whether the spend program is shareable among multiple users.",
            "type": "boolean"
          },
          "issuance_rules": {
            "$ref": "#/components/schemas/ApiSpendProgramCreateIssuanceRulesRequestBody",
            "default": null,
            "description": "Spend Program Issuance Rules can be set for requests or default issuance of Limits from a program. Set whether a program is requestable or issued by default for a given set of users and their attributes (department, locations, and custom fields). If you'd like to give these permissions to all employees, you can set `applies_to_all` to `True`. Feel free to ignore this if you don't want any custom requestability or issuance logic.",
            "nullable": true
          },
          "issue_physical_card_if_needed": {
            "default": false,
            "description": "Dictates whether the spend program should issue a physical card if the user does not have one.",
            "type": "boolean"
          },
          "permitted_spend_types": {
            "$ref": "#/components/schemas/ApiPermittedSpendTypesRequestBody",
            "description": "Specifies the permitted spend types for the spend program."
          },
          "spending_restrictions": {
            "$ref": "#/components/schemas/ApiSpendingRestrictionsRequestBody",
            "description": "A set of restrictions imposed on the spend program."
          }
        },
        "required": [
          "description",
          "display_name",
          "icon",
          "permitted_spend_types",
          "spending_restrictions"
        ],
        "type": "object"
      },
      "ApiSpendProgramDetailResource": {
        "example": {
          "custom_form_collection": {
            "custom_form_collection_log_entry": {
              "forms": [
                {
                  "fields": [
                    {
                      "conditions": null,
                      "description": "",
                      "disclaimer": null,
                      "document_category": null,
                      "field": {
                        "field_type": "TEXT",
                        "mapped_fields": []
                      },
                      "field_id": "fc6e0459-a164-4a44-ace1-c432d860423b",
                      "is_mapped_to_ironclad_field": false,
                      "is_used_in_approval_workflow_condition": false,
                      "is_used_in_custom_form_workflow_condition": false,
                      "label": "Add a message for approvers to review",
                      "required": false
                    }
                  ],
                  "label": "my custom form"
                }
              ],
              "label": null
            }
          },
          "description": "Offer a yearly stipend for conferences and courses.",
          "display_name": "Education Stipend",
          "icon": "EducationStipendIcon",
          "id": "796dab75-a23f-4e2a-984e-20da003c38ef",
          "is_shareable": true,
          "issue_physical_card_if_needed": false,
          "line_item_accounting_fields": [
            {
              "external_id": "abc123-def456",
              "id": "7c52aebf-777c-40d0-9156-264fce9dceb3",
              "is_required": true,
              "name": "Inventory Item",
              "type": "INVENTORY_ITEM"
            }
          ],
          "line_item_custom_fields": [
            {
              "description": "Cost center for this line item.",
              "display_name": "Cost Center",
              "field_type": "text",
              "id": "custom_field_123",
              "is_required": true
            }
          ],
          "permitted_spend_types": {
            "primary_card_enabled": true,
            "reimbursements_enabled": true
          },
          "restrictions": {
            "allowed_categories": [
              33
            ],
            "allowed_vendors": [],
            "auto_lock_date": "2025-10-28T00:00:00+00:00",
            "blocked_categories": [],
            "blocked_vendors": [],
            "interval": "YEARLY",
            "limit": {
              "amount": 75000,
              "currency_code": "USD"
            },
            "next_interval_reset": "2024-01-01T00:00:00+00:00",
            "start_of_interval": "2023-01-01T00:00:00+00:00",
            "temporary_limit": null,
            "transaction_amount_limit": null
          }
        },
        "properties": {
          "custom_form_collection": {
            "$ref": "#/components/schemas/ApiCustomFormCollectionTemplate",
            "description": "Custom form collection for the resource, e.g. form questions required to create a request against a spend program.",
            "nullable": true,
            "readOnly": true
          },
          "description": {
            "description": "Description of the spend program.",
            "type": "string"
          },
          "display_name": {
            "description": "Display name of the spend program.",
            "type": "string"
          },
          "icon": {
            "description": "The template icon for the spend program.",
            "enum": [
              "AccountingServicesIcon",
              "AdvertisingIcon",
              "CONTRACTORS_AND_PROFESSIONAL_SERVICES",
              "CUSTOM",
              "CardIcon",
              "EducationStipendIcon",
              "EmployeeRewardsIcon",
              "GroundTransportationIcon",
              "LegalFeesIcon",
              "LodgingIcon",
              "LunchOrderingIcon",
              "OnboardingIcon",
              "PerDiemCardIcon",
              "SOFTWARE",
              "SaasSubscriptionIcon",
              "SoftwareTrialIcon",
              "SuppliesIcon",
              "TeamSocialIcon",
              "TravelExpensesIcon",
              "VirtualEventIcon",
              "WellnessIcon",
              "WorkFromHomeIcon",
              "advertising",
              "airlines",
              "bills",
              "business",
              "car_services",
              "contractor",
              "education",
              "entertainment",
              "event_balloons",
              "event_virtual",
              "food",
              "fuel_and_gas",
              "general_expense",
              "general_merchandise",
              "gift",
              "government_services",
              "internet_and_phone",
              "legal",
              "lodging",
              "lodging_room",
              "newspaper",
              "office",
              "physical_card",
              "procurement_checklist",
              "procurement_intake",
              "professional_services",
              "restaurants",
              "reward",
              "saas_software",
              "shipping",
              "travel_misc",
              "wellness"
            ],
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the spend program.",
            "format": "uuid",
            "type": "string"
          },
          "is_shareable": {
            "description": "Whether this spend program is shareable.",
            "type": "boolean"
          },
          "issue_physical_card_if_needed": {
            "description": "Indicates whether the spend program should issue a physical card if the user does not have one.",
            "type": "boolean"
          },
          "line_item_accounting_fields": {
            "description": "Custom accounting fields enabled for line items in this spend program.",
            "items": {
              "$ref": "#/components/schemas/ApiSpendProgramLineItemAccountingField"
            },
            "readOnly": true,
            "type": "array"
          },
          "line_item_custom_fields": {
            "description": "Custom fields enabled for line items in this spend program.",
            "items": {
              "$ref": "#/components/schemas/ApiSpendProgramLineItemCustomField"
            },
            "readOnly": true,
            "type": "array"
          },
          "permitted_spend_types": {
            "$ref": "#/components/schemas/ApiPermittedSpendTypesDump",
            "description": "Permitted spend types for the spend program.",
            "nullable": true
          },
          "restrictions": {
            "$ref": "#/components/schemas/SpendIntentApiSpendingRestrictionsDump",
            "description": "A set of restrictions imposed on the spend program.",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "custom_form_collection",
          "description",
          "display_name",
          "icon",
          "id",
          "is_shareable",
          "issue_physical_card_if_needed",
          "line_item_accounting_fields",
          "line_item_custom_fields",
          "permitted_spend_types",
          "restrictions"
        ],
        "type": "object",
        "x-resource-name": "spend_programs"
      },
      "ApiSpendProgramIssuanceRulesRequestBody": {
        "properties": {
          "applies_to_all": {
            "default": false,
            "description": "Dictates whether this rule should apply to all employees or not (if True, location_ids, department_ids, and user_custom_field_ids should be null).",
            "type": "boolean"
          },
          "department_ids": {
            "description": "List of departments whose users are able to request or be issued this spend program.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "location_ids": {
            "description": "List of locations whose users are able to request or be issued this spend program.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "user_custom_field_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ApiSpendProgramLineItemAccountingField": {
        "properties": {
          "external_id": {
            "description": "External ID that uniquely identifies this field in the ERP.",
            "type": "string"
          },
          "id": {
            "description": "ID that uniquely identifies an accounting field within Ramp",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_fields",
              "type": "many-to-many"
            }
          },
          "is_required": {
            "description": "Whether this accounting field is required for line items in the spend program.",
            "type": "boolean"
          },
          "name": {
            "description": "Display name of the custom accounting field.",
            "type": "string"
          },
          "type": {
            "description": "Type of the custom accounting field.",
            "enum": [
              "AMORTIZATION_TEMPLATE",
              "BILLABLE",
              "COST_CENTER",
              "CUSTOMERS_JOBS",
              "DEFERRAL_CODE",
              "EXPENSE_ENTITY",
              "GL_ACCOUNT",
              "INVENTORY_ITEM",
              "JOURNAL",
              "MERCHANT",
              "NON_ERP",
              "OTHER",
              "PAYROLL_PROVIDER",
              "PROJECT",
              "REPORTING_TAG",
              "SALES_TAX_CODE",
              "SUBSIDIARY",
              "TAX_CODE",
              "UNIT_OF_MEASURE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "SALES_TAX_CODE": "A sales tax code from the accounting provider."
            }
          }
        },
        "required": [
          "external_id",
          "id",
          "is_required",
          "name",
          "type"
        ],
        "type": "object"
      },
      "ApiSpendProgramLineItemCustomField": {
        "properties": {
          "description": {
            "description": "Description of the custom field.",
            "nullable": true,
            "type": "string"
          },
          "display_name": {
            "description": "Display name of the custom field.",
            "type": "string"
          },
          "field_type": {
            "description": "Type of the custom field.",
            "enum": [
              "boolean",
              "category",
              "currency",
              "date",
              "email",
              "multi_select",
              "number",
              "numeric_id",
              "paragraph",
              "percentage",
              "phone",
              "select",
              "text",
              "url"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "boolean": "Boolean true or false value.",
              "category": "Single category value from a custom category list.",
              "currency": "Currency amount value.",
              "date": "Date value.",
              "email": "Email address text value.",
              "multi_select": "Multi-select value.",
              "number": "Numeric value.",
              "numeric_id": "Numeric identifier text value.",
              "paragraph": "Long-form text value.",
              "percentage": "Percentage value.",
              "phone": "Phone number text value.",
              "select": "Single-select value.",
              "text": "Free-form text.",
              "url": "URL text value."
            }
          },
          "id": {
            "description": "ID that uniquely identifies the custom field within Ramp.",
            "type": "string"
          },
          "is_required": {
            "description": "Whether this custom field is required for line items in the spend program.",
            "type": "boolean"
          }
        },
        "required": [
          "description",
          "display_name",
          "field_type",
          "id",
          "is_required"
        ],
        "type": "object"
      },
      "ApiSpendProgramResource": {
        "example": {
          "description": "Offer a yearly stipend for conferences and courses.",
          "display_name": "Education Stipend",
          "icon": "EducationStipendIcon",
          "id": "796dab75-a23f-4e2a-984e-20da003c38ef",
          "is_shareable": true,
          "issue_physical_card_if_needed": false,
          "permitted_spend_types": {
            "primary_card_enabled": true,
            "reimbursements_enabled": true
          },
          "restrictions": {
            "allowed_categories": [
              33
            ],
            "allowed_vendors": [],
            "auto_lock_date": "2025-10-28T00:00:00+00:00",
            "blocked_categories": [],
            "blocked_vendors": [],
            "interval": "YEARLY",
            "limit": {
              "amount": 75000,
              "currency_code": "USD"
            },
            "next_interval_reset": "2024-01-01T00:00:00+00:00",
            "start_of_interval": "2023-01-01T00:00:00+00:00",
            "temporary_limit": null,
            "transaction_amount_limit": null
          }
        },
        "properties": {
          "description": {
            "description": "Description of the spend program.",
            "type": "string"
          },
          "display_name": {
            "description": "Display name of the spend program.",
            "type": "string"
          },
          "icon": {
            "description": "The template icon for the spend program.",
            "enum": [
              "AccountingServicesIcon",
              "AdvertisingIcon",
              "CONTRACTORS_AND_PROFESSIONAL_SERVICES",
              "CUSTOM",
              "CardIcon",
              "EducationStipendIcon",
              "EmployeeRewardsIcon",
              "GroundTransportationIcon",
              "LegalFeesIcon",
              "LodgingIcon",
              "LunchOrderingIcon",
              "OnboardingIcon",
              "PerDiemCardIcon",
              "SOFTWARE",
              "SaasSubscriptionIcon",
              "SoftwareTrialIcon",
              "SuppliesIcon",
              "TeamSocialIcon",
              "TravelExpensesIcon",
              "VirtualEventIcon",
              "WellnessIcon",
              "WorkFromHomeIcon",
              "advertising",
              "airlines",
              "bills",
              "business",
              "car_services",
              "contractor",
              "education",
              "entertainment",
              "event_balloons",
              "event_virtual",
              "food",
              "fuel_and_gas",
              "general_expense",
              "general_merchandise",
              "gift",
              "government_services",
              "internet_and_phone",
              "legal",
              "lodging",
              "lodging_room",
              "newspaper",
              "office",
              "physical_card",
              "procurement_checklist",
              "procurement_intake",
              "professional_services",
              "restaurants",
              "reward",
              "saas_software",
              "shipping",
              "travel_misc",
              "wellness"
            ],
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the spend program.",
            "format": "uuid",
            "type": "string"
          },
          "is_shareable": {
            "description": "Whether this spend program is shareable.",
            "type": "boolean"
          },
          "issue_physical_card_if_needed": {
            "description": "Indicates whether the spend program should issue a physical card if the user does not have one.",
            "type": "boolean"
          },
          "permitted_spend_types": {
            "$ref": "#/components/schemas/ApiPermittedSpendTypesDump",
            "description": "Permitted spend types for the spend program.",
            "nullable": true
          },
          "restrictions": {
            "$ref": "#/components/schemas/SpendIntentApiSpendingRestrictionsDump",
            "description": "A set of restrictions imposed on the spend program.",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "description",
          "display_name",
          "icon",
          "id",
          "is_shareable",
          "issue_physical_card_if_needed",
          "permitted_spend_types",
          "restrictions"
        ],
        "type": "object",
        "x-resource-name": "spend_programs"
      },
      "ApiSpendProgramWorkflowNode": {
        "properties": {
          "name": {
            "description": "Display name configured for the node.",
            "type": "string"
          },
          "next_node_id": {
            "description": "Identifier for the next node in the workflow, if available.",
            "nullable": true,
            "type": "string"
          },
          "node_id": {
            "description": "Identifier for the External Approval Request node.",
            "type": "string"
          },
          "service_key": {
            "description": "External approval integration key configured on this workflow node. This matches the service_key query parameter for returned nodes.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "name",
          "next_node_id",
          "node_id",
          "service_key"
        ],
        "type": "object"
      },
      "ApiSpendProgramWorkflowNodes": {
        "example": {
          "workflow_nodes": [
            {
              "name": "Spotdraft approval",
              "next_node_id": null,
              "node_id": "node-1",
              "service_key": "spotdraft"
            }
          ]
        },
        "properties": {
          "workflow_nodes": {
            "description": "External Approval Request nodes in the spend program's Blank Canvas workflow that match the requested service_key.",
            "items": {
              "$ref": "#/components/schemas/ApiSpendProgramWorkflowNode"
            },
            "type": "array"
          }
        },
        "required": [
          "workflow_nodes"
        ],
        "type": "object",
        "x-resource-name": "spend_program_workflow_nodes"
      },
      "ApiSpendRequestViaOCRResponse": {
        "properties": {
          "spend_request_id": {
            "description": "The created draft spend request's ID.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "spend_request_id"
        ],
        "type": "object",
        "x-resource-name": "spend_requests"
      },
      "ApiSpendRequestViaOCRUploadRequestBody": {
        "example": {
          "document": "<binary document data>",
          "idempotency_key": "0a0ed428-0250-4993-96ad-94cd77bc86b6",
          "purchase_order_number_number": "123456",
          "purchase_order_number_prefix": "TEST",
          "requester_user_id": "30ffb5d0-3021-4438-8253-25819d480237",
          "spend_intent_id": "01b7dc97-5b67-45a2-8b05-e4e078f3a722"
        },
        "properties": {
          "document": {
            "description": "Document to use to create the draft spend request.",
            "format": "binary",
            "type": "string"
          },
          "idempotency_key": {
            "description": "An idempotency key is a unique value generated by the client which the server uses to recognize subsequent retries of the same request. To avoid collisions, we encourage clients to use random generated UUIDs.",
            "type": "string"
          },
          "purchase_order_number_number": {
            "description": "Purchase order number for the spend request. This should be an integer in string format.",
            "type": "string"
          },
          "purchase_order_number_prefix": {
            "description": "The prefix of the purchase order number.",
            "type": "string"
          },
          "requester_user_id": {
            "description": "User to be associated with the spend request.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "spend_intent_id": {
            "description": "Spend intent to be associated with the spend request.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "spend_programs",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "document",
          "idempotency_key",
          "requester_user_id",
          "spend_intent_id"
        ],
        "type": "object",
        "x-resource-name": "spend_requests"
      },
      "ApiSpendingRestrictionsDump": {
        "properties": {
          "allowed_categories": {
            "description": "List of Ramp category codes allowed for the limit.",
            "items": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            },
            "type": "array"
          },
          "allowed_vendors": {
            "description": "List of merchants allowed for the limit.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "merchants",
                "type": "many-to-many"
              }
            },
            "type": "array"
          },
          "auto_lock_date": {
            "description": "Date to automatically to lock the limit.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "blocked_categories": {
            "description": "List of Ramp category codes blocked for the limit.",
            "items": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            },
            "type": "array"
          },
          "blocked_vendors": {
            "description": "List of merchants  blocked for the limit.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "merchants",
                "type": "many-to-many"
              }
            },
            "type": "array"
          },
          "interval": {
            "description": "Time interval the limit is applied on.",
            "enum": [
              "ANNUAL",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ANNUAL": "The spend limit resets on an annual cycle based on the request or fund start date.",
              "DAILY": "The spend limit resets daily.",
              "MONTHLY": "The spend limit resets monthly.",
              "QUARTERLY": "The spend limit resets every three months.",
              "TERTIARY": "The spend limit resets every four months.",
              "TOTAL": "The spend limit does not reset.",
              "WEEKLY": "The spend limit resets weekly.",
              "YEARLY": "The spend limit resets on the calendar year."
            }
          },
          "limit": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount limit total per interval denominated in the smallest currency unit (e.g. cents for USD).",
            "nullable": true,
            "readOnly": true
          },
          "next_interval_reset": {
            "description": "Date and time for the next interval reset.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "start_of_interval": {
            "description": "Date and time for the start of the current interval.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "temporary_limit": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Temporary limit total per interval.",
            "nullable": true,
            "readOnly": true
          },
          "transaction_amount_limit": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Max amount allowed on a single transaction.",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "allowed_categories",
          "allowed_vendors",
          "auto_lock_date",
          "blocked_categories",
          "blocked_vendors",
          "limit",
          "next_interval_reset",
          "start_of_interval",
          "temporary_limit",
          "transaction_amount_limit"
        ],
        "type": "object"
      },
      "ApiSpendingRestrictionsRequestBody": {
        "properties": {
          "allowed_categories": {
            "description": "List of Ramp category codes allowed for the limit.",
            "items": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            },
            "type": "array"
          },
          "allowed_vendors": {
            "description": "List of merchants allowed for the limit.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "blocked_categories": {
            "description": "List of Ramp category codes blocked for the limit.",
            "items": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            },
            "type": "array"
          },
          "blocked_mcc_codes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "blocked_vendors": {
            "description": "List of merchants  blocked for the limit.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "interval": {
            "description": "Time interval to apply limit to.",
            "enum": [
              "ANNUAL",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ANNUAL": "The spend limit resets on an annual cycle based on the request or fund start date.",
              "DAILY": "The spend limit resets daily.",
              "MONTHLY": "The spend limit resets monthly.",
              "QUARTERLY": "The spend limit resets every three months.",
              "TERTIARY": "The spend limit resets every four months.",
              "TOTAL": "The spend limit does not reset.",
              "WEEKLY": "The spend limit resets weekly.",
              "YEARLY": "The spend limit resets on the calendar year."
            }
          },
          "limit": {
            "$ref": "#/components/schemas/CurrencyAmountRequestBody",
            "description": "Total amount limit per interval denominated in the smallest currency unit (e.g. cents for USD)."
          },
          "lock_date": {
            "description": "Date to automatically lock the card. If lock date has passed, set to a future date or to null to unlock the card.",
            "format": "date-time",
            "type": "string"
          },
          "transaction_amount_limit": {
            "$ref": "#/components/schemas/CurrencyAmountRequestBody",
            "description": "Max amount per transaction denominated in the smallest currency unit (e.g. cents for USD)."
          }
        },
        "required": [
          "interval",
          "limit"
        ],
        "type": "object"
      },
      "ApiStatementItem": {
        "properties": {
          "cleared_at": {
            "description": "Time when transaction was cleared. Only present for transactions and may be null if not cleared.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "created_at": {
            "description": "For transactions: time when card was swiped. For transfers/cashbacks: creation time.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier for the statement line item.",
            "format": "uuid",
            "type": "string"
          },
          "type": {
            "description": "Type of statement line item (CARD_TRANSACTION, TRANSFER_PAYMENT, or CASHBACK).",
            "enum": [
              "CARD_TRANSACTION",
              "CASHBACK",
              "TRANSFER_PAYMENT"
            ],
            "type": "string"
          }
        },
        "required": [
          "created_at"
        ],
        "type": "object"
      },
      "ApiTextFieldAnswerRequestBody": {
        "description": "Answer for a single-line text field.",
        "properties": {
          "answer_type": {
            "description": "Must be text.",
            "enum": [
              "text"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "value": {
            "description": "String answer for this field.",
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "answer_type",
          "field_id",
          "value"
        ],
        "title": "ApiTextFieldAnswer",
        "type": "object"
      },
      "ApiTransactionAccountingCategoryInfo": {
        "properties": {
          "external_id": {
            "description": "External ID of accounting field; It should uniquely identify an accounting field on the ERP.",
            "type": "string"
          },
          "id": {
            "description": "ID that uniquely identifies an accounting field within Ramp",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "ramp_id",
              "target_resource": "accounting_fields",
              "type": "many-to-many"
            }
          },
          "name": {
            "description": "Name of accounting field",
            "type": "string"
          },
          "type": {
            "description": "Accounting field type",
            "enum": [
              "AMORTIZATION_TEMPLATE",
              "BILLABLE",
              "COST_CENTER",
              "CUSTOMERS_JOBS",
              "DEFERRAL_CODE",
              "EXPENSE_ENTITY",
              "GL_ACCOUNT",
              "INVENTORY_ITEM",
              "JOURNAL",
              "MERCHANT",
              "NON_ERP",
              "OTHER",
              "PAYROLL_PROVIDER",
              "PROJECT",
              "REPORTING_TAG",
              "SALES_TAX_CODE",
              "SUBSIDIARY",
              "TAX_CODE",
              "UNIT_OF_MEASURE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "SALES_TAX_CODE": "A sales tax code from the accounting provider."
            }
          }
        },
        "type": "object"
      },
      "ApiTransactionAccountingFieldSelection": {
        "properties": {
          "category_info": {
            "$ref": "#/components/schemas/ApiTransactionAccountingCategoryInfo",
            "description": "Information about the accounting category (or accounting field)."
          },
          "display_name": {
            "description": "Customer-set display name for the accounting field option in Ramp. When the customer renames an option inside Ramp, this returns the new label while `name` continues to return the ERP-source name. May be null if no Ramp-side override is set.",
            "nullable": true,
            "type": "string"
          },
          "external_code": {
            "description": "External code of accounting field option; Code field displayed on the ERP.",
            "type": "string"
          },
          "external_id": {
            "description": "External ID of accounting field option; It should uniquely identify an accounting field option on the ERP.",
            "type": "string"
          },
          "id": {
            "description": "ID that uniquely identifies an accounting field option within Ramp",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "ramp_id",
              "target_resource": "custom_field_options",
              "type": "many-to-many"
            }
          },
          "name": {
            "description": "Name of accounting field option",
            "type": "string"
          },
          "provider_name": {
            "description": "Name of accounting field provider",
            "readOnly": true,
            "type": "string"
          },
          "source": {
            "$ref": "#/components/schemas/ApiAccountingFieldSelectionSource",
            "description": "Describes the source of the accounting coding selection."
          },
          "type": {
            "description": "Accounting field type",
            "enum": [
              "AMORTIZATION_TEMPLATE",
              "BILLABLE",
              "COST_CENTER",
              "CUSTOMERS_JOBS",
              "DEFERRAL_CODE",
              "EXPENSE_ENTITY",
              "GL_ACCOUNT",
              "INVENTORY_ITEM",
              "JOURNAL",
              "MERCHANT",
              "NON_ERP",
              "OTHER",
              "PAYROLL_PROVIDER",
              "PROJECT",
              "REPORTING_TAG",
              "SALES_TAX_CODE",
              "SUBSIDIARY",
              "TAX_CODE",
              "UNIT_OF_MEASURE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "SALES_TAX_CODE": "A sales tax code from the accounting provider."
            }
          }
        },
        "required": [
          "display_name",
          "provider_name"
        ],
        "type": "object"
      },
      "ApiTransactionAttendee": {
        "properties": {
          "name": {
            "description": "Full name of the attendee",
            "type": "string"
          },
          "user_id": {
            "description": "User ID of the attendee, if linked to a Ramp user. Missing if the attendee is not a Ramp user",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "name",
          "user_id"
        ],
        "type": "object"
      },
      "ApiTransactionCardHolder": {
        "properties": {
          "department_id": {
            "description": "ID of the card holder's department.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "departments",
              "type": "many-to-one"
            }
          },
          "department_name": {
            "description": "Name of the card holder's deparment.",
            "type": "string"
          },
          "employee_id": {
            "description": "User-defined employee ID of the card holder.",
            "type": "string"
          },
          "first_name": {
            "description": "Card holder's first name.",
            "type": "string"
          },
          "last_name": {
            "description": "Card holder's last name.",
            "type": "string"
          },
          "location_id": {
            "description": "ID of the card holder's location.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "locations",
              "type": "many-to-one"
            }
          },
          "location_name": {
            "description": "Name of the card holder's location.",
            "type": "string"
          },
          "user_id": {
            "description": "Card holder's ID.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "type": "object"
      },
      "ApiTransactionDeclineDetails": {
        "example": {
          "amount": 120.34,
          "declined_amount": {
            "currency": "USD",
            "value": 12034
          },
          "reason": "AUTHORIZER_CARD_LIMIT"
        },
        "properties": {
          "amount": {
            "deprecated": true,
            "description": "Declined amount, denominated in the transaction's settlement currency (the transaction's `currency_code`).",
            "type": "number"
          },
          "declined_amount": {
            "$ref": "#/components/schemas/ApiSignedAmount",
            "description": "Declined amount with its currency. The currency is the transaction's settlement currency (matches the transaction's `currency_code`). The value is signed: declined refunds/credits can be negative. Null when the transaction has no valid settlement currency recorded; the bare `amount` field always carries the raw value.",
            "nullable": true
          },
          "reason": {
            "enum": [
              "AUTHORIZER",
              "AUTHORIZER_AP_CARD_VELOCITY_LIMIT",
              "AUTHORIZER_BUSINESS_LIMIT",
              "AUTHORIZER_BUSINESS_SUSPENDED",
              "AUTHORIZER_BUSINESS_VENDOR_BLACKLIST",
              "AUTHORIZER_CARD_AUTO_LOCK_DATE",
              "AUTHORIZER_CARD_CATEGORY_BLACKLIST",
              "AUTHORIZER_CARD_CATEGORY_WHITELIST",
              "AUTHORIZER_CARD_LIMIT",
              "AUTHORIZER_CARD_MCC_BLACKLIST",
              "AUTHORIZER_CARD_MISSING_POLICY_ITEMS",
              "AUTHORIZER_CARD_NOT_ACTIVATED",
              "AUTHORIZER_CARD_PARTIALLY_ACTIVATED",
              "AUTHORIZER_CARD_START_DATE",
              "AUTHORIZER_CARD_SUSPENDED",
              "AUTHORIZER_CARD_TASK_SANCTION",
              "AUTHORIZER_CARD_TOTAL_ACTIVATION_REQUIRED",
              "AUTHORIZER_CARD_VENDOR_BLACKLIST",
              "AUTHORIZER_CARD_VENDOR_WHITELIST",
              "AUTHORIZER_COMMANDO_MODE",
              "AUTHORIZER_FRAUD",
              "AUTHORIZER_FREEZE_TRANSACTIONS_RISK",
              "AUTHORIZER_GLOBAL_MCC_BLACKLIST",
              "AUTHORIZER_MEMBER_LIMIT",
              "AUTHORIZER_NON_AP_CARD_VELOCITY_LIMIT",
              "AUTHORIZER_OOB_BLOCKED_MERCHANT",
              "AUTHORIZER_OOB_DAILY_BUSINESS_BALANCE",
              "AUTHORIZER_OOB_DAILY_CARD_SPEND",
              "AUTHORIZER_RAMP_AUTHORIZATION_METHODS",
              "AUTHORIZER_RAMP_TRANSACTION_AMOUNT_LIMIT",
              "AUTHORIZER_RAMP_VENDOR_RESTRICTIONS",
              "AUTHORIZER_SPEND_ALLOCATION_ARCHIVED_FUNDS",
              "AUTHORIZER_SPEND_ALLOCATION_MEMBER_SUSPENDED",
              "AUTHORIZER_SPEND_ALLOCATION_SUSPENDED",
              "AUTHORIZER_TRANSACTION_AMOUNT_LIMIT",
              "AUTHORIZER_UNAUTHORIZED_USER",
              "AUTHORIZER_UNDER_TRANSACTION_AMOUNT_LIMIT",
              "AUTHORIZER_USER_LIMIT",
              "AUTHORIZER_USER_SUSPENDED",
              "BLOCKED_COUNTRY",
              "CARD_EXPIRED",
              "CARD_LOST_OR_STOLEN",
              "CARD_TERMINATED",
              "CHIP_FAILURE",
              "FORBIDDEN_CATEGORY",
              "INSECURE_AUTHORIZATION_METHOD",
              "INSUFFICIENT_FUNDS",
              "INVALID_PIN",
              "MISSING_CVV",
              "MISSING_EXPIRATION",
              "MOBILE_WALLET_FAILURE",
              "MOBILE_WALLET_TOKEN_NOT_FOUND",
              "MOBILE_WALLET_TOKEN_TERMINATED",
              "NETWORK_DECLINE_ACCOUNT_VERIFICATION",
              "NETWORK_DECLINE_ADVICE",
              "NETWORK_DECLINE_ADVICE_ACQUIRER_ISSUE",
              "NETWORK_DECLINE_ADVICE_ADDITIONAL_AUTHENTICATION_REQUIRED",
              "NETWORK_DECLINE_ADVICE_FORCED_STIP_BY_ISSUER",
              "NETWORK_DECLINE_ADVICE_ISSUER_LOGGED_OFF",
              "NETWORK_DECLINE_ADVICE_ISSUER_TIMEOUT",
              "NETWORK_DECLINE_ADVICE_ISSUER_UNAVAILABLE",
              "NETWORK_DECLINE_ADVICE_PIN_ERROR",
              "NETWORK_DECLINE_ADVICE_RECURRING_PAYMENT",
              "NETWORK_DECLINE_ADVICE_SELECTIVE_ACCEPTANCE_SERVICE",
              "NETWORK_DECLINE_ADVICE_SUSPECTED_FRAUD_TRANSACTION",
              "NETWORK_DECLINE_ADVICE_TOKEN_PROVISIONING_SERVICE",
              "NETWORK_DECLINE_ADVICE_VISA_PAYMENT_CONTROLS_RULE",
              "NOT_ACTIVE",
              "NOT_ALLOWED",
              "NO_AUTO_ROUTED_LIMITS_AVAILABLE",
              "NO_LINKED_SPEND_ALLOCATION",
              "OFAC_VERIFICATION_NEEDED",
              "OPEN_TO_BUY_LIMIT",
              "OTHER",
              "PIN_BLOCKED",
              "PIN_TRY_LIMIT_EXCEEDED",
              "PROCESSOR_CAP",
              "QUASI_CASH",
              "ROUTED_TO_TERMINATED_SPEND_ALLOCATION",
              "STRIPE_WEBHOOK_TIMEOUT",
              "SUSPECTED_BIN_ATTACK",
              "SUSPECTED_FRAUD",
              "THREE_D_SECURE_REQUIRED",
              "USER_BLOCKED",
              "USER_TERMINATED",
              "WRONG_ADDRESS",
              "WRONG_CVV",
              "WRONG_EXPIRATION",
              "WRONG_POSTAL_CODE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "AUTHORIZER": "Transaction declined by Ramp",
              "AUTHORIZER_AP_CARD_VELOCITY_LIMIT": "Transaction limit exceeded",
              "AUTHORIZER_BUSINESS_LIMIT": "Business spending limit exceeded",
              "AUTHORIZER_BUSINESS_SUSPENDED": "Business account is suspended",
              "AUTHORIZER_BUSINESS_VENDOR_BLACKLIST": "Merchant blocked by company policy",
              "AUTHORIZER_CARD_AUTO_LOCK_DATE": "Card has been auto-locked",
              "AUTHORIZER_CARD_CATEGORY_BLACKLIST": "Merchant category blocked for this card",
              "AUTHORIZER_CARD_CATEGORY_WHITELIST": "Merchant category not allowed for this card",
              "AUTHORIZER_CARD_LIMIT": "Card spending limit exceeded",
              "AUTHORIZER_CARD_MCC_BLACKLIST": "Merchant category blocked for this card",
              "AUTHORIZER_CARD_MISSING_POLICY_ITEMS": "Card locked due to missing required items",
              "AUTHORIZER_CARD_NOT_ACTIVATED": "Card is not activated",
              "AUTHORIZER_CARD_PARTIALLY_ACTIVATED": "Card requires additional activation",
              "AUTHORIZER_CARD_START_DATE": "Card spend eligibility has not started",
              "AUTHORIZER_CARD_SUSPENDED": "Card is locked",
              "AUTHORIZER_CARD_TASK_SANCTION": "Card locked due to overdue tasks",
              "AUTHORIZER_CARD_TOTAL_ACTIVATION_REQUIRED": "Card requires delivery confirmation",
              "AUTHORIZER_CARD_VENDOR_BLACKLIST": "Merchant blocked for this card",
              "AUTHORIZER_CARD_VENDOR_WHITELIST": "Merchant not allowed for this card",
              "AUTHORIZER_COMMANDO_MODE": "Temporary processing error",
              "AUTHORIZER_FRAUD": "Transaction flagged for fraud review",
              "AUTHORIZER_FREEZE_TRANSACTIONS_RISK": "Account temporarily frozen",
              "AUTHORIZER_GLOBAL_MCC_BLACKLIST": "Merchant category not supported",
              "AUTHORIZER_MEMBER_LIMIT": "Member spending limit exceeded",
              "AUTHORIZER_NON_AP_CARD_VELOCITY_LIMIT": "Transaction limit exceeded",
              "AUTHORIZER_OOB_BLOCKED_MERCHANT": "Merchant blocked",
              "AUTHORIZER_OOB_DAILY_BUSINESS_BALANCE": "Daily business balance limit exceeded",
              "AUTHORIZER_OOB_DAILY_CARD_SPEND": "Daily card spending limit exceeded",
              "AUTHORIZER_RAMP_AUTHORIZATION_METHODS": "Authorization method not allowed",
              "AUTHORIZER_RAMP_TRANSACTION_AMOUNT_LIMIT": "Transaction amount didn't match limit",
              "AUTHORIZER_RAMP_VENDOR_RESTRICTIONS": "Merchant restricted by company policy",
              "AUTHORIZER_SPEND_ALLOCATION_ARCHIVED_FUNDS": "Funds are currently archived",
              "AUTHORIZER_SPEND_ALLOCATION_MEMBER_SUSPENDED": "Member access to spending limit is locked",
              "AUTHORIZER_SPEND_ALLOCATION_SUSPENDED": "Spending limit is suspended",
              "AUTHORIZER_TRANSACTION_AMOUNT_LIMIT": "Transaction amount exceeded the per-transaction limit",
              "AUTHORIZER_UNAUTHORIZED_USER": "User account is no longer active",
              "AUTHORIZER_UNDER_TRANSACTION_AMOUNT_LIMIT": "Transaction amount fell below the per-transaction minimum",
              "AUTHORIZER_USER_LIMIT": "User spending limit exceeded",
              "AUTHORIZER_USER_SUSPENDED": "User account is locked",
              "BLOCKED_COUNTRY": "Transaction country not supported",
              "CARD_EXPIRED": "Card has expired",
              "CARD_LOST_OR_STOLEN": "Card reported as lost or stolen",
              "CARD_TERMINATED": "Card has been terminated",
              "CHIP_FAILURE": "Card chip verification failed",
              "FORBIDDEN_CATEGORY": "Merchant category not allowed",
              "INSECURE_AUTHORIZATION_METHOD": "Insecure authorization method used",
              "INSUFFICIENT_FUNDS": "Insufficient funds available",
              "INVALID_PIN": "Invalid PIN entered",
              "MISSING_CVV": "CVV is required",
              "MISSING_EXPIRATION": "Expiration date is required",
              "MOBILE_WALLET_FAILURE": "Mobile wallet processing error",
              "MOBILE_WALLET_TOKEN_NOT_FOUND": "Mobile wallet token not found",
              "MOBILE_WALLET_TOKEN_TERMINATED": "Mobile wallet token has been terminated",
              "NETWORK_DECLINE_ACCOUNT_VERIFICATION": "Account verification required",
              "NETWORK_DECLINE_ADVICE": "Transaction declined by network",
              "NETWORK_DECLINE_ADVICE_ACQUIRER_ISSUE": "Network processing error",
              "NETWORK_DECLINE_ADVICE_ADDITIONAL_AUTHENTICATION_REQUIRED": "Additional authentication required",
              "NETWORK_DECLINE_ADVICE_FORCED_STIP_BY_ISSUER": "Transaction declined by network",
              "NETWORK_DECLINE_ADVICE_ISSUER_LOGGED_OFF": "Network temporarily unavailable",
              "NETWORK_DECLINE_ADVICE_ISSUER_TIMEOUT": "Network timeout occurred",
              "NETWORK_DECLINE_ADVICE_ISSUER_UNAVAILABLE": "Network temporarily unavailable",
              "NETWORK_DECLINE_ADVICE_PIN_ERROR": "PIN verification error",
              "NETWORK_DECLINE_ADVICE_RECURRING_PAYMENT": "Recurring payment declined",
              "NETWORK_DECLINE_ADVICE_SELECTIVE_ACCEPTANCE_SERVICE": "Transaction not accepted",
              "NETWORK_DECLINE_ADVICE_SUSPECTED_FRAUD_TRANSACTION": "Transaction flagged for suspected fraud",
              "NETWORK_DECLINE_ADVICE_TOKEN_PROVISIONING_SERVICE": "Token provisioning error",
              "NETWORK_DECLINE_ADVICE_VISA_PAYMENT_CONTROLS_RULE": "Transaction blocked by payment controls",
              "NOT_ACTIVE": "Card is not active",
              "NOT_ALLOWED": "Transaction not allowed",
              "NO_AUTO_ROUTED_LIMITS_AVAILABLE": "No eligible spending limit available",
              "NO_LINKED_SPEND_ALLOCATION": "No spending limit linked to this card",
              "OFAC_VERIFICATION_NEEDED": "Account verification required",
              "OPEN_TO_BUY_LIMIT": "Available business balance exceeded",
              "OTHER": "Transaction declined",
              "PIN_BLOCKED": "PIN has been blocked",
              "PIN_TRY_LIMIT_EXCEEDED": "PIN attempt limit exceeded",
              "PROCESSOR_CAP": "Transaction amount exceeds network limit",
              "QUASI_CASH": "Cash-equivalent transactions not supported",
              "ROUTED_TO_TERMINATED_SPEND_ALLOCATION": "Spending limit has been terminated",
              "STRIPE_WEBHOOK_TIMEOUT": "Temporary processing error",
              "SUSPECTED_BIN_ATTACK": "Transaction declined for security reasons",
              "SUSPECTED_FRAUD": "Transaction flagged for suspected fraud",
              "THREE_D_SECURE_REQUIRED": "3D Secure authentication required",
              "USER_BLOCKED": "User account is blocked",
              "USER_TERMINATED": "User account has been terminated",
              "WRONG_ADDRESS": "Incorrect billing address",
              "WRONG_CVV": "Incorrect CVV entered",
              "WRONG_EXPIRATION": "Incorrect expiration date entered",
              "WRONG_POSTAL_CODE": "Incorrect postal code entered"
            }
          }
        },
        "required": [
          "declined_amount"
        ],
        "type": "object"
      },
      "ApiTransactionDispute": {
        "properties": {
          "created_at": {
            "description": "Time at which the dispute is created, presented in ISO8601 format.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Uniquely identifies a transaction dispute.",
            "format": "uuid",
            "type": "string"
          },
          "memo": {
            "description": "Free form text regarding the dispute.",
            "type": "string"
          },
          "type": {
            "description": "The dispute type; It could be one of the following values: RESOLVED_BY_RAMP, CANCELLED_BY_CUSTOMER, CANCELLED_BY_RAMP, CREATED_MERCHANT_ERROR and CREATED_UNRECOGNIZED_CHARGE.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiTransactionLineItem": {
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the line item.",
            "items": {
              "$ref": "#/components/schemas/ApiTransactionAccountingFieldSelection"
            },
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the line item, denominated in the currency that the transaction was settled in.",
            "nullable": true
          },
          "converted_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the split line item, converted to the currency of the card on which the transaction occurred.",
            "nullable": true
          },
          "id": {
            "description": "Stable Ramp identifier for a persisted split line. Null for generated lines.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "memo": {
            "description": "Memo associated with the line item.",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "converted_amount"
        ],
        "type": "object"
      },
      "ApiTransactionPolicyViolation": {
        "properties": {
          "created_at": {
            "description": "Time at which the policy violation is created, presented in ISO8601 format.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Uniquely identifies a policy violation.",
            "format": "uuid",
            "type": "string"
          },
          "memo": {
            "description": "Free form text regarding the policy violation.",
            "type": "string"
          },
          "type": {
            "description": "Type of the policy violation.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiTransactionPurchaseAutoRental": {
        "properties": {
          "check_out": {
            "type": "string"
          },
          "days": {
            "type": "integer"
          }
        },
        "type": "object"
      },
      "ApiTransactionPurchaseData": {
        "properties": {
          "auto_rental": {
            "$ref": "#/components/schemas/ApiTransactionPurchaseAutoRental",
            "description": "Auto rental purchase data provided by the merchant",
            "nullable": true
          },
          "flight": {
            "$ref": "#/components/schemas/ApiTransactionPurchaseFlightData",
            "description": "Flight purchase data provided by the merchant",
            "nullable": true
          },
          "lodging": {
            "$ref": "#/components/schemas/ApiTransactionPurchaseLodging",
            "description": "Lodging purchase data provided by the merchant",
            "nullable": true
          },
          "receipt": {
            "$ref": "#/components/schemas/ApiTransactionPurchaseReceipt",
            "description": "Receipt purchase data provided by the merchant",
            "nullable": true
          },
          "reference": {
            "description": "Purchase data reference ID provided by the merchant",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "auto_rental",
          "flight",
          "lodging",
          "receipt",
          "reference"
        ],
        "type": "object"
      },
      "ApiTransactionPurchaseFlightData": {
        "properties": {
          "departure_date": {
            "nullable": true,
            "type": "string"
          },
          "passenger_name": {
            "type": "string"
          },
          "segments": {
            "items": {
              "$ref": "#/components/schemas/ApiTransactionPurchaseFlightSegment"
            },
            "nullable": true,
            "type": "array"
          }
        },
        "required": [
          "departure_date",
          "segments"
        ],
        "type": "object"
      },
      "ApiTransactionPurchaseFlightSegment": {
        "properties": {
          "arrival_airport_code": {
            "type": "string"
          },
          "carrier": {
            "type": "string"
          },
          "departure_airport_code": {
            "type": "string"
          },
          "flight_number": {
            "type": "string"
          },
          "service_class": {
            "type": "string"
          },
          "stopover_allowed": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ApiTransactionPurchaseLodging": {
        "properties": {
          "check_in": {
            "type": "string"
          },
          "nights": {
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "nights"
        ],
        "type": "object"
      },
      "ApiTransactionPurchaseReceipt": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ApiTransactionPurchaseReceiptLineItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ApiTransactionPurchaseReceiptLineItem": {
        "properties": {
          "commodity_code": {
            "nullable": true,
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "discount": {
            "nullable": true,
            "type": "number"
          },
          "quantity": {
            "type": "number"
          },
          "tax": {
            "nullable": true,
            "type": "number"
          },
          "total": {
            "type": "number"
          },
          "unit_cost": {
            "type": "number"
          }
        },
        "required": [
          "commodity_code",
          "discount",
          "tax"
        ],
        "type": "object"
      },
      "ApiTransactionsUpdateRequestBody": {
        "example": {
          "line_items": [
            {
              "accounting_field_selections": [
                {
                  "field_external_id": "200",
                  "field_option_external_id": "1001"
                }
              ],
              "amount": 4000,
              "memo": "Case-67890"
            },
            {
              "accounting_field_selections": [
                {
                  "field_id": "8ad1e4a8-9f0f-4b6e-9a4e-3b4b4b2c1d10",
                  "field_option_id": "2f0c8d2e-5a1b-4c3d-8e9f-0a1b2c3d4e5f"
                }
              ],
              "amount": 6000,
              "memo": "Case-12345"
            }
          ]
        },
        "properties": {
          "line_items": {
            "description": "List of line items for the split. Send an empty array to unsplit (remove all line items). Omit to leave splits unchanged.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingSplitLineItemRequestBody"
            },
            "nullable": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "ApiUnifiedRequestAttachmentResource": {
        "example": {
          "attachment_type": "SPEND_REQUEST",
          "created_at": "2024-05-01T12:00:00+00:00",
          "download_url": "https://files.ramp.com/quote.pdf?signature=...",
          "filename": "quote.pdf",
          "id": "7f7e9d1a-3f4c-4a6b-9e0b-2b1d7c1f5a10",
          "source": "RAMP",
          "unified_request_id": "2d1c5b3a-8f9e-4d7c-a1b2-3c4d5e6f7a8b",
          "uploaded_by_user_id": "0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"
        },
        "properties": {
          "attachment_type": {
            "description": "Type of attachment. PURCHASE_ORDER attachments are included in the purchase order PDF sent to the vendor; SPEND_REQUEST attachments are supporting documents on the request.",
            "enum": [
              "PURCHASE_ORDER",
              "SPEND_REQUEST"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "PURCHASE_ORDER": "Attached to the purchase order and included in the PO PDF sent to the vendor.",
              "SPEND_REQUEST": "Supporting document on the request; not shared with the vendor."
            }
          },
          "created_at": {
            "description": "Time at which the attachment was uploaded.",
            "format": "date-time",
            "type": "string"
          },
          "download_url": {
            "description": "Pre-signed URL to download the attachment. Valid for 1 hour.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "filename": {
            "description": "Original filename of the uploaded attachment.",
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the attachment.",
            "format": "uuid",
            "type": "string"
          },
          "source": {
            "description": "Where the attachment originated from.",
            "enum": [
              "DEVELOPER_API",
              "DOCUSIGN",
              "IRONCLAD",
              "RAMP"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "DEVELOPER_API": "Uploaded through the Ramp Developer API.",
              "DOCUSIGN": "Retrieved from a completed e-signature envelope (DocuSign or Dropbox Sign).",
              "IRONCLAD": "Retrieved from Ironclad after workflow completion.",
              "RAMP": "Uploaded through the Ramp app."
            }
          },
          "unified_request_id": {
            "description": "Unique identifier of the request this attachment belongs to.",
            "format": "uuid",
            "readOnly": true,
            "type": "string"
          },
          "uploaded_by_user_id": {
            "description": "Unique identifier of the user who uploaded the attachment.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "attachment_type",
          "created_at",
          "download_url",
          "filename",
          "id",
          "source",
          "unified_request_id",
          "uploaded_by_user_id"
        ],
        "type": "object",
        "x-resource-name": "unified_request_attachments"
      },
      "ApiUnifiedRequestAttachmentUploadInputRequestBody": {
        "description": "Request body for uploading a unified request attachment.",
        "example": {
          "attachment_type": "SPEND_REQUEST"
        },
        "properties": {
          "attachment_type": {
            "$ref": "#/components/schemas/SpendRequestDocumentTypeRequestBody",
            "default": "SPEND_REQUEST",
            "description": "Type of attachment. Supported values: SPEND_REQUEST, PURCHASE_ORDER. 'SPEND_REQUEST' attachments are supporting documents on the request and are not shared with the vendor. 'PURCHASE_ORDER' attachments are appended to the purchase order PDF that is sent to the vendor. Defaults to 'SPEND_REQUEST'."
          },
          "file": {
            "$ref": "#/components/schemas/UploadedFileRequestBody",
            "description": "The file to attach. Sent as a multipart part named `file`."
          }
        },
        "required": [
          "file"
        ],
        "title": "ApiUnifiedRequestAttachmentUploadInput",
        "type": "object"
      },
      "ApiUnifiedRequestAttachmentUploadResponse": {
        "properties": {
          "id": {
            "description": "Unique identifier of the uploaded attachment.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "x-resource-name": "unified_request_attachments"
      },
      "ApiUpdateBillInventoryLineItemParamsRequestBody": {
        "properties": {
          "accounting_field_selections": {
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "id": {
            "default": null,
            "description": "Unique identifier of an existing inventory line item on this bill. When provided, the updated line keeps this identifier; when omitted, a new identifier is assigned.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "memo": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "purchase_order_line_item_id": {
            "default": null,
            "description": "Unique identifier of the purchase order line item to match this bill inventory line item to.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "quantity": {
            "minimum": 0,
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "unit_price": {
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "required": [
          "quantity",
          "unit_price"
        ],
        "type": "object"
      },
      "ApiUpdateBillLineItemParamsRequestBody": {
        "properties": {
          "accounting_field_selections": {
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "amount": {
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "id": {
            "default": null,
            "description": "Unique identifier of an existing line item on this bill. When provided, the updated line keeps this identifier; when omitted, a new identifier is assigned.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "memo": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "purchase_order_line_item_id": {
            "default": null,
            "description": "Unique identifier of the purchase order line item to match this bill line item to.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "amount"
        ],
        "type": "object"
      },
      "ApiUpdateBillParamsRequestBody": {
        "example": {
          "accounting_field_selections": [
            {
              "field_external_id": "b3B0aW9uX2lk",
              "field_option_external_id": "aln2l3B0aW9uX2lk"
            }
          ],
          "due_at": "2024-10-15",
          "entity_id": "1cc4b57c-fe4a-4425-90f1-9019d06376b3",
          "inventory_line_items": [
            {
              "accounting_field_selections": [
                {
                  "field_external_id": "aa73laMazi2",
                  "field_option_external_id": "abk3Rkfnls25"
                }
              ],
              "memo": "Pens",
              "quantity": 2.25,
              "unit_price": 55
            }
          ],
          "invoice_number": "123",
          "issued_at": "2024-08-15",
          "line_items": [
            {
              "accounting_field_selections": [],
              "amount": 100,
              "memo": "Printing services"
            }
          ],
          "memo": "Office supplies",
          "payment_date": "2024-08-15",
          "posting_date": null,
          "remote_id": "bo2f1lAnkf3llL",
          "vendor_contact_id": "12f55361-8c7f-42dc-8667-64926d330b80",
          "vendor_id": "c0c89fa8-976e-428d-938d-a5ec89838474",
          "vendor_memo": "Invoice #432 - July 2020"
        },
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the bill.",
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "due_at": {
            "description": "Due date of the bill.",
            "format": "date",
            "type": "string"
          },
          "entity_id": {
            "description": "Associated business entity.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "inventory_line_items": {
            "description": "List of inventory line items associated with the bill. When provided, this will replace all existing inventory line items.",
            "items": {
              "$ref": "#/components/schemas/ApiUpdateBillInventoryLineItemParamsRequestBody"
            },
            "nullable": true,
            "type": "array"
          },
          "invoice_number": {
            "description": "The invoice number on the bill.",
            "maxLength": 84,
            "type": "string"
          },
          "issued_at": {
            "description": "Issued date of the bill.",
            "format": "date",
            "type": "string"
          },
          "line_items": {
            "description": "List of line items related to the bill. When provided, this will replace all existing line items.",
            "items": {
              "$ref": "#/components/schemas/ApiUpdateBillLineItemParamsRequestBody"
            },
            "nullable": true,
            "type": "array"
          },
          "memo": {
            "description": "Memo of the bill.",
            "maxLength": 1000,
            "nullable": true,
            "type": "string"
          },
          "payment_date": {
            "description": "For non-card payment methods, the date the payment is scheduled to be initiated. If the requested date is unavailable, such as a weekend, bank holiday, past date, or same-day cutoff miss, Ramp schedules the payment for the next available initiation date. Set to null to unschedule the payment.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "payment_method": {
            "description": "Payment method of the bill.",
            "enum": [
              "ACH",
              "CARD",
              "CHECK",
              "CRYPTO_WALLET_TRANSFER",
              "DOMESTIC_WIRE",
              "INTERNATIONAL",
              "LOCAL_BANK_TRANSFER",
              "ONE_TIME_CARD",
              "ONE_TIME_CARD_DELIVERY",
              "PAID_MANUALLY",
              "SWIFT"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ACH": "A US ACH bank transfer.",
              "CARD": "A payment made with an existing Ramp card.",
              "CHECK": "A paper check payment mailed to the vendor.",
              "CRYPTO_WALLET_TRANSFER": "A transfer to a cryptocurrency wallet.",
              "DOMESTIC_WIRE": "A US domestic wire transfer.",
              "INTERNATIONAL": "An international bank transfer.",
              "LOCAL_BANK_TRANSFER": "A local bank transfer in a non-USD currency.",
              "ONE_TIME_CARD": "A single-use card payment where the business user pays the vendor directly.",
              "ONE_TIME_CARD_DELIVERY": "A single-use card payment where Ramp sends card details to the vendor contact.",
              "PAID_MANUALLY": "A payment recorded as paid outside of Ramp.",
              "SWIFT": "An international USD-denominated SWIFT bank transfer."
            }
          },
          "posting_date": {
            "description": "The date the bill is posted to the accounting system.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "purchase_order_ids": {
            "description": "Unique identifiers of the purchase orders to match this bill to. When provided, this will replace all existing linked purchase orders.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "purchase_orders",
                "type": "many-to-many"
              }
            },
            "type": "array"
          },
          "remote_id": {
            "description": "An ID that identifies the bill on client's side.",
            "nullable": true,
            "type": "string"
          },
          "vendor_contact_id": {
            "description": "Unique identifier of vendor contact, must be associated with passed vendor.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendor_contacts",
              "type": "many-to-one"
            }
          },
          "vendor_id": {
            "description": "Unique identifier of bill vendor.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          },
          "vendor_memo": {
            "description": "Memo to the vendor.",
            "maxLength": 400,
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiUpdatePurchaseOrderLineItemParamsRequestBody": {
        "example": {
          "accounting_field_selections": [],
          "description": "updated line item description",
          "unit_price": 150,
          "unit_quantity": 3
        },
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the line item. Will be updated in an 'all or nothing' manner.",
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "description": {
            "description": "Description of the line item.",
            "nullable": true,
            "type": "string"
          },
          "end_date": {
            "description": "The date when spending for this line item ends. Omit to preserve the current date; set to null to clear it.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "start_date": {
            "description": "The date when spending for this line item begins. Omit to preserve the current date; set to null to clear it.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "unit_price": {
            "description": "Unit price of the line item.",
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "unit_quantity": {
            "description": "Quantity of the line item.",
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "withholding_rate": {
            "description": "Retainage withholding rate for the line item, expressed as a fractional decimal. If set, this line-level rate overrides the purchase order withholding_default_rate for this line item. For example, 0.10 means 10%.",
            "exclusiveMaximum": true,
            "maximum": 1,
            "minimum": 0,
            "nullable": true,
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "type": "object"
      },
      "ApiUserCreateRequestBody": {
        "example": {
          "department_id": "2d68eb67-f6eb-4284-8683-7d530c77a5a6",
          "direct_manager_id": "ccc5d4cc-337f-49a5-86b3-5df128233f2c",
          "email": "cardholder_7@company.com",
          "first_name": "Linda",
          "idempotency_key": "d471d830-2e73-4082-8a75-68540f83e86e",
          "is_manager": false,
          "last_name": "Gu",
          "location_id": "f4efe11c-221f-4b49-a1e4-33eaf96a49ee",
          "role": "BUSINESS_USER"
        },
        "properties": {
          "department_id": {
            "description": "Unique identifier of the employee's department",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "departments",
              "type": "many-to-one"
            }
          },
          "direct_manager_id": {
            "description": "Unique identifier of the employee's direct manager",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "email": {
            "description": "The employee's email address",
            "format": "email",
            "type": "string"
          },
          "first_name": {
            "description": "First name of the employee",
            "maxLength": 255,
            "type": "string"
          },
          "idempotency_key": {
            "description": "an idempotency key is a unique value generated by the client which the server uses to recognize subsequent retries of the same request. To avoid collisions, we encourage clients to use random generated UUIDs.",
            "type": "string"
          },
          "is_draft": {
            "description": "When set to true, the user will be created as a draft. Draft users are not sent an invite email and must be explicitly activated later, which can be accomplished in-app or via the `POST /users/<string:user_id>/invite` resource.",
            "type": "boolean"
          },
          "is_manager": {
            "description": "Whether the employee is a manager",
            "type": "boolean"
          },
          "last_name": {
            "description": "Last name of the employee",
            "maxLength": 255,
            "type": "string"
          },
          "location_id": {
            "description": "Unique identifier of the employee's location",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "locations",
              "type": "many-to-one"
            }
          },
          "role": {
            "description": "The employee's role; It could be one of the following values: Admin, Cardholder, Bookkeeper; Note that Owner is not a invitable role.",
            "enum": [
              "AUDITOR",
              "BUSINESS_ADMIN",
              "BUSINESS_BOOKKEEPER",
              "BUSINESS_OWNER",
              "BUSINESS_USER",
              "GUEST_USER",
              "IT_ADMIN"
            ],
            "type": "string"
          },
          "scheduled_deactivation_date": {
            "description": "The date when the user is scheduled to be deactivated. For guest users, this will automatically be set to 6 months from the invite creation date unless explicitly set to null. Cannot be set for admins or owners.",
            "format": "date",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email",
          "first_name",
          "idempotency_key",
          "last_name",
          "role"
        ],
        "type": "object"
      },
      "ApiUserCustomField": {
        "properties": {
          "name": {
            "description": "Name of the custom field",
            "type": "string"
          },
          "value": {
            "description": "Value of the custom field",
            "type": "string"
          }
        },
        "required": [
          "name",
          "value"
        ],
        "type": "object"
      },
      "ApiUserDeferredTaskContext": {
        "properties": {
          "acting_user_id": {
            "description": "Unique identifier of the acting user that initiated the deferred task.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "type": "object"
      },
      "ApiUserDeferredTaskData": {
        "properties": {
          "error": {
            "description": "An error message if the deferred task fails",
            "type": "string"
          },
          "user_id": {
            "description": "The subject employee's ID of the deferred task.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "type": "object",
        "x-resource-name": "user_deferred_task_data"
      },
      "ApiUserFieldAnswerRequestBody": {
        "description": "Answer for a user field.",
        "properties": {
          "answer_type": {
            "description": "Must be user.",
            "enum": [
              "user"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "user_uuid": {
            "description": "ID of an existing user in the business.",
            "format": "uuid",
            "title": "User Uuid",
            "type": "string"
          }
        },
        "required": [
          "answer_type",
          "field_id",
          "user_uuid"
        ],
        "title": "ApiUserFieldAnswer",
        "type": "object"
      },
      "ApiUserInviteActionRequestBody": {
        "example": {
          "action": "SCHEDULE",
          "invitation_time": "2026-06-15T17:00:00+00:00"
        },
        "properties": {
          "action": {
            "description": "The invite action to perform. SCHEDULE creates or updates a scheduled invitation (requires `invitation_time`). DESCHEDULE cancels any pending scheduled invitation. SEND_NOW immediately sends the user's invite.",
            "enum": [
              "DESCHEDULE",
              "SCHEDULE",
              "SEND_NOW"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "DESCHEDULE": "Cancel any pending scheduled invitation.",
              "SCHEDULE": "Create or update a scheduled invitation at `invitation_time`.",
              "SEND_NOW": "Immediately publish the draft invite and send the invite email."
            }
          },
          "invitation_time": {
            "description": "The datetime at which the user should be invited. Required when `action` is SCHEDULE; ignored otherwise. Must be an ISO 8601 datetime with a timezone offset.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "action"
        ],
        "type": "object"
      },
      "ApiUserUpdateRequestBody": {
        "example": {
          "department_id": "2d68eb67-f6eb-4284-8683-7d530c77a5a6",
          "direct_manager_id": "ccc5d4cc-337f-49a5-86b3-5df128233f2c",
          "first_name": "Jeremy",
          "is_manager": true,
          "last_name": "Smith",
          "location_id": "f4efe11c-221f-4b49-a1e4-33eaf96a49ee",
          "role": "BUSINESS_ADMIN"
        },
        "properties": {
          "auto_promote": {
            "description": "Whether to automatically promote the users manager to manager.",
            "type": "boolean"
          },
          "department_id": {
            "description": "Unique identifier of the employee's department",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "departments",
              "type": "many-to-one"
            }
          },
          "direct_manager_id": {
            "description": "Unique identifier of the employee's direct manager",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "first_name": {
            "minLength": 1,
            "type": "string"
          },
          "is_manager": {
            "description": "Whether the employee is a manager",
            "type": "boolean"
          },
          "last_name": {
            "minLength": 1,
            "type": "string"
          },
          "location_id": {
            "description": "Unique identifier of the employee's location",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "locations",
              "type": "many-to-one"
            }
          },
          "role": {
            "description": "The employee's role; It could be one of the following values: Admin, Cardholder, Bookkeeper; Note that Owner is not a permissible value.",
            "enum": [
              "AUDITOR",
              "BUSINESS_ADMIN",
              "BUSINESS_BOOKKEEPER",
              "BUSINESS_OWNER",
              "BUSINESS_USER",
              "GUEST_USER",
              "IT_ADMIN"
            ],
            "type": "string"
          },
          "scheduled_deactivation_date": {
            "description": "The date when the user is scheduled to be deactivated. Set to null to clear. Cannot be set for admins or owners.",
            "format": "date",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiVendorAchPaymentMethodResource": {
        "properties": {
          "account_number_last_four": {
            "description": "Last four digits of the bank account number.",
            "maxLength": 4,
            "minLength": 4,
            "type": "string"
          },
          "fee": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "The fee charged for using this payment method."
          },
          "id": {
            "description": "Unique identifier of the payment method.",
            "format": "uuid",
            "type": "string"
          },
          "routing_number_last_four": {
            "description": "Last four digits of the routing number.",
            "maxLength": 4,
            "minLength": 4,
            "type": "string"
          },
          "type": {
            "description": "The type of payment method.",
            "enum": [
              "ACH"
            ],
            "type": "string"
          }
        },
        "required": [
          "account_number_last_four",
          "fee",
          "id",
          "routing_number_last_four",
          "type"
        ],
        "type": "object"
      },
      "ApiVendorAddressCreateRequestBody": {
        "properties": {
          "address_line_1": {
            "description": "Primary address line of the vendor.",
            "type": "string"
          },
          "address_line_2": {
            "description": "Secondary address line or suite number of the vendor.",
            "nullable": true,
            "type": "string"
          },
          "city": {
            "description": "City of the vendor address.",
            "type": "string"
          },
          "country": {
            "description": "Country of the vendor address.",
            "type": "string"
          },
          "postal_code": {
            "description": "Postal or ZIP code of the vendor address.",
            "type": "string"
          },
          "state": {
            "description": "Address state/province abbreviation. For US addresses, use the two-letter state abbreviation, such as VA. Required for addresses in US, CA, and AU. Ignored for other countries.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "address_line_1",
          "city",
          "country",
          "postal_code"
        ],
        "type": "object"
      },
      "ApiVendorAddressResource": {
        "properties": {
          "address_line_1": {
            "description": "Primary address line of the vendor address.",
            "type": "string"
          },
          "address_line_2": {
            "description": "Secondary address line of the vendor address.",
            "type": "string"
          },
          "city": {
            "description": "City of the vendor address.",
            "type": "string"
          },
          "country": {
            "description": "Country of the vendor address.",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the vendor address.",
            "format": "uuid",
            "type": "string"
          },
          "is_default": {
            "description": "Whether this is the vendor's default address.",
            "readOnly": true,
            "type": "boolean"
          },
          "postal_code": {
            "description": "Postal or ZIP code of the vendor address.",
            "type": "string"
          },
          "state": {
            "description": "State or province of the vendor address.",
            "type": "string"
          }
        },
        "required": [
          "address_line_1",
          "city",
          "country",
          "id",
          "is_default",
          "postal_code"
        ],
        "type": "object"
      },
      "ApiVendorAgreementContractOwner": {
        "properties": {
          "email": {
            "type": "string"
          },
          "first_name": {
            "type": "string"
          },
          "full_name": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "last_name": {
            "type": "string"
          },
          "profile_picture_url": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email",
          "first_name",
          "full_name",
          "id",
          "last_name"
        ],
        "type": "object"
      },
      "ApiVendorAgreementCreateRequestBody": {
        "example": {
          "auto_renewal": true,
          "contract_owner_ids": [
            "2d68eb67-f6eb-4284-8683-7d530c77a5a6"
          ],
          "description": "Annual software agreement",
          "end_date": "2025-12-31",
          "last_date_to_terminate": "2025-11-30",
          "line_items": [
            {
              "price_per_unit": "1250",
              "product_or_service_name": "Platform subscription",
              "quantity": "1",
              "total_price": "1250"
            }
          ],
          "name": "MSA - Acme",
          "notifications_on": true,
          "start_date": "2025-01-01",
          "total_value": {
            "amount": 125000,
            "currency_code": "USD"
          }
        },
        "properties": {
          "auto_renewal": {
            "description": "Whether the agreement automatically renews.",
            "type": "boolean"
          },
          "contract_owner_ids": {
            "description": "List of contract owner user IDs.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            },
            "nullable": true,
            "type": "array"
          },
          "description": {
            "default": null,
            "description": "Description of the vendor agreement.",
            "nullable": true,
            "type": "string"
          },
          "end_date": {
            "default": null,
            "description": "End date of the agreement.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "last_date_to_terminate": {
            "default": null,
            "description": "Last date by which the agreement can be terminated.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "line_items": {
            "default": null,
            "description": "Line items associated with the agreement.",
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementLineItemCreateInputRequestBody"
            },
            "nullable": true,
            "type": "array"
          },
          "name": {
            "description": "Name of the vendor agreement.",
            "minLength": 1,
            "type": "string"
          },
          "notifications_on": {
            "description": "Whether notifications are enabled for this agreement.",
            "type": "boolean"
          },
          "renewal_notification_settings": {
            "$ref": "#/components/schemas/PayeeRenewalNotificationSettingsCreateSchemaRequestBody",
            "default": null,
            "description": "Notification settings to apply to this agreement.",
            "nullable": true
          },
          "start_date": {
            "description": "Start date of the agreement.",
            "format": "date",
            "type": "string"
          },
          "total_value": {
            "$ref": "#/components/schemas/ApiVendorAgreementCurrencyAmountInputRequestBody",
            "description": "Total monetary value of the agreement."
          }
        },
        "required": [
          "auto_renewal",
          "name",
          "notifications_on",
          "start_date",
          "total_value"
        ],
        "type": "object"
      },
      "ApiVendorAgreementCurrencyAmountInputRequestBody": {
        "properties": {
          "amount": {
            "description": "Monetary amount in the currency's minor unit.",
            "title": "Amount",
            "type": "integer"
          },
          "currency_code": {
            "$ref": "#/components/schemas/CurrencyRequestBody",
            "default": "USD",
            "description": "Three-letter ISO currency code for the amount."
          }
        },
        "required": [
          "amount"
        ],
        "title": "ApiVendorAgreementCurrencyAmountInput",
        "type": "object"
      },
      "ApiVendorAgreementCustomFormFileLinkInputRequestBody": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/UUIDStrRequestBody",
            "description": "Unique identifier of the document or file to link."
          },
          "type": {
            "description": "Document source type.",
            "enum": [
              "CUSTOM_FORM_FILE"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "title": "ApiVendorAgreementCustomFormFileLinkInput",
        "type": "object"
      },
      "ApiVendorAgreementDaysRemaining": {
        "properties": {
          "end_date_used": {
            "enum": [
              "END_DATE",
              "LAST_DATE_TO_TERMINATE"
            ],
            "nullable": true,
            "type": "string"
          },
          "is_expired": {
            "nullable": true,
            "type": "boolean"
          },
          "is_overdue": {
            "nullable": true,
            "type": "boolean"
          },
          "num_days_until_end": {
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "ApiVendorAgreementDepartment": {
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "ApiVendorAgreementDetailResource": {
        "properties": {
          "archived_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "auto_renewal": {
            "description": "Whether the agreement automatically renews.",
            "type": "boolean"
          },
          "available_actions": {
            "$ref": "#/components/schemas/PayeeAgreementAvailableActionsSchema"
          },
          "comment_thread_uuid": {
            "default": null,
            "description": "Unique identifier of the comment thread for this agreement.",
            "nullable": true,
            "type": "string"
          },
          "contract_owners": {
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementContractOwner"
            },
            "type": "array"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "description": "Currency code for the agreement amounts.",
            "type": "string"
          },
          "custom_record_field_values": {
            "items": {
              "$ref": "#/components/schemas/CustomCellOutputWithLoadedReferences"
            },
            "type": "array"
          },
          "days_remaining": {
            "$ref": "#/components/schemas/ApiVendorAgreementDaysRemaining"
          },
          "deleted_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "description": {
            "default": null,
            "description": "Description of the vendor agreement.",
            "nullable": true,
            "type": "string"
          },
          "draft_spend_requests": {
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementDraftSpendRequest"
            },
            "type": "array"
          },
          "end_date": {
            "default": null,
            "description": "End date of the agreement.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "has_approved_renewal_request": {
            "description": "Whether an approved renewal request exists for this agreement.",
            "type": "boolean"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_active": {
            "description": "Whether the agreement is currently active.",
            "type": "boolean"
          },
          "is_snoozed": {
            "description": "Whether renewal notifications for this agreement are snoozed.",
            "type": "boolean"
          },
          "is_up_for_renewal": {
            "description": "Whether the agreement is currently up for renewal.",
            "type": "boolean"
          },
          "last_date_to_terminate": {
            "default": null,
            "description": "Last date by which the agreement can be terminated.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "latest_rejected_renewal_request": {
            "$ref": "#/components/schemas/ApiVendorAgreementRejectedRenewalRequest",
            "nullable": true
          },
          "line_items": {
            "items": {
              "type": "object"
            },
            "nullable": true,
            "type": "array"
          },
          "name": {
            "description": "Name of the vendor agreement.",
            "type": "string"
          },
          "notification_trigger_group": {
            "$ref": "#/components/schemas/ApiVendorAgreementNotificationTriggerGroup",
            "nullable": true
          },
          "notifications_on": {
            "description": "Whether notifications are enabled for this agreement.",
            "type": "boolean"
          },
          "payee": {
            "$ref": "#/components/schemas/ReducedPayeePydanticSchema"
          },
          "pending_spend_requests": {
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementPendingSpendRequest"
            },
            "type": "array"
          },
          "purchase_orders": {
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementPurchaseOrder"
            },
            "type": "array"
          },
          "ramp_event_history_id": {
            "format": "uuid",
            "type": "string"
          },
          "renewal_action": {
            "nullable": true,
            "type": "object"
          },
          "renewal_status": {
            "enum": [
              "CANCELLED",
              "EVALUATING",
              "EXPIRED",
              "INITIATED",
              "NOT_STARTED",
              "PLANNING",
              "REJECTED",
              "RENEWED",
              "TERMINATED"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "CANCELLED": "The agreement was manually marked as not renewing.",
              "EVALUATING": "The agreement is manually marked as being evaluated for renewal.",
              "EXPIRED": "The agreement has ended based on its contract dates.",
              "INITIATED": "A renewal request has been submitted for approval.",
              "NOT_STARTED": "The agreement is active and no renewal action has been started.",
              "PLANNING": "The agreement is manually marked as planning to renew.",
              "REJECTED": "The renewal request was rejected.",
              "RENEWED": "The agreement was manually marked as renewed.",
              "TERMINATED": "The agreement was manually terminated."
            }
          },
          "start_date": {
            "default": null,
            "description": "Start date of the agreement.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "total_value": {
            "$ref": "#/components/schemas/CurrencyAmount"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "auto_renewal",
          "available_actions",
          "comment_thread_uuid",
          "contract_owners",
          "created_at",
          "currency",
          "custom_record_field_values",
          "days_remaining",
          "description",
          "draft_spend_requests",
          "end_date",
          "has_approved_renewal_request",
          "id",
          "is_active",
          "is_snoozed",
          "is_up_for_renewal",
          "last_date_to_terminate",
          "name",
          "notifications_on",
          "payee",
          "pending_spend_requests",
          "purchase_orders",
          "ramp_event_history_id",
          "renewal_status",
          "start_date",
          "total_value",
          "updated_at"
        ],
        "type": "object"
      },
      "ApiVendorAgreementDocumentLinkInputRequestBody": {
        "discriminator": {
          "mapping": {
            "CUSTOM_FORM_FILE": "#/components/schemas/ApiVendorAgreementCustomFormFileLinkInputRequestBody",
            "PAYEE_DOCUMENT": "#/components/schemas/ApiVendorAgreementPayeeDocumentLinkInputRequestBody",
            "SPEND_REQUEST_DOCUMENT": "#/components/schemas/ApiVendorAgreementSpendRequestDocumentLinkInputRequestBody"
          },
          "propertyName": "type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ApiVendorAgreementCustomFormFileLinkInputRequestBody"
          },
          {
            "$ref": "#/components/schemas/ApiVendorAgreementPayeeDocumentLinkInputRequestBody"
          },
          {
            "$ref": "#/components/schemas/ApiVendorAgreementSpendRequestDocumentLinkInputRequestBody"
          }
        ]
      },
      "ApiVendorAgreementDocumentUploadInputRequestBody": {
        "properties": {
          "documents": {
            "description": "Agreement documents to upload.",
            "items": {
              "$ref": "#/components/schemas/UploadedFileRequestBody"
            },
            "title": "Documents",
            "type": "array"
          }
        },
        "title": "ApiVendorAgreementDocumentUploadInput",
        "type": "object"
      },
      "ApiVendorAgreementDocumentUploadResponse": {
        "properties": {
          "batch_id": {
            "description": "Identifier for the created document batch.",
            "title": "Batch Id",
            "type": "string"
          },
          "document_count": {
            "description": "Number of uploaded documents accepted for processing.",
            "title": "Document Count",
            "type": "integer"
          },
          "job_id": {
            "description": "Async job identifier for the upload batch.",
            "title": "Job Id",
            "type": "string"
          }
        },
        "required": [
          "batch_id",
          "document_count",
          "job_id"
        ],
        "title": "ApiVendorAgreementDocumentUploadResponse",
        "type": "object"
      },
      "ApiVendorAgreementDraftSpendRequest": {
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "nullable": true,
            "type": "string"
          },
          "source": {
            "enum": [
              "EXPANSION_REQUEST",
              "RENEWAL",
              "REQUEST_APPROVAL",
              "REQUEST_LINKED_TO_AGREEMENT"
            ],
            "type": "string"
          },
          "total_amount": {
            "nullable": true,
            "type": "string"
          },
          "unified_request_id": {
            "format": "uuid",
            "type": "string"
          },
          "updated_at": {
            "format": "date",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "id",
          "source",
          "unified_request_id"
        ],
        "type": "object"
      },
      "ApiVendorAgreementLatestRenewalRequest": {
        "properties": {
          "currency": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "nullable": true,
            "type": "string"
          },
          "request_status": {
            "enum": [
              "APPROVED",
              "DRAFT",
              "REJECTED",
              "SUBMITTED"
            ],
            "type": "string"
          },
          "submitted_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "total_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "nullable": true
          },
          "unified_request_id": {
            "format": "uuid",
            "type": "string"
          },
          "user_full_name": {
            "type": "string"
          }
        },
        "required": [
          "currency",
          "id",
          "request_status",
          "unified_request_id",
          "user_full_name"
        ],
        "type": "object"
      },
      "ApiVendorAgreementLineItemCreateInputRequestBody": {
        "properties": {
          "discount": {
            "default": null,
            "description": "Discount applied to the line item, if any.",
            "nullable": true,
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Discount"
          },
          "price_per_unit": {
            "description": "Price for a single unit in the line item.",
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Price Per Unit"
          },
          "product_or_service_name": {
            "description": "Name of the product or service covered by the agreement line item.",
            "title": "Product Or Service Name",
            "type": "string"
          },
          "quantity": {
            "description": "Quantity of units included in the line item.",
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Quantity"
          },
          "term": {
            "default": null,
            "description": "Freeform term label for the line item, if applicable.",
            "nullable": true,
            "title": "Term",
            "type": "string"
          },
          "time_unit": {
            "default": null,
            "description": "Time unit associated with the line item, if applicable.",
            "nullable": true,
            "title": "Time Unit",
            "type": "string"
          },
          "total_price": {
            "default": null,
            "description": "Total price for the line item, if provided.",
            "nullable": true,
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Total Price"
          },
          "unit": {
            "default": null,
            "description": "Unit name for the quantity, if applicable.",
            "nullable": true,
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "price_per_unit",
          "product_or_service_name",
          "quantity"
        ],
        "title": "ApiVendorAgreementLineItemCreateInput",
        "type": "object"
      },
      "ApiVendorAgreementLinkInputRequestBody": {
        "properties": {
          "documents": {
            "description": "Existing documents to link to the agreement.",
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementDocumentLinkInputRequestBody"
            },
            "title": "Documents",
            "type": "array"
          },
          "purchase_order_ids": {
            "description": "Unique identifiers of purchase orders to link to the agreement.",
            "items": {
              "type": "string"
            },
            "title": "Purchase Order Ids",
            "type": "array"
          }
        },
        "title": "ApiVendorAgreementLinkInput",
        "type": "object"
      },
      "ApiVendorAgreementLinkResponse": {
        "properties": {
          "agreement": {
            "$ref": "#/components/schemas/ApiVendorAgreementDetailResource"
          },
          "number_of_documents_linked": {
            "description": "Number of documents linked to the agreement.",
            "type": "integer"
          },
          "number_of_purchase_orders_linked": {
            "description": "Number of purchase orders linked to the agreement.",
            "type": "integer"
          }
        },
        "required": [
          "agreement",
          "number_of_documents_linked",
          "number_of_purchase_orders_linked"
        ],
        "type": "object"
      },
      "ApiVendorAgreementListResource": {
        "properties": {
          "auto_renewal": {
            "type": "boolean"
          },
          "available_actions": {
            "type": "object"
          },
          "contract_owners": {
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementContractOwner"
            },
            "type": "array"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "custom_record_field_values": {
            "items": {
              "$ref": "#/components/schemas/CustomCellOutputWithLoadedReferences"
            },
            "type": "array"
          },
          "days_remaining": {
            "$ref": "#/components/schemas/ApiVendorAgreementDaysRemaining"
          },
          "deleted_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "department": {
            "$ref": "#/components/schemas/ApiVendorAgreementDepartment",
            "nullable": true
          },
          "description": {
            "nullable": true,
            "type": "string"
          },
          "draft_spend_requests": {
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementDraftSpendRequest"
            },
            "type": "array"
          },
          "end_date": {
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "has_approved_renewal_request": {
            "type": "boolean"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_snoozed": {
            "type": "boolean"
          },
          "is_up_for_renewal": {
            "type": "boolean"
          },
          "last_date_to_terminate": {
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "latest_renewal_request": {
            "$ref": "#/components/schemas/ApiVendorAgreementLatestRenewalRequest",
            "nullable": true
          },
          "logo": {
            "nullable": true,
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "notifications_on": {
            "type": "boolean"
          },
          "payee_id": {
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          },
          "payee_name": {
            "type": "string"
          },
          "renewal_status": {
            "enum": [
              "CANCELLED",
              "EVALUATING",
              "EXPIRED",
              "INITIATED",
              "NOT_STARTED",
              "PLANNING",
              "REJECTED",
              "RENEWED",
              "TERMINATED"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "CANCELLED": "The agreement was manually marked as not renewing.",
              "EVALUATING": "The agreement is manually marked as being evaluated for renewal.",
              "EXPIRED": "The agreement has ended based on its contract dates.",
              "INITIATED": "A renewal request has been submitted for approval.",
              "NOT_STARTED": "The agreement is active and no renewal action has been started.",
              "PLANNING": "The agreement is manually marked as planning to renew.",
              "REJECTED": "The renewal request was rejected.",
              "RENEWED": "The agreement was manually marked as renewed.",
              "TERMINATED": "The agreement was manually terminated."
            }
          },
          "start_date": {
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "total_value": {
            "$ref": "#/components/schemas/CurrencyAmount"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "uploaded_by_user": {
            "$ref": "#/components/schemas/ApiVendorAgreementUploadedByUser",
            "description": "Recorded uploader of the source document's latest version, or null when unavailable.",
            "nullable": true
          },
          "vendor_owners": {
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementVendorOwner"
            },
            "type": "array"
          }
        },
        "required": [
          "auto_renewal",
          "available_actions",
          "contract_owners",
          "created_at",
          "currency",
          "custom_record_field_values",
          "days_remaining",
          "draft_spend_requests",
          "has_approved_renewal_request",
          "id",
          "is_snoozed",
          "is_up_for_renewal",
          "name",
          "notifications_on",
          "payee_id",
          "payee_name",
          "renewal_status",
          "total_value",
          "updated_at",
          "vendor_owners"
        ],
        "type": "object"
      },
      "ApiVendorAgreementNotificationRecipientGroup": {
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "members": {
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementNotificationRecipientGroupMember"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the recipient group.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "members",
          "name"
        ],
        "type": "object"
      },
      "ApiVendorAgreementNotificationRecipientGroupMember": {
        "properties": {
          "member": {
            "$ref": "#/components/schemas/ApiVendorAgreementNotificationRecipientUser"
          }
        },
        "required": [
          "member"
        ],
        "type": "object"
      },
      "ApiVendorAgreementNotificationRecipientUser": {
        "properties": {
          "full_name": {
            "description": "Full name of the user.",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "full_name",
          "id"
        ],
        "type": "object"
      },
      "ApiVendorAgreementNotificationTrigger": {
        "properties": {
          "contract_event": {
            "enum": [
              "CONTRACT_ENDS_OR_RENEWS",
              "CONTRACT_START_DATE",
              "LAST_DATE_TO_TERMINATE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "CONTRACT_ENDS_OR_RENEWS": "The contract end or renewal date.",
              "CONTRACT_START_DATE": "The contract start date, falling back to the contract creation date. Only valid as a recurring reminder start event on perpetual contracts, with a zero offset; the first reminder is sent one cadence after the start date.",
              "LAST_DATE_TO_TERMINATE": "The last date to terminate the contract."
            }
          },
          "days_before": {
            "description": "Number of days before the contract event to trigger notification.",
            "type": "integer"
          },
          "id": {
            "description": "Unique identifier for the notification trigger.",
            "type": "string"
          }
        },
        "required": [
          "contract_event",
          "days_before",
          "id"
        ],
        "type": "object"
      },
      "ApiVendorAgreementNotificationTriggerGroup": {
        "properties": {
          "id": {
            "description": "Unique identifier for the notification trigger group.",
            "type": "string"
          },
          "notification_triggers": {
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementNotificationTrigger"
            },
            "type": "array"
          },
          "payee_business_settings_id": {
            "default": null,
            "description": "Identifier for the associated payee business settings, if any.",
            "nullable": true,
            "type": "integer"
          },
          "recipient_approval_groups": {
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementNotificationRecipientGroup"
            },
            "type": "array"
          },
          "recipient_users": {
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementNotificationRecipientUser"
            },
            "type": "array"
          },
          "should_notify_vendor_owner_manager": {
            "description": "Deprecated. Always false; vendor owner managers are not notified.",
            "type": "boolean"
          },
          "type": {
            "enum": [
              "CUSTOM_SETTING",
              "DEFAULT_BUSINESS_SETTING"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "notification_triggers",
          "payee_business_settings_id",
          "recipient_approval_groups",
          "recipient_users",
          "should_notify_vendor_owner_manager",
          "type"
        ],
        "type": "object"
      },
      "ApiVendorAgreementPayeeDocumentLinkInputRequestBody": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/UUIDStrRequestBody",
            "description": "Unique identifier of the document or file to link."
          },
          "type": {
            "description": "Document source type.",
            "enum": [
              "PAYEE_DOCUMENT"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "title": "ApiVendorAgreementPayeeDocumentLinkInput",
        "type": "object"
      },
      "ApiVendorAgreementPendingSpendRequest": {
        "properties": {
          "approval_chain_metadata": {
            "$ref": "#/components/schemas/ApprovalChainMetadataPydanticSchema"
          },
          "can_view": {
            "description": "Whether the current user has permission to view this spend request.",
            "type": "boolean"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "created_by": {
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "currency": {
            "description": "Currency code for the spend request amounts.",
            "type": "string"
          },
          "display_name": {
            "default": null,
            "description": "Display name of the spend request.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "default": null,
            "description": "Name of the spend request.",
            "nullable": true,
            "type": "string"
          },
          "request_status": {
            "enum": [
              "APPROVED",
              "DRAFT",
              "REJECTED",
              "SUBMITTED"
            ],
            "type": "string"
          },
          "source": {
            "enum": [
              "EXPANSION_REQUEST",
              "RENEWAL",
              "REQUEST_APPROVAL",
              "REQUEST_LINKED_TO_AGREEMENT"
            ],
            "type": "string"
          },
          "spend_intent_name": {
            "default": null,
            "description": "Name of the associated spend intent.",
            "nullable": true,
            "type": "string"
          },
          "submitted_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "total_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "nullable": true
          },
          "unified_request_id": {
            "format": "uuid",
            "type": "string"
          },
          "user_full_name": {
            "description": "Full name of the user who created the spend request.",
            "type": "string"
          }
        },
        "required": [
          "approval_chain_metadata",
          "can_view",
          "created_at",
          "created_by",
          "currency",
          "display_name",
          "id",
          "name",
          "request_status",
          "source",
          "spend_intent_name",
          "unified_request_id",
          "user_full_name"
        ],
        "type": "object"
      },
      "ApiVendorAgreementPurchaseOrder": {
        "properties": {
          "can_view": {
            "description": "Whether the current user has permission to view this purchase order.",
            "type": "boolean"
          },
          "documents": {
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "end_date": {
            "default": null,
            "description": "End date of the purchase order.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier for the purchase order.",
            "type": "string"
          },
          "name": {
            "default": null,
            "description": "Name of the purchase order.",
            "nullable": true,
            "type": "string"
          },
          "paid_by_bill_amount": {
            "$ref": "#/components/schemas/CurrencyAmount"
          },
          "paid_by_card_amount": {
            "$ref": "#/components/schemas/CurrencyAmount"
          },
          "pending_bill_amount": {
            "$ref": "#/components/schemas/CurrencyAmount"
          },
          "purchase_order_number": {
            "default": null,
            "description": "External purchase order number.",
            "nullable": true,
            "type": "string"
          },
          "spend_request": {
            "$ref": "#/components/schemas/ApiVendorAgreementPurchaseOrderSpendRequest"
          },
          "start_date": {
            "default": null,
            "description": "Start date of the purchase order.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "status": {
            "enum": [
              "CLOSED",
              "DELETED",
              "FULLY_BILLED",
              "OPEN",
              "PARTIALLY_BILLED"
            ],
            "nullable": true,
            "type": "string"
          },
          "total_amount": {
            "$ref": "#/components/schemas/CurrencyAmount"
          }
        },
        "required": [
          "can_view",
          "documents",
          "end_date",
          "id",
          "name",
          "paid_by_bill_amount",
          "paid_by_card_amount",
          "pending_bill_amount",
          "purchase_order_number",
          "spend_request",
          "start_date",
          "total_amount"
        ],
        "type": "object"
      },
      "ApiVendorAgreementPurchaseOrderSpendRequest": {
        "properties": {
          "approved_at": {
            "default": null,
            "description": "Date when the spend request was approved.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "currency": {
            "description": "Currency code for the spend request amounts.",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "default": null,
            "description": "Name of the spend request.",
            "nullable": true,
            "type": "string"
          },
          "source": {
            "enum": [
              "EXPANSION_REQUEST",
              "RENEWAL",
              "REQUEST_APPROVAL",
              "REQUEST_LINKED_TO_AGREEMENT"
            ],
            "type": "string"
          },
          "submitted_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "total_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "nullable": true
          },
          "unified_request_id": {
            "format": "uuid",
            "type": "string"
          },
          "user_full_name": {
            "description": "Full name of the user who created the spend request.",
            "type": "string"
          }
        },
        "required": [
          "approved_at",
          "currency",
          "id",
          "name",
          "source",
          "unified_request_id",
          "user_full_name"
        ],
        "type": "object"
      },
      "ApiVendorAgreementQueryRequestBody": {
        "properties": {
          "agreement_custom_records": {
            "$ref": "#/components/schemas/CustomRecordsQueryAndClauseAdapterRequestBody",
            "description": "JSON object describing custom record filters for agreements.",
            "nullable": true
          },
          "auto_renews": {
            "default": null,
            "description": "Filter by whether the agreement auto-renews.",
            "nullable": true,
            "type": "boolean"
          },
          "contract_owner_ids": {
            "description": "Filter by contract owner IDs.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "department_ids": {
            "description": "Filter by department IDs.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "end_date_range": {
            "$ref": "#/components/schemas/PayeeAgreementRelativeDateRangeRequestBody",
            "description": "JSON object describing a relative end date range filter.",
            "nullable": true
          },
          "exclude_snoozed": {
            "default": null,
            "description": "Exclude snoozed agreements when true.",
            "nullable": true,
            "type": "boolean"
          },
          "has_end_date": {
            "default": null,
            "description": "Filter by whether the agreement has an end date.",
            "nullable": true,
            "type": "boolean"
          },
          "has_pending_expansion_requests": {
            "default": null,
            "description": "Filter by whether the agreement has pending expansion requests.",
            "nullable": true,
            "type": "boolean"
          },
          "has_reminders": {
            "default": null,
            "description": "Filter by whether the agreement has reminders configured.",
            "nullable": true,
            "type": "boolean"
          },
          "include_archived": {
            "default": false,
            "description": "Include archived agreements when true.",
            "type": "boolean"
          },
          "is_active": {
            "default": null,
            "description": "Filter by whether the agreement is active.",
            "nullable": true,
            "type": "boolean"
          },
          "is_up_for_renewal": {
            "default": null,
            "description": "Filter by whether the agreement is up for renewal.",
            "nullable": true,
            "type": "boolean"
          },
          "last_date_to_terminate_range": {
            "$ref": "#/components/schemas/PayeeAgreementRelativeDateRangeRequestBody",
            "description": "JSON object describing a relative last date to terminate range filter.",
            "nullable": true
          },
          "max_days_remaining": {
            "default": null,
            "description": "Filter by agreements with days remaining less than or equal to this value.",
            "nullable": true,
            "type": "integer"
          },
          "max_end_date": {
            "default": null,
            "description": "Filter by agreements whose end date is on or before the provided date.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "max_last_date_to_terminate": {
            "default": null,
            "description": "Filter by agreements whose last date to terminate is on or before the provided date.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "max_start_date": {
            "default": null,
            "description": "Filter by agreements whose start date is on or before the provided date.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "max_total_value": {
            "default": null,
            "description": "Filter by agreements with total value less than or equal to this value.",
            "nullable": true,
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "min_days_remaining": {
            "default": null,
            "description": "Filter by agreements with days remaining greater than or equal to this value.",
            "nullable": true,
            "type": "integer"
          },
          "min_end_date": {
            "default": null,
            "description": "Filter by agreements whose end date is on or after the provided date.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "min_last_date_to_terminate": {
            "default": null,
            "description": "Filter by agreements whose last date to terminate is on or after the provided date.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "min_start_date": {
            "default": null,
            "description": "Filter by agreements whose start date is on or after the provided date.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "min_total_value": {
            "default": null,
            "description": "Filter by agreements with total value greater than or equal to this value.",
            "nullable": true,
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "page_size": {
            "default": 20,
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "type": "integer"
          },
          "payee_agreement_ids": {
            "description": "Filter by agreement IDs.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "payee_ids": {
            "description": "Filter by vendor (payee) IDs.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "payee_owner_ids": {
            "description": "Filter by vendor owner IDs.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "renewal_status": {
            "description": "Filter by agreement renewal status.",
            "items": {
              "enum": [
                "CANCELLED",
                "EVALUATING",
                "EXPIRED",
                "INITIATED",
                "NOT_STARTED",
                "PLANNING",
                "REJECTED",
                "RENEWED",
                "TERMINATED"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "CANCELLED": "The agreement was manually marked as not renewing.",
                "EVALUATING": "The agreement is manually marked as being evaluated for renewal.",
                "EXPIRED": "The agreement has ended based on its contract dates.",
                "INITIATED": "A renewal request has been submitted for approval.",
                "NOT_STARTED": "The agreement is active and no renewal action has been started.",
                "PLANNING": "The agreement is manually marked as planning to renew.",
                "REJECTED": "The renewal request was rejected.",
                "RENEWED": "The agreement was manually marked as renewed.",
                "TERMINATED": "The agreement was manually terminated."
              }
            },
            "nullable": true,
            "type": "array"
          },
          "renewal_status_exclude": {
            "description": "Exclude agreements with these renewal statuses.",
            "items": {
              "enum": [
                "CANCELLED",
                "EVALUATING",
                "EXPIRED",
                "INITIATED",
                "NOT_STARTED",
                "PLANNING",
                "REJECTED",
                "RENEWED",
                "TERMINATED"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "CANCELLED": "The agreement was manually marked as not renewing.",
                "EVALUATING": "The agreement is manually marked as being evaluated for renewal.",
                "EXPIRED": "The agreement has ended based on its contract dates.",
                "INITIATED": "A renewal request has been submitted for approval.",
                "NOT_STARTED": "The agreement is active and no renewal action has been started.",
                "PLANNING": "The agreement is manually marked as planning to renew.",
                "REJECTED": "The renewal request was rejected.",
                "RENEWED": "The agreement was manually marked as renewed.",
                "TERMINATED": "The agreement was manually terminated."
              }
            },
            "nullable": true,
            "type": "array"
          },
          "start": {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "type": "string"
          },
          "start_date_range": {
            "$ref": "#/components/schemas/PayeeAgreementRelativeDateRangeRequestBody",
            "description": "JSON object describing a relative start date range filter.",
            "nullable": true
          }
        },
        "type": "object"
      },
      "ApiVendorAgreementRejectedRenewalRequest": {
        "properties": {
          "can_view": {
            "description": "Whether the current user has permission to view this request.",
            "type": "boolean"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "reason": {
            "default": null,
            "description": "Reason provided for rejecting the renewal request.",
            "nullable": true,
            "type": "string"
          },
          "rejected_at": {
            "default": null,
            "description": "Date when the renewal request was rejected.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "unified_request_id": {
            "format": "uuid",
            "type": "string"
          },
          "user_full_name": {
            "description": "Full name of the user who submitted the renewal request.",
            "type": "string"
          }
        },
        "required": [
          "can_view",
          "id",
          "reason",
          "rejected_at",
          "unified_request_id",
          "user_full_name"
        ],
        "type": "object"
      },
      "ApiVendorAgreementRenewalActionInputRequestBody": {
        "$ref": "#/components/schemas/RenewalActionUpdateRequestBody",
        "description": "Renewal action update payload for setting the agreement status.",
        "title": "ApiVendorAgreementRenewalActionInput"
      },
      "ApiVendorAgreementRenewalNotificationSnoozeDateRequestBody": {
        "$ref": "#/components/schemas/RenewalNotificationSnoozeDateRequestBody",
        "title": "ApiVendorAgreementRenewalNotificationSnoozeDate"
      },
      "ApiVendorAgreementRenewalNotificationSnoozeInputRequestBody": {
        "$ref": "#/components/schemas/RenewalNotificationSnoozeInputRequestBody",
        "description": "Renewal notification snooze payload for delaying agreement reminders.",
        "title": "ApiVendorAgreementRenewalNotificationSnoozeInput"
      },
      "ApiVendorAgreementSpendRequestDocumentLinkInputRequestBody": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/UUIDStrRequestBody",
            "description": "Unique identifier of the document or file to link."
          },
          "type": {
            "description": "Document source type.",
            "enum": [
              "SPEND_REQUEST_DOCUMENT"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "title": "ApiVendorAgreementSpendRequestDocumentLinkInput",
        "type": "object"
      },
      "ApiVendorAgreementSpendRequestLinkInputRequestBody": {
        "properties": {
          "source": {
            "$ref": "#/components/schemas/ApiVendorAgreementSpendRequestLinkSourceRequestBody",
            "description": "Type of agreement relationship to create for the spend request. Supported values are RENEWAL and EXPANSION_REQUEST."
          },
          "spend_request_id": {
            "$ref": "#/components/schemas/UUIDStrRequestBody",
            "description": "Unique identifier of the spend request to link to the agreement."
          }
        },
        "required": [
          "source",
          "spend_request_id"
        ],
        "title": "ApiVendorAgreementSpendRequestLinkInput",
        "type": "object"
      },
      "ApiVendorAgreementSpendRequestLinkSourceRequestBody": {
        "enum": [
          "EXPANSION_REQUEST",
          "RENEWAL"
        ],
        "title": "ApiVendorAgreementSpendRequestLinkSource",
        "type": "string"
      },
      "ApiVendorAgreementUnlinkInputRequestBody": {
        "properties": {
          "documents": {
            "description": "Existing documents to unlink from the agreement.",
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementDocumentLinkInputRequestBody"
            },
            "title": "Documents",
            "type": "array"
          },
          "purchase_order_ids": {
            "description": "Unique identifiers of purchase orders to unlink from the agreement.",
            "items": {
              "type": "string"
            },
            "title": "Purchase Order Ids",
            "type": "array"
          }
        },
        "title": "ApiVendorAgreementUnlinkInput",
        "type": "object"
      },
      "ApiVendorAgreementUnlinkResponse": {
        "properties": {
          "agreement": {
            "$ref": "#/components/schemas/ApiVendorAgreementDetailResource"
          },
          "number_of_documents_unlinked": {
            "description": "Number of documents unlinked from the agreement.",
            "type": "integer"
          },
          "number_of_purchase_orders_unlinked": {
            "description": "Number of purchase orders unlinked from the agreement.",
            "type": "integer"
          }
        },
        "required": [
          "agreement",
          "number_of_documents_unlinked",
          "number_of_purchase_orders_unlinked"
        ],
        "type": "object"
      },
      "ApiVendorAgreementUpdateRequestBody": {
        "example": {
          "description": "Updated annual software agreement",
          "name": "Updated MSA - Acme",
          "notifications_on": false,
          "renewal_action": {
            "mark_vendor_inactive": false,
            "reason": "Vendor replaced",
            "type": "CANCELLED"
          },
          "total_value": {
            "amount": 150000,
            "currency_code": "USD"
          }
        },
        "properties": {
          "auto_renewal": {
            "description": "Whether the agreement automatically renews.",
            "type": "boolean"
          },
          "contract_owner_ids": {
            "description": "List of contract owner user IDs.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            },
            "type": "array"
          },
          "description": {
            "description": "Description of the vendor agreement.",
            "nullable": true,
            "type": "string"
          },
          "end_date": {
            "description": "End date of the agreement.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "last_date_to_terminate": {
            "description": "Last date by which the agreement can be terminated.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the vendor agreement.",
            "minLength": 1,
            "type": "string"
          },
          "notifications_on": {
            "description": "Whether notifications are enabled for this agreement.",
            "type": "boolean"
          },
          "renewal_action": {
            "$ref": "#/components/schemas/ApiVendorAgreementRenewalActionInputRequestBody",
            "description": "Renewal action update payload. Supported types are ACTIVE, RENEWED, and CANCELLED."
          },
          "renewal_notification_settings": {
            "$ref": "#/components/schemas/PayeeRenewalNotificationSettingsCreateSchemaRequestBody",
            "description": "Notification settings to apply to this agreement.",
            "nullable": true
          },
          "renewal_notification_snooze": {
            "$ref": "#/components/schemas/ApiVendorAgreementRenewalNotificationSnoozeInputRequestBody",
            "description": "Renewal notification snooze configuration. Deprecated: use renewal_notification_snoozed_until.",
            "nullable": true
          },
          "renewal_notification_snoozed_until": {
            "$ref": "#/components/schemas/ApiVendorAgreementRenewalNotificationSnoozeDateRequestBody",
            "description": "Date when renewal reminders resume. Must be after today and at most one year from today. Null ends an active snooze.",
            "nullable": true
          },
          "start_date": {
            "description": "Start date of the agreement.",
            "format": "date",
            "type": "string"
          },
          "total_value": {
            "$ref": "#/components/schemas/ApiVendorAgreementCurrencyAmountInputRequestBody",
            "description": "Total monetary value of the agreement."
          }
        },
        "type": "object"
      },
      "ApiVendorAgreementUploadedByUser": {
        "properties": {
          "email": {
            "description": "Email address of the user who uploaded the document.",
            "format": "email",
            "type": "string"
          },
          "first_name": {
            "description": "First name of the user who uploaded the document.",
            "type": "string"
          },
          "full_name": {
            "description": "Full name of the user who uploaded the document.",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the user who uploaded the source document.",
            "format": "uuid",
            "type": "string"
          },
          "last_name": {
            "description": "Last name of the user who uploaded the document.",
            "type": "string"
          },
          "profile_picture_url": {
            "description": "Profile picture URL of the user who uploaded the document.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email",
          "first_name",
          "full_name",
          "id",
          "last_name"
        ],
        "type": "object"
      },
      "ApiVendorAgreementVendorOwner": {
        "properties": {
          "first_name": {
            "type": "string"
          },
          "full_name": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "last_name": {
            "type": "string"
          }
        },
        "required": [
          "first_name",
          "full_name",
          "id",
          "last_name"
        ],
        "type": "object"
      },
      "ApiVendorBankAccountArchiveParamsRequestBody": {
        "properties": {
          "replacement_bank_account_id": {
            "default": null,
            "description": "If the bank account has associated bills, drafts, or recurring templates, provide the ID of the replacement bank account to transfer them to.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiVendorBankAccountResource": {
        "properties": {
          "account_nickname": {
            "description": "Nickname of the vendor bank account.",
            "type": "string"
          },
          "account_number_last_four": {
            "description": "Last four digits of the bank account number.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "currency": {
            "description": "Currency of the vendor bank account.",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "id": {
            "description": "Unique identifier of the vendor bank account.",
            "format": "uuid",
            "type": "string"
          },
          "is_default": {
            "description": "Whether this is the payee's default bank account.",
            "type": "boolean"
          },
          "payment_method": {
            "description": "Supported payment method for the vendor bank account.",
            "enum": [
              "ACH",
              "AUTOMATIC_CARD_PAYMENT",
              "CARD",
              "CHECK",
              "CRYPTO_WALLET_TRANSFER",
              "DIRECT_DEBIT",
              "DOMESTIC_WIRE",
              "EARLY_PAYMENT_DISCOUNT",
              "FED_NOW",
              "INTERNATIONAL",
              "LOCAL_BANK_TRANSFER",
              "ONE_TIME_CARD",
              "ONE_TIME_CARD_DELIVERY",
              "PAID_MANUALLY",
              "RTP",
              "SWIFT",
              "UNSPECIFIED",
              "VENDOR_CREDIT"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ACH": "A US ACH bank transfer.",
              "AUTOMATIC_CARD_PAYMENT": "A card payment that Ramp automatically initiates for the bill.",
              "CARD": "A payment made with an existing Ramp card.",
              "CHECK": "A paper check payment mailed to the vendor.",
              "CRYPTO_WALLET_TRANSFER": "A transfer to a cryptocurrency wallet.",
              "DIRECT_DEBIT": "A direct debit from a Ramp account.",
              "DOMESTIC_WIRE": "A US domestic wire transfer.",
              "EARLY_PAYMENT_DISCOUNT": "A noncash contribution from an early payment discount.",
              "FED_NOW": "An instant FedNow bank transfer.",
              "INTERNATIONAL": "An international bank transfer.",
              "LOCAL_BANK_TRANSFER": "A local bank transfer in a non-USD currency.",
              "ONE_TIME_CARD": "A single-use card payment where the business user pays the vendor directly.",
              "ONE_TIME_CARD_DELIVERY": "A single-use card payment where Ramp sends card details to the vendor contact.",
              "PAID_MANUALLY": "A payment recorded as paid outside of Ramp.",
              "RTP": "A real-time payment bank transfer.",
              "SWIFT": "An international USD-denominated SWIFT bank transfer.",
              "UNSPECIFIED": "No payment method has been selected.",
              "VENDOR_CREDIT": "A payment satisfied with vendor credit."
            }
          }
        },
        "required": [
          "account_number_last_four",
          "currency",
          "id",
          "payment_method"
        ],
        "type": "object",
        "x-resource-name": "vendor_bank_accounts"
      },
      "ApiVendorBankAccountUpdateRequestBody": {
        "example": {
          "account_nickname": "Primary Checking Account",
          "ach_details": {
            "account_name": "Checking Account",
            "account_number": "123456789",
            "account_owner_type": "BUSINESS",
            "account_type": "Checking",
            "routing_number": "021000021"
          },
          "is_default": false
        },
        "properties": {
          "account_nickname": {
            "description": "Optional nickname for the payment account",
            "type": "string"
          },
          "ach_details": {
            "$ref": "#/components/schemas/VendorACHDetailsRequestBody",
            "description": "ACH payment details"
          },
          "crypto_details": {
            "$ref": "#/components/schemas/VendorCryptoWalletDetailsRequestBody",
            "description": "Crypto wallet (stablecoin) payout details"
          },
          "is_default": {
            "default": false,
            "description": "Whether this should be the default payment method",
            "type": "boolean"
          },
          "wire_details": {
            "$ref": "#/components/schemas/VendorWireDetailsRequestBody",
            "description": "Wire payment details"
          }
        },
        "type": "object"
      },
      "ApiVendorBankAccountUpdateResponse": {
        "example": {
          "payment_method_id": "b1c2d3e4-f5a6-7890-abcd-ef1234567890",
          "payment_method_type": "ach",
          "proposal_id": null,
          "status": "approved",
          "vendor_id": "4f08baf7-e3f0-4271-aedd-4d2c2214ed9a"
        },
        "properties": {
          "payment_method_id": {
            "description": "Unique identifier of the created payment method. Null when the update requires approval (status is pending_approval).",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "payment_method_type": {
            "description": "Type of the created payment method (e.g. ach, wire). Will be null if bank validation fails.",
            "enum": [
              "ach",
              "crypto",
              "wire"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "ach": "ACH bank transfer.",
              "crypto": "Crypto wallet transfer (stablecoin payout).",
              "wire": "Wire bank transfer."
            }
          },
          "proposal_id": {
            "description": "Unique identifier of the approval proposal, if approval is required.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "status": {
            "description": "Status of the bank account update operation.",
            "enum": [
              "approved",
              "pending_approval"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "approved": "The vendor edit was applied immediately.",
              "pending_approval": "The vendor edit created an approval proposal and is pending approval."
            }
          },
          "vendor_id": {
            "description": "Unique identifier of the vendor.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "status",
          "vendor_id"
        ],
        "type": "object"
      },
      "ApiVendorCheckPaymentMethodResource": {
        "properties": {
          "fee": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "The fee charged for using this payment method."
          },
          "id": {
            "description": "Unique identifier of the payment method.",
            "format": "uuid",
            "type": "string"
          },
          "mailing_address": {
            "$ref": "#/components/schemas/ApiVendorPaymentMethodMailingAddress",
            "description": "The mailing address for check delivery."
          },
          "type": {
            "description": "The type of payment method.",
            "enum": [
              "CHECK"
            ],
            "type": "string"
          }
        },
        "required": [
          "fee",
          "id",
          "mailing_address",
          "type"
        ],
        "type": "object"
      },
      "ApiVendorContactCreateRequestBody": {
        "example": {
          "email": "contact@example.com",
          "first_name": "Ada",
          "is_default": false,
          "last_name": "Lovelace",
          "phone": "+1 555 555 0100"
        },
        "properties": {
          "email": {
            "description": "Email address.",
            "format": "email",
            "type": "string"
          },
          "first_name": {
            "description": "First name.",
            "maxLength": 40,
            "nullable": true,
            "type": "string"
          },
          "is_default": {
            "default": false,
            "description": "Whether this is the default contact.",
            "type": "boolean"
          },
          "last_name": {
            "description": "Last name.",
            "maxLength": 40,
            "nullable": true,
            "type": "string"
          },
          "phone": {
            "description": "Phone number.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "ApiVendorContactCreateResponse": {
        "example": {
          "contact_id": "b1c2d3e4-f5a6-7890-abcd-ef1234567890",
          "proposal_id": null,
          "status": "approved",
          "vendor_id": "4f08baf7-e3f0-4271-aedd-4d2c2214ed9a"
        },
        "properties": {
          "contact_id": {
            "description": "Created contact ID.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendor_contacts",
              "type": "many-to-one"
            }
          },
          "proposal_id": {
            "description": "Pending approval proposal ID.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "status": {
            "description": "Creation status.",
            "enum": [
              "approved",
              "pending_approval"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "approved": "The vendor edit was applied immediately.",
              "pending_approval": "The vendor edit created an approval proposal and is pending approval."
            }
          },
          "vendor_id": {
            "description": "Vendor ID.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "status",
          "vendor_id"
        ],
        "type": "object"
      },
      "ApiVendorContactResource": {
        "properties": {
          "email": {
            "type": "string"
          },
          "first_name": {
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the vendor contact.",
            "format": "uuid",
            "type": "string"
          },
          "is_default": {
            "type": "boolean"
          },
          "last_name": {
            "nullable": true,
            "type": "string"
          },
          "phone": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email",
          "first_name",
          "id",
          "is_default",
          "last_name",
          "phone"
        ],
        "type": "object",
        "x-resource-name": "vendor_contacts"
      },
      "ApiVendorCreateRequestBody": {
        "example": {
          "business_vendor_contacts": {
            "email": "vendor@ramp.com",
            "first_name": "John",
            "last_name": "Doe",
            "phone": "+13525342357"
          },
          "country": "US",
          "default_entity_id": "90b73fdf-e058-4cad-970d-0ed5a6949792",
          "external_vendor_id": "EXT-12345",
          "name": "Ramp",
          "net_payment_terms": 30,
          "parent_vendor_id": "e25a4050-928f-4071-b7ab-23a5019b27c7",
          "request_payment_details": true,
          "request_tax_details": true,
          "state": "NY",
          "vendor_owner_id": "6b864472-294e-4fc9-91ab-158d684c8886",
          "vendor_tracking_category_option_id": "60a1a5c9-9b2d-4658-9024-cc4baebf819a"
        },
        "properties": {
          "accounting_vendor_remote_id": {
            "description": "The accounting remote id of the vendor. At most one of `accounting_vendor_remote_id` or `vendor_tracking_category_option_id` should be provided. The referenced accounting vendor must not already be linked to another Ramp vendor.",
            "type": "string"
          },
          "acting_user_id": {
            "default": null,
            "description": "Deprecated and ignored. This field is accepted for backward compatibility only. Use `requesting_user_id` to control the requestor on vendor detail requests.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "address": {
            "$ref": "#/components/schemas/ApiVendorAddressCreateRequestBody",
            "description": "The address of the vendor."
          },
          "business_vendor_contacts": {
            "$ref": "#/components/schemas/ApiDefaultBusinessVendorResourceRequestBody",
            "description": "Detailed information about the vendor contact."
          },
          "country": {
            "description": "The country of the vendor. Defaults to US when omitted or null.",
            "nullable": true,
            "type": "string"
          },
          "default_entity_id": {
            "default": null,
            "description": "Unique identifier of the default business entity to associate with this vendor. Must belong to the current business. If omitted, the vendor is created without a default entity.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "external_vendor_id": {
            "default": null,
            "description": "Customer-defined external identifier for the vendor. This is independent of accounting system remote IDs.",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the new vendor to be created.",
            "minLength": 1,
            "type": "string"
          },
          "net_payment_terms": {
            "description": "Number of days after receipt that payment is due. 0 means due on receipt. Null clears terms; omission may inherit terms from a parent vendor.",
            "maximum": 3652058,
            "minimum": 0,
            "nullable": true,
            "type": "integer"
          },
          "parent_vendor_id": {
            "default": null,
            "description": "Unique identifier of the parent vendor to associate with this vendor.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          },
          "request_payment_details": {
            "default": false,
            "description": "Whether to request payment details from the vendor (ACH bank account, international wire transfer, and check mailing address). Requires a contact email.",
            "type": "boolean"
          },
          "request_tax_details": {
            "default": false,
            "description": "Whether to request tax information from the vendor (Tax Identification Number, federal tax classification, and tax address). Requires a contact email.",
            "type": "boolean"
          },
          "requesting_user_id": {
            "default": null,
            "description": "Unique identifier of the Ramp user to record as the requestor for any payment or tax details request created during vendor creation. Defaults to existing vendor creation behavior when omitted. Requires the token user to have admin or owner privileges.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "state": {
            "default": null,
            "description": "Optional vendor-level two-letter US state abbreviation, such as VA. Ignored for non-US vendor countries.",
            "nullable": true,
            "type": "string"
          },
          "vendor_owner_id": {
            "default": null,
            "description": "Unique identifier of the user that will own this vendor. If omitted, the vendor will be created without an owner.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "vendor_tracking_category_option_id": {
            "description": "Ramp unique identifier of the accounting vendor to link to this vendor. At most one of `accounting_vendor_remote_id` or `vendor_tracking_category_option_id` should be provided. The referenced accounting vendor must not already be linked to another Ramp vendor.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "custom_field_options",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "business_vendor_contacts"
        ],
        "type": "object"
      },
      "ApiVendorDetailResource": {
        "example": {
          "accounting_vendor_remote_id": "1234",
          "address": {
            "address_line_1": "442 Good St",
            "address_line_2": null,
            "city": "San Diego",
            "country": "US",
            "postal_code": "94105",
            "state": "CA"
          },
          "addresses": [
            {
              "address_line_1": "442 Good St",
              "address_line_2": null,
              "city": "San Diego",
              "country": "US",
              "id": "0b1a0d92-3f07-4e02-9f2c-2b3b6f6e2a25",
              "is_default": true,
              "postal_code": "94105",
              "state": "CA"
            }
          ],
          "billing_frequency": null,
          "contacts": [
            "315eb85a-3a60-45ba-8d1c-67385cd0281f",
            "5453d095-38ad-4656-8d73-df4e204a51b4"
          ],
          "country": "US",
          "created_at": "2024-05-12T02:23:00+00:00",
          "custom_form_collection_response": {
            "custom_form_collection_log_entry": {
              "forms": [
                {
                  "fields": [
                    {
                      "conditions": null,
                      "description": "",
                      "field": {
                        "field_type": "TEXT",
                        "mapped_fields": [],
                        "value": {
                          "value": "my message for approver"
                        }
                      },
                      "field_id": "fc6e0459-a164-4a44-ace1-c432d860423b",
                      "is_mapped_to_ironclad_field": false,
                      "is_used_in_approval_workflow_condition": false,
                      "is_used_in_custom_form_workflow_condition": false,
                      "label": "Add a message for approvers to review",
                      "required": false,
                      "validation_errors": [],
                      "value_display_string": "my message for approver"
                    }
                  ],
                  "label": "my custom form"
                }
              ],
              "label": null
            }
          },
          "default_entity_id": "90b73fdf-e058-4cad-970d-0ed5a6949792",
          "default_payment_method": {
            "policy": {
              "data": {
                "account_nickname": "Primary",
                "currency": "USD",
                "id": "0b1a0d92-3f07-4e02-9f2c-2b3b6f6e2a25",
                "is_default": true,
                "payment_method": "ACH"
              },
              "kind": "BANK_ACCOUNT"
            },
            "update_source": "MANUAL"
          },
          "description": "Vendor for art supplies",
          "external_vendor_id": "EXT-12345",
          "federal_tax_classification": "C_CORPORATION",
          "id": "4f08baf7-e3f0-4271-aedd-4d2c2214ed9a",
          "is_active": true,
          "is_deletable": false,
          "merchant_id": null,
          "name": "Ali's Art shop",
          "name_legal": "Ali's Art shop LLC",
          "net_payment_terms": 30,
          "parent_vendor_id": null,
          "sk_category_id": 30,
          "sk_category_name": "General merchandise",
          "state": "CA",
          "subsidiary": [
            "USMF"
          ],
          "tax_address": {
            "address_line_1": "1234 Main St",
            "address_line_2": "Suite 200",
            "city": "San Diego",
            "country": "US",
            "postal_code": "94105",
            "state": "CA"
          },
          "total_spend_all_time": {
            "amount": 18500,
            "currency_code": "USD"
          },
          "total_spend_last_30_days": {
            "amount": 18500,
            "currency_code": "USD"
          },
          "total_spend_last_365_days": {
            "amount": 18500,
            "currency_code": "USD"
          },
          "total_spend_ytd": {
            "amount": 18500,
            "currency_code": "USD"
          },
          "updated_at": "2024-05-14T02:23:00+00:00",
          "vendor_owner_id": "8ca6cfe2-2bea-46f9-998b-56c1a8ac9454",
          "vendor_type": "BUSINESS"
        },
        "properties": {
          "accounting_vendor_remote_id": {
            "description": "The accounting remote id of the vendor.",
            "nullable": true,
            "type": "string"
          },
          "address": {
            "$ref": "#/components/schemas/ApiAddressResource",
            "description": "The default address of the vendor."
          },
          "addresses": {
            "description": "The addresses of the vendor.",
            "items": {
              "$ref": "#/components/schemas/ApiVendorAddressResource"
            },
            "type": "array"
          },
          "approval_status": {
            "description": "Approval status of the vendor.",
            "enum": [
              "APPROVED",
              "PENDING",
              "REJECTED"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "APPROVED": "The vendor has been approved.",
              "PENDING": "The vendor is awaiting approval.",
              "REJECTED": "The vendor has been rejected."
            }
          },
          "billing_frequency": {
            "description": "The billing frequency for this vendor.",
            "enum": [
              "ANNUAL",
              "MONTHLY",
              "MULTIPLE",
              "NA",
              "OTHER",
              "QUARTERLY",
              "ROLLING",
              "TBD",
              "TWICE_A_YEAR"
            ],
            "type": "string"
          },
          "contacts": {
            "description": "Unique identifiers of contacts associated with this vendor.",
            "items": {
              "description": "Unique identifier of the vendor contact.",
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "country": {
            "description": "The 2-letter country of the vendor.",
            "type": "string"
          },
          "created_at": {
            "description": "The date and time when this vendor was created.",
            "format": "date-time",
            "type": "string"
          },
          "custom_form_collection_response": {
            "$ref": "#/components/schemas/ApiCustomFormCollectionResponse",
            "description": "Custom form collection with an associated response log entry.",
            "nullable": true,
            "readOnly": true
          },
          "custom_record_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomCellOutputWithLoadedReferences"
            },
            "nullable": true,
            "readOnly": true,
            "type": "array"
          },
          "default_entity_id": {
            "description": "Unique identifier of the default business entity associated with this vendor.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "default_payment_method": {
            "$ref": "#/components/schemas/DefaultPaymentMethodResource",
            "description": "Default payment method for this vendor, including update source and policy.",
            "nullable": true,
            "readOnly": true
          },
          "description": {
            "description": "Description of the vendor.",
            "type": "string"
          },
          "external_vendor_id": {
            "description": "Customer-defined external identifier for the vendor. This is independent of accounting system remote IDs.",
            "nullable": true,
            "type": "string"
          },
          "federal_tax_classification": {
            "description": "The federal tax classification of the vendor.",
            "enum": [
              "C_CORPORATION",
              "INDIVIDUAL_SOLE_PROPRIETOR_SINGLE_MEMBER_LLC",
              "INTERNATIONAL",
              "LLC_C_CORPORATION",
              "LLC_PARTNERSHIP",
              "LLC_S_CORPORATION",
              "OTHER",
              "PARTNERSHIP",
              "S_CORPORATION",
              "TRUST_ESTATE"
            ],
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the vendor.",
            "format": "uuid",
            "type": "string"
          },
          "is_active": {
            "description": "Whether this vendor is active.",
            "type": "boolean"
          },
          "is_deletable": {
            "description": "Whether this vendor is deletable.",
            "readOnly": true,
            "type": "boolean"
          },
          "merchant_id": {
            "description": "The id of the card merchant.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "merchants",
              "type": "many-to-many"
            }
          },
          "name": {
            "description": "Name of the vendor.",
            "type": "string"
          },
          "name_legal": {
            "description": "Legal name of the vendor.",
            "type": "string"
          },
          "net_payment_terms": {
            "description": "Number of days after receipt that payment is due. 0 means due on receipt.",
            "nullable": true,
            "type": "integer"
          },
          "parent_vendor_id": {
            "description": "Unique identifier of the parent vendor, if this vendor has one.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "sk_category_id": {
            "description": "Ramp category code of the vendor.",
            "enum": [
              1,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              2,
              20,
              21,
              23,
              24,
              25,
              26,
              27,
              28,
              29,
              3,
              30,
              31,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              4,
              40,
              41,
              42,
              43,
              44,
              5,
              6,
              7,
              8,
              9
            ],
            "type": "integer",
            "x-enum-descriptions": {
              "1": "Pet",
              "2": "Other",
              "3": "Office",
              "4": "Airlines",
              "5": "Car rental",
              "6": "Lodging",
              "7": "Travel miscellaneous",
              "8": "Taxi and rideshare",
              "9": "Freight, moving and delivery services",
              "10": "Shipping",
              "11": "Utilities",
              "12": "Office supplies and cleaning",
              "13": "General merchandise",
              "14": "Electronics",
              "15": "Clothing",
              "16": "Books and newspapers",
              "17": "Supermarkets and grocery stores",
              "18": "Fuel and gas",
              "19": "Restaurants",
              "20": "Alcohol and bars",
              "21": "Medical",
              "23": "Fees and financial institutions",
              "24": "Entertainment",
              "25": "Professional services",
              "26": "Taxes and tax preparation",
              "27": "Advertising",
              "28": "Parking",
              "29": "Car services",
              "30": "Gambling",
              "31": "Clubs and memberships",
              "32": "Legal",
              "33": "Education",
              "34": "Charitable donations",
              "35": "Political organizations",
              "36": "Religious organizations",
              "37": "Fines",
              "38": "Government services",
              "39": "Intra-company purchases",
              "40": "SaaS / Software",
              "41": "Cloud computing",
              "42": "Streaming services",
              "43": "Internet and phone",
              "44": "Insurance"
            }
          },
          "sk_category_name": {
            "description": "The category name of the vendor.",
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "subsidiary": {
            "description": "ERP subsidiary identifiers associated with this vendor. Only returned when `include_subsidiary=true`.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "tax_address": {
            "$ref": "#/components/schemas/ApiAddressResource",
            "description": "The tax address of the vendor."
          },
          "total_spend_all_time": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total spend for all time for this vendor.",
            "readOnly": true
          },
          "total_spend_last_30_days": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total spend for the last 30 days for this vendor.",
            "readOnly": true
          },
          "total_spend_last_365_days": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total spend for the last 365 days for this vendor.",
            "readOnly": true
          },
          "total_spend_ytd": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total spend year-to-date for this vendor.",
            "readOnly": true
          },
          "updated_at": {
            "description": "The date and time when this vendor was last updated.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "vendor_owner_id": {
            "description": "Unique identifier of the user which owns this vendor.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "vendor_type": {
            "description": "The type of vendor if bill pay.",
            "enum": [
              "BUSINESS",
              "INDIVIDUAL"
            ],
            "type": "string"
          }
        },
        "required": [
          "accounting_vendor_remote_id",
          "addresses",
          "approval_status",
          "contacts",
          "country",
          "created_at",
          "custom_form_collection_response",
          "custom_record_fields",
          "default_entity_id",
          "default_payment_method",
          "external_vendor_id",
          "id",
          "is_active",
          "is_deletable",
          "name",
          "parent_vendor_id",
          "total_spend_all_time",
          "total_spend_last_30_days",
          "total_spend_last_365_days",
          "total_spend_ytd",
          "updated_at",
          "vendor_owner_id"
        ],
        "type": "object",
        "x-resource-name": "vendors"
      },
      "ApiVendorFieldAnswerRequestBody": {
        "description": "Answer for a vendor field: an existing vendor or a new vendor name.",
        "properties": {
          "answer_type": {
            "description": "Must be vendor.",
            "enum": [
              "vendor"
            ],
            "title": "Answer Type",
            "type": "string"
          },
          "field_id": {
            "description": "ID of the spend program form field this answer is for. Field IDs are defined by the spend program's request form.",
            "title": "Field Id",
            "type": "string"
          },
          "new_vendor_name": {
            "default": null,
            "description": "Name of a vendor that does not exist yet. Provide either payee_uuid or new_vendor_name.",
            "nullable": true,
            "title": "New Vendor Name",
            "type": "string"
          },
          "payee_contact_uuid": {
            "default": null,
            "description": "Existing contact UUID belonging to the selected vendor.",
            "format": "uuid",
            "nullable": true,
            "title": "Payee Contact Uuid",
            "type": "string"
          },
          "payee_uuid": {
            "default": null,
            "description": "ID of an existing vendor. Provide either payee_uuid or new_vendor_name.",
            "format": "uuid",
            "nullable": true,
            "title": "Payee Uuid",
            "type": "string"
          }
        },
        "required": [
          "answer_type",
          "field_id"
        ],
        "title": "ApiVendorFieldAnswer",
        "type": "object"
      },
      "ApiVendorHoldParamsRequestBody": {
        "example": {
          "reason": "Awaiting additional review"
        },
        "properties": {
          "reason": {
            "default": null,
            "description": "Optional reason for placing the vendor on hold.",
            "nullable": true,
            "title": "Reason",
            "type": "string"
          }
        },
        "title": "ApiVendorHoldParams",
        "type": "object"
      },
      "ApiVendorPaymentDetailsResource": {
        "properties": {
          "approval_status": {
            "description": "Approval status of the payment, if payment-step approvals are used.",
            "enum": [
              "APPROVED",
              "INITIALIZED",
              "PENDING",
              "REJECTED",
              "TERMINATED"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "APPROVED": "The approval chain has been approved.",
              "INITIALIZED": "The approval chain has been initialized.",
              "PENDING": "The approval chain is awaiting approval.",
              "REJECTED": "The approval chain has been rejected.",
              "TERMINATED": "The approval chain has been terminated."
            }
          },
          "is_same_day": {
            "description": "Specifies whether the payment is configured for same-day delivery.",
            "readOnly": true,
            "type": "boolean"
          },
          "source_bank_account_id": {
            "description": "Unique identifier of the bank account associated with this bill payment, if it exists.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "vendor_account_id": {
            "description": "Unique identifier of the vendor account associated with this bill payment, if it exists.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "approval_status",
          "is_same_day",
          "source_bank_account_id",
          "vendor_account_id"
        ],
        "type": "object"
      },
      "ApiVendorPaymentMethodMailingAddress": {
        "properties": {
          "address_line_1": {
            "description": "Primary address line.",
            "type": "string"
          },
          "address_line_2": {
            "default": null,
            "description": "Secondary address line.",
            "nullable": true,
            "type": "string"
          },
          "city": {
            "description": "City name.",
            "type": "string"
          },
          "country": {
            "description": "Two-letter ISO 3166-1 country code.",
            "type": "string"
          },
          "postal_code": {
            "description": "Postal or ZIP code.",
            "type": "string"
          },
          "state": {
            "default": null,
            "description": "State or province abbreviation.",
            "maxLength": 2,
            "minLength": 2,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "address_line_1",
          "address_line_2",
          "city",
          "country",
          "postal_code",
          "state"
        ],
        "type": "object"
      },
      "ApiVendorPaymentMethodResource": {
        "discriminator": {
          "mapping": {
            "ACH": "#/components/schemas/ApiVendorAchPaymentMethodResource",
            "CHECK": "#/components/schemas/ApiVendorCheckPaymentMethodResource"
          },
          "propertyName": "type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ApiVendorAchPaymentMethodResource"
          },
          {
            "$ref": "#/components/schemas/ApiVendorCheckPaymentMethodResource"
          }
        ]
      },
      "ApiVendorUpdateRequestBody": {
        "example": {
          "address": {
            "address_line_1": "442 Good St",
            "address_line_2": null,
            "city": "Allentown",
            "country": "US",
            "postal_code": "18102",
            "state": "PA"
          },
          "country": "US",
          "default_entity_id": "90b73fdf-e058-4cad-970d-0ed5a6949792",
          "description": "Some description",
          "external_vendor_id": "EXT-UPDATE-123",
          "is_active": true,
          "name": "Updated vendor name",
          "net_payment_terms": 30,
          "request_payment_details": true,
          "request_tax_details": true,
          "state": "NY",
          "vendor_tracking_category_option_id": "60a1a5c9-9b2d-4658-9024-cc4baebf819a"
        },
        "properties": {
          "accounting_vendor_remote_id": {
            "description": "The accounting remote id of the vendor. At most one of `accounting_vendor_remote_id` or `vendor_tracking_category_option_id` should be provided.",
            "type": "string"
          },
          "address": {
            "$ref": "#/components/schemas/ApiVendorAddressCreateRequestBody",
            "description": "The address of the vendor."
          },
          "country": {
            "description": "The country of the vendor.",
            "type": "string"
          },
          "default_bank_account_id": {
            "description": "Unique identifier of an existing bank account belonging to this vendor to use as its default payment method. The account determines the payment method. Existing bills are not changed. Omit to leave the default unchanged.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendor_bank_accounts",
              "type": "many-to-one"
            }
          },
          "default_entity_id": {
            "description": "Unique identifier of the default business entity to associate with this vendor. Must belong to the current business. Set to null to clear the default entity.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "description": {
            "description": "Description of the vendor.",
            "type": "string"
          },
          "external_vendor_id": {
            "description": "Customer-defined external identifier for the vendor. This is independent of accounting system remote IDs.",
            "nullable": true,
            "type": "string"
          },
          "is_active": {
            "description": "Whether this vendor is active.",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the vendor.",
            "minLength": 1,
            "type": "string"
          },
          "net_payment_terms": {
            "description": "Number of days after receipt that payment is due. 0 means due on receipt; null clears the terms. Omit to leave unchanged.",
            "maximum": 3652058,
            "minimum": 0,
            "nullable": true,
            "type": "integer"
          },
          "request_payment_details": {
            "default": false,
            "description": "Whether to request payment details from the vendor (ACH bank account, international wire transfer, and check mailing address). Requires an existing default vendor contact email.",
            "type": "boolean"
          },
          "request_tax_details": {
            "default": false,
            "description": "Whether to request tax information from the vendor (Tax Identification Number, federal tax classification, and tax address). Requires an existing default vendor contact email.",
            "type": "boolean"
          },
          "state": {
            "default": null,
            "description": "Vendor-level two-letter US state abbreviation, such as VA. Required when the vendor country is US. Ignored for non-US vendor countries.",
            "nullable": true,
            "type": "string"
          },
          "vendor_tracking_category_option_id": {
            "description": "Unique identifier of the vendor. At most one of `accounting_vendor_remote_id` or `vendor_tracking_category_option_id` should be provided.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "custom_field_options",
              "type": "many-to-one"
            }
          }
        },
        "type": "object"
      },
      "AppendMatrixCellsByNameRequestRequestBody": {
        "description": "Request for appending cells to Matrix rows.",
        "example": {
          "data": [
            {
              "inputs": [
                {
                  "column_name": "department",
                  "identifier": {
                    "column_name": "id",
                    "value": "<UUID>"
                  }
                }
              ],
              "results": [
                {
                  "column_name": "approvers",
                  "identifier": {
                    "column_name": "id",
                    "value": "<UUID>"
                  }
                }
              ]
            }
          ],
          "ignore_duplicates": false
        },
        "properties": {
          "data": {
            "description": "Rows with cells to append (many-to-many result columns only)",
            "items": {
              "$ref": "#/components/schemas/MatrixRowInputByNameRequestBody"
            },
            "title": "Data",
            "type": "array"
          },
          "ignore_duplicates": {
            "default": false,
            "description": "If true, existing duplicate cells and duplicate cells within the request are skipped instead of returning an error.",
            "title": "Ignore Duplicates",
            "type": "boolean"
          }
        },
        "required": [
          "data"
        ],
        "title": "AppendMatrixCellsByNameRequest",
        "type": "object"
      },
      "AppendMatrixCellsByNameResponse": {
        "description": "Response for appending cells to Matrix rows.",
        "example": {
          "metadata": {
            "cells_appended": 1
          }
        },
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/DeveloperApiMatrixAppendMetadata",
            "description": "Append counts"
          }
        },
        "required": [
          "metadata"
        ],
        "title": "AppendMatrixCellsByNameResponse",
        "type": "object"
      },
      "ApprovalAssignedEntityType": {
        "enum": [
          "ANY_ADMIN",
          "GROUP",
          "MANAGER",
          "TRIGGER",
          "USER",
          "VENDOR_OWNER",
          "VENDOR_OWNER_MANAGER"
        ],
        "title": "ApprovalAssignedEntityType",
        "type": "string"
      },
      "ApprovalChainData": {
        "properties": {
          "approval_instance_uuid": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "approval_trigger_instance_error_message": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "approval_trigger_instance_error_redirect_url": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "approval_trigger_type": {
            "default": null,
            "enum": [
              "GLOBAL_FORM_RESPONSE",
              "IRONCLAD_WORKFLOW_GATE",
              "LAUNCH_ESIGN_WORKFLOW",
              "LAUNCH_EXTERNAL_APPROVAL",
              "LAUNCH_IRONCLAD_WORKFLOW",
              "LAUNCH_THIRD_PARTY_RISK_MANAGEMENT_VENDOR_REVIEW_WORKFLOW",
              "LAUNCH_TICKETING_WORKFLOW",
              "LAUNCH_VENDOR_ONBOARDING",
              "SEND_BACK",
              "WAIT_FOR_BOOKING_COMPLETION"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "GLOBAL_FORM_RESPONSE": "Waits for a custom form response to be submitted.",
              "IRONCLAD_WORKFLOW_GATE": "Waits for the Ironclad workflows launched earlier in the request to pass a configured step.",
              "LAUNCH_ESIGN_WORKFLOW": "Launches an eSign envelope and waits for it to be signed.",
              "LAUNCH_EXTERNAL_APPROVAL": "Requests an approval from an external system and waits for its decision.",
              "LAUNCH_IRONCLAD_WORKFLOW": "Launches an Ironclad contract workflow and waits for it to complete.",
              "LAUNCH_THIRD_PARTY_RISK_MANAGEMENT_VENDOR_REVIEW_WORKFLOW": "Launches a third-party risk management vendor review and waits for it to complete.",
              "LAUNCH_TICKETING_WORKFLOW": "Creates a ticket in an external ticketing system and waits for it to be resolved.",
              "LAUNCH_VENDOR_ONBOARDING": "Launches vendor onboarding and waits for it to complete.",
              "SEND_BACK": "Sends the request back to an assignee and waits for it to be returned.",
              "WAIT_FOR_BOOKING_COMPLETION": "Waits for a travel booking to be completed."
            }
          },
          "is_delegate": {
            "default": false,
            "type": "boolean"
          },
          "is_in_approval_reminder_cooldown": {
            "default": null,
            "nullable": true,
            "type": "boolean"
          },
          "is_last_step_for_user": {
            "default": false,
            "type": "boolean"
          },
          "needs_user_action": {
            "default": false,
            "type": "boolean"
          },
          "needs_user_trigger_action": {
            "default": false,
            "type": "boolean"
          },
          "reminder_communication_last_sent_at": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "revert_note": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "revert_note_author": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "status": {
            "enum": [
              "APPROVED",
              "INITIALIZED",
              "PENDING",
              "REJECTED",
              "TERMINATED"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "APPROVED": "The approval chain has been approved.",
              "INITIALIZED": "The approval chain has been initialized.",
              "PENDING": "The approval chain is awaiting approval.",
              "REJECTED": "The approval chain has been rejected.",
              "TERMINATED": "The approval chain has been terminated."
            }
          }
        },
        "required": [
          "approval_instance_uuid",
          "approval_trigger_instance_error_message",
          "approval_trigger_instance_error_redirect_url",
          "approval_trigger_type",
          "is_delegate",
          "is_in_approval_reminder_cooldown",
          "is_last_step_for_user",
          "needs_user_action",
          "needs_user_trigger_action",
          "reminder_communication_last_sent_at",
          "revert_note",
          "revert_note_author",
          "status"
        ],
        "type": "object"
      },
      "ApprovalChainEventAssignedEntityPydanticSchema": {
        "properties": {
          "approval_trigger_instance_error_message": {
            "nullable": true,
            "title": "Approval Trigger Instance Error Message",
            "type": "string"
          },
          "approval_trigger_instance_error_redirect_url": {
            "nullable": true,
            "title": "Approval Trigger Instance Error Redirect Url",
            "type": "string"
          },
          "approval_trigger_type": {
            "$ref": "#/components/schemas/ApprovalTriggerType",
            "nullable": true
          },
          "assigned_user_full_name": {
            "title": "Assigned User Full Name",
            "type": "string"
          },
          "assigned_user_id": {
            "nullable": true,
            "title": "Assigned User Id",
            "type": "string"
          },
          "can_create_esign_envelope": {
            "default": null,
            "description": "Whether the current viewer has a pending e-sign assignment for this trigger. Null when eligibility has not been loaded or the trigger is not e-sign.",
            "nullable": true,
            "title": "Can Create Esign Envelope",
            "type": "boolean"
          },
          "delegator_user_full_name": {
            "nullable": true,
            "title": "Delegator User Full Name",
            "type": "string"
          },
          "delegator_user_id": {
            "nullable": true,
            "title": "Delegator User Id",
            "type": "string"
          },
          "entity_full_name": {
            "title": "Entity Full Name",
            "type": "string"
          },
          "entity_id": {
            "nullable": true,
            "title": "Entity Id",
            "type": "string"
          },
          "entity_type": {
            "$ref": "#/components/schemas/ApprovalAssignedEntityType"
          },
          "external_url": {
            "nullable": true,
            "title": "External Url",
            "type": "string"
          },
          "notes": {
            "nullable": true,
            "title": "Notes",
            "type": "string"
          },
          "provider_type": {
            "default": null,
            "nullable": true,
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "approval_trigger_instance_error_message",
          "approval_trigger_instance_error_redirect_url",
          "approval_trigger_type",
          "assigned_user_full_name",
          "assigned_user_id",
          "delegator_user_full_name",
          "delegator_user_id",
          "entity_full_name",
          "entity_id",
          "entity_type",
          "external_url",
          "notes"
        ],
        "title": "ApprovalChainEventAssignedEntityPydanticSchema",
        "type": "object"
      },
      "ApprovalChainMetadataPydanticSchema": {
        "properties": {
          "allow_self_approvals": {
            "default": null,
            "nullable": true,
            "title": "Allow Self Approvals",
            "type": "boolean"
          },
          "approval_reminder_cooldown": {
            "$ref": "#/components/schemas/ApprovalReminderCooldownMetadataPydanticSchema",
            "default": null,
            "nullable": true
          },
          "approval_reminder_limit_reached": {
            "description": "Whether the Bill Pay approval reminder limit has been reached; false for other products.",
            "title": "Approval Reminder Limit Reached",
            "type": "boolean"
          },
          "approvals_paused": {
            "default": null,
            "nullable": true,
            "title": "Approvals Paused",
            "type": "boolean"
          },
          "approvals_paused_by": {
            "$ref": "#/components/schemas/ApprovalReducedUser",
            "default": null,
            "nullable": true
          },
          "can_add_steps": {
            "default": null,
            "nullable": true,
            "title": "Can Add Steps",
            "type": "boolean"
          },
          "can_skip": {
            "default": null,
            "nullable": true,
            "title": "Can Skip",
            "type": "boolean"
          },
          "current_step_in_chain": {
            "nullable": true,
            "title": "Current Step In Chain",
            "type": "integer"
          },
          "has_blocking_approval_requirements": {
            "default": null,
            "nullable": true,
            "title": "Has Blocking Approval Requirements",
            "type": "boolean"
          },
          "is_last_step_for_user": {
            "title": "Is Last Step For User",
            "type": "boolean"
          },
          "is_pausable": {
            "default": null,
            "nullable": true,
            "title": "Is Pausable",
            "type": "boolean"
          },
          "last_action_date": {
            "nullable": true,
            "title": "Last Action Date",
            "type": "string"
          },
          "needs_user_action": {
            "title": "Needs User Action",
            "type": "boolean"
          },
          "next_approvers": {
            "items": {
              "$ref": "#/components/schemas/ApprovalChainEventAssignedEntityPydanticSchema"
            },
            "title": "Next Approvers",
            "type": "array"
          },
          "number_of_approvals": {
            "title": "Number Of Approvals",
            "type": "integer"
          },
          "rejection_note": {
            "default": null,
            "nullable": true,
            "title": "Rejection Note",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/ApprovalChainStatus"
          },
          "total_number_of_approvals": {
            "title": "Total Number Of Approvals",
            "type": "integer"
          },
          "total_steps_in_chain": {
            "title": "Total Steps In Chain",
            "type": "integer"
          }
        },
        "required": [
          "approval_reminder_limit_reached",
          "current_step_in_chain",
          "is_last_step_for_user",
          "last_action_date",
          "needs_user_action",
          "next_approvers",
          "number_of_approvals",
          "status",
          "total_number_of_approvals",
          "total_steps_in_chain"
        ],
        "title": "ApprovalChainMetadataPydanticSchema",
        "type": "object"
      },
      "ApprovalChainStatus": {
        "enum": [
          "APPROVED",
          "INITIALIZED",
          "PENDING",
          "REJECTED",
          "TERMINATED"
        ],
        "title": "ApprovalChainStatus",
        "type": "string",
        "x-enum-descriptions": {
          "APPROVED": "The approval chain has been approved.",
          "INITIALIZED": "The approval chain has been initialized.",
          "PENDING": "The approval chain is awaiting approval.",
          "REJECTED": "The approval chain has been rejected.",
          "TERMINATED": "The approval chain has been terminated."
        }
      },
      "ApprovalEntityStatus": {
        "enum": [
          "ADMIN_APPROVED",
          "ADMIN_REJECTED",
          "APPROVED",
          "COMPLETED",
          "PENDING",
          "REJECTED"
        ],
        "title": "ApprovalEntityStatus",
        "type": "string"
      },
      "ApprovalEvent": {
        "properties": {
          "_ramp_event_type": {
            "type": "string"
          },
          "acting_user_id": {
            "default": null,
            "nullable": true,
            "type": "integer"
          },
          "approval_chain_events": {
            "items": {
              "$ref": "#/components/schemas/SanitizedApprovalStep"
            },
            "nullable": true,
            "type": "array"
          },
          "date": {
            "type": "string"
          },
          "displayed_event_text": {
            "type": "string"
          },
          "event_order": {
            "type": "integer"
          },
          "event_type": {
            "type": "string"
          },
          "notes": {
            "default": null,
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/FormattedTextDataclass"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "_ramp_event_type",
          "acting_user_id",
          "approval_chain_events",
          "date",
          "displayed_event_text",
          "event_order",
          "event_type",
          "notes"
        ],
        "type": "object"
      },
      "ApprovalGroupStatus": {
        "enum": [
          "APPROVED",
          "PENDING",
          "REJECTED"
        ],
        "title": "ApprovalGroupStatus",
        "type": "string"
      },
      "ApprovalGroupType": {
        "enum": [
          "ABSOLUTE",
          "DYNAMIC",
          "MANAGER_CHAIN_TRAVERSAL",
          "RELATIVE",
          "SEQUENTIAL_MATRIX_RESOLVER"
        ],
        "title": "ApprovalGroupType",
        "type": "string"
      },
      "ApprovalHistory": {
        "description": "An action recorded in an approval's history.",
        "properties": {
          "action_at": {
            "description": "Date and time when the action occurred.",
            "format": "date-time",
            "type": "string"
          },
          "step_status": {
            "description": "Resulting status of the approval step.",
            "type": "string"
          },
          "user_email": {
            "description": "Email address of the acting user.",
            "format": "email",
            "nullable": true,
            "type": "string"
          },
          "user_id": {
            "description": "Unique identifier of the acting user.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "action_at",
          "step_status",
          "user_email",
          "user_id"
        ],
        "type": "object"
      },
      "ApprovalOnlyRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseProcurementRequest"
          },
          {
            "properties": {
              "existing_spend_request": {
                "$ref": "#/components/schemas/BaseReducedExistingSpendRequest",
                "nullable": true
              },
              "spend_request_type": {
                "default": "APPROVAL_ONLY",
                "enum": [
                  "APPROVAL_ONLY"
                ],
                "type": "string"
              },
              "unified_spend_request_type": {
                "default": "APPROVAL_ONLY",
                "enum": [
                  "APPROVAL_ONLY"
                ],
                "type": "string"
              }
            },
            "required": [
              "existing_spend_request",
              "spend_request_type",
              "unified_spend_request_type"
            ],
            "type": "object"
          }
        ]
      },
      "ApprovalOnlyRequestDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApprovalOnlyRequest"
          },
          {
            "$ref": "#/components/schemas/BaseProcurementRequestDetail"
          }
        ]
      },
      "ApprovalPolicyLightSchema": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "is_default": {
            "title": "Is Default",
            "type": "boolean"
          },
          "name": {
            "nullable": true,
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "id",
          "is_default",
          "name"
        ],
        "title": "ApprovalPolicyLightSchema",
        "type": "object"
      },
      "ApprovalReducedUser": {
        "properties": {
          "deleted_at": {
            "nullable": true,
            "title": "Deleted At",
            "type": "string"
          },
          "email": {
            "title": "Email",
            "type": "string"
          },
          "first_name": {
            "title": "First Name",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "last_name": {
            "title": "Last Name",
            "type": "string"
          },
          "lifecycle_status": {
            "$ref": "#/components/schemas/UserLifecycleStatus",
            "default": null,
            "nullable": true
          },
          "profile_picture_url": {
            "nullable": true,
            "title": "Profile Picture Url",
            "type": "string"
          },
          "role": {
            "$ref": "#/components/schemas/PrimarySystemRole"
          }
        },
        "required": [
          "deleted_at",
          "email",
          "first_name",
          "id",
          "last_name",
          "profile_picture_url",
          "role"
        ],
        "title": "ApprovalReducedUser",
        "type": "object"
      },
      "ApprovalReminderCooldownMetadataPydanticSchema": {
        "properties": {
          "can_send_reminder": {
            "title": "Can Send Reminder",
            "type": "boolean"
          },
          "period_in_days": {
            "title": "Period In Days",
            "type": "integer"
          },
          "reminder_communication_last_sent_at": {
            "title": "Reminder Communication Last Sent At",
            "type": "string"
          }
        },
        "required": [
          "can_send_reminder",
          "period_in_days",
          "reminder_communication_last_sent_at"
        ],
        "title": "ApprovalReminderCooldownMetadataPydanticSchema",
        "type": "object"
      },
      "ApprovalTriggerType": {
        "enum": [
          "GLOBAL_FORM_RESPONSE",
          "IRONCLAD_WORKFLOW_GATE",
          "LAUNCH_ESIGN_WORKFLOW",
          "LAUNCH_EXTERNAL_APPROVAL",
          "LAUNCH_IRONCLAD_WORKFLOW",
          "LAUNCH_THIRD_PARTY_RISK_MANAGEMENT_VENDOR_REVIEW_WORKFLOW",
          "LAUNCH_TICKETING_WORKFLOW",
          "LAUNCH_VENDOR_ONBOARDING",
          "SEND_BACK",
          "WAIT_FOR_BOOKING_COMPLETION"
        ],
        "title": "ApprovalTriggerType",
        "type": "string",
        "x-enum-descriptions": {
          "GLOBAL_FORM_RESPONSE": "Waits for a custom form response to be submitted.",
          "IRONCLAD_WORKFLOW_GATE": "Waits for the Ironclad workflows launched earlier in the request to pass a configured step.",
          "LAUNCH_ESIGN_WORKFLOW": "Launches an eSign envelope and waits for it to be signed.",
          "LAUNCH_EXTERNAL_APPROVAL": "Requests an approval from an external system and waits for its decision.",
          "LAUNCH_IRONCLAD_WORKFLOW": "Launches an Ironclad contract workflow and waits for it to complete.",
          "LAUNCH_THIRD_PARTY_RISK_MANAGEMENT_VENDOR_REVIEW_WORKFLOW": "Launches a third-party risk management vendor review and waits for it to complete.",
          "LAUNCH_TICKETING_WORKFLOW": "Creates a ticket in an external ticketing system and waits for it to be resolved.",
          "LAUNCH_VENDOR_ONBOARDING": "Launches vendor onboarding and waits for it to complete.",
          "SEND_BACK": "Sends the request back to an assignee and waits for it to be returned.",
          "WAIT_FOR_BOOKING_COMPLETION": "Waits for a travel booking to be completed."
        }
      },
      "ApprovalUser": {
        "properties": {
          "approval_date": {
            "nullable": true,
            "title": "Approval Date",
            "type": "string"
          },
          "delegate_for": {
            "items": {
              "$ref": "#/components/schemas/ApprovalReducedUser"
            },
            "title": "Delegate For",
            "type": "array"
          },
          "delegated_user": {
            "$ref": "#/components/schemas/ApprovalReducedUser",
            "nullable": true
          },
          "reduced_user": {
            "$ref": "#/components/schemas/ApprovalReducedUser"
          },
          "status": {
            "$ref": "#/components/schemas/ApprovalEntityStatus"
          }
        },
        "required": [
          "approval_date",
          "delegate_for",
          "delegated_user",
          "reduced_user",
          "status"
        ],
        "title": "ApprovalUser",
        "type": "object"
      },
      "ApprovalsResource": {
        "description": "Approval details for a resource.",
        "properties": {
          "approval_history": {
            "description": "Actions recorded for the approval chain.",
            "items": {
              "$ref": "#/components/schemas/ApprovalHistory"
            },
            "readOnly": true,
            "type": "array"
          },
          "entity_id": {
            "description": "Unique identifier of the resource.",
            "format": "uuid",
            "readOnly": true,
            "type": "string"
          },
          "entity_type": {
            "description": "Type of resource under approval.",
            "enum": [
              "bill",
              "reimbursement",
              "transaction"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "bill": "A bill under approval.",
              "reimbursement": "A reimbursement under approval.",
              "transaction": "A card transaction under approval."
            }
          },
          "next_approvers": {
            "description": "Users responsible for the next approval action.",
            "items": {
              "$ref": "#/components/schemas/NextApprover"
            },
            "readOnly": true,
            "type": "array"
          },
          "status": {
            "description": "Current status of the approval chain.",
            "enum": [
              "APPROVED",
              "INITIALIZED",
              "PENDING",
              "REJECTED",
              "TERMINATED"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "APPROVED": "The approval chain has been approved.",
              "INITIALIZED": "The approval chain has been initialized.",
              "PENDING": "The approval chain is awaiting approval.",
              "REJECTED": "The approval chain has been rejected.",
              "TERMINATED": "The approval chain has been terminated."
            }
          }
        },
        "required": [
          "approval_history",
          "entity_id",
          "entity_type",
          "next_approvers",
          "status"
        ],
        "type": "object"
      },
      "ApproverGroupRequestBody": {
        "description": "A group of users to add to an approval step.",
        "properties": {
          "type": {
            "description": "Type of approver group.",
            "enum": [
              "USER"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "USER": "A group of users identified by UUID or email address."
            }
          },
          "users": {
            "description": "Users included in the approver group.",
            "items": {
              "$ref": "#/components/schemas/ApproverUserRequestBody"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "type",
          "users"
        ],
        "type": "object"
      },
      "ApproverUserRequestBody": {
        "description": "A user to add as an approver.",
        "properties": {
          "email": {
            "description": "Email address of the approver.",
            "format": "email",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the approver.",
            "format": "uuid",
            "type": "string"
          }
        },
        "type": "object"
      },
      "AravoMultipleReportError": {
        "properties": {
          "error_message": {
            "default": null,
            "nullable": true,
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "ARAVO_MULTIPLE_REPORT_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "default": "ARAVO",
            "enum": [
              "ARAVO"
            ],
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "AravoMultipleReportError",
        "type": "object"
      },
      "ArchiveDenialReason": {
        "enum": [
          "already_archived",
          "associated_with_bills",
          "associated_with_transactions",
          "no_permission",
          "not_pending",
          "pending_change_order",
          "request_rejected"
        ],
        "title": "ArchiveDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "pending_change_order": "The purchase order has a pending change order."
        }
      },
      "ArrayValue": {
        "properties": {
          "child_type": {
            "enum": [
              "ARRAY",
              "BOOL",
              "INT",
              "JSONB",
              "NUMERIC",
              "STR"
            ],
            "type": "string"
          },
          "type": {
            "enum": [
              "ARRAY"
            ],
            "type": "string"
          },
          "value": {
            "items": {
              "$ref": "#/components/schemas/TypedValue"
            },
            "nullable": true,
            "type": "array"
          }
        },
        "required": [
          "child_type",
          "type"
        ],
        "type": "object"
      },
      "AssignedUserSource": {
        "enum": [
          "ROUND_ROBIN",
          "ROUTE_REQUEST"
        ],
        "title": "AssignedUserSource",
        "type": "string",
        "x-enum-descriptions": {
          "ROUND_ROBIN": "The approver was randomly assigned from the selected users and groups.",
          "ROUTE_REQUEST": "The approver was selected by a person routing the request."
        }
      },
      "AtomicCondition": {
        "properties": {
          "condition_item_type": {
            "enum": [
              "CONDITION"
            ],
            "type": "string"
          },
          "currency": {
            "description": "Threshold currency of a money condition. Missing or null means USD.",
            "nullable": true,
            "type": "string"
          },
          "left_operand": {
            "$ref": "#/components/schemas/Operand"
          },
          "operator": {
            "$ref": "#/components/schemas/Operator"
          },
          "right_operand": {
            "$ref": "#/components/schemas/Operand"
          }
        },
        "required": [
          "condition_item_type",
          "left_operand",
          "operator",
          "right_operand"
        ],
        "type": "object"
      },
      "AttributedUserResponse": {
        "description": "Response schema for a user attributed to a saving.",
        "properties": {
          "full_name": {
            "title": "Full Name",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          }
        },
        "required": [
          "full_name",
          "id"
        ],
        "title": "AttributedUserResponse",
        "type": "object"
      },
      "AuditLogAgentDetailsResource": {
        "properties": {
          "agent_name": {
            "description": "Name of the agent that executed the action",
            "type": "string"
          }
        },
        "required": [
          "agent_name"
        ],
        "type": "object"
      },
      "AuditLogEventResource": {
        "example": {
          "actor_details": {
            "actor_type": "ramp"
          },
          "actor_id": "c4e416c9-9239-42ac-a4ca-81ccef8c8053",
          "actor_type": "ramp",
          "additional_details": "Removed vendor owner",
          "event_details": {
            "references": [
              {
                "label": "Payee - Big Mouth Coffee Roasters",
                "resource_name": "Vendor / Merchant",
                "url": "/vendors/profile/bcf5d623-0429-4676-8750-e52e1f2e2d60/overview"
              }
            ]
          },
          "event_time": "2025-10-03T06:26:57+00:00",
          "event_type": "Edited vendor field",
          "id": "0199a8c0-b40a-7c1e-bb8e-e8f850c29947",
          "primary_reference": {
            "id": "bcf5d623-0429-4676-8750-e52e1f2e2d60",
            "label": "Payee - Big Mouth Coffee Roasters",
            "resource_name": "Vendor / Merchant",
            "url": "/vendors/profile/bcf5d623-0429-4676-8750-e52e1f2e2d60/overview"
          },
          "user_details": null
        },
        "properties": {
          "actor_details": {
            "$ref": "#/components/schemas/ActorDetailsResource",
            "description": "Additional details of the actor"
          },
          "actor_id": {
            "description": "Unique identifier of the actor",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "actor_type": {
            "description": "The type of the actor that the audit log event is attributable to",
            "enum": [
              "policy_agent",
              "ramp",
              "spend_request_agent",
              "user"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "spend_request_agent": "Spend Request Agent activity."
            }
          },
          "additional_details": {
            "description": "Additional details of the audit log event",
            "nullable": true,
            "type": "string"
          },
          "agent_details": {
            "$ref": "#/components/schemas/AuditLogAgentDetailsResource",
            "description": "Agent that executed the action for the user",
            "nullable": true
          },
          "event_details": {
            "$ref": "#/components/schemas/EventDetailsResource",
            "description": "Details of the audit log event"
          },
          "event_time": {
            "description": "Timestamp of the audit log event",
            "format": "date-time",
            "type": "string"
          },
          "event_type": {
            "description": "Type of the audit log event",
            "enum": [
              "ABK agent blocked on user",
              "ABK agent review requested",
              "ABK agent schedule failed",
              "ABK agent started",
              "AI custom field config executed",
              "AI spend anomaly review state changed",
              "AI usage limits updated",
              "Account closed",
              "Account details previewed",
              "Account details viewed",
              "Account document downloaded",
              "Account number deleted",
              "Account number generated",
              "Account number renamed",
              "Account opened",
              "Account renamed",
              "Accounting ai auto mark ready",
              "Accounting coding rules updated",
              "Accounting fields updated",
              "Accounting fixed asset changed",
              "Accounting fixed asset class changed",
              "Accounting lease changed",
              "Accounting provider access changed",
              "Accounting settings updated",
              "Accounting split templates updated",
              "Activated card",
              "Added bill field",
              "Added card acceptance policy",
              "Added procurement field",
              "Added user to funds",
              "Added vendor field",
              "Admin changed email",
              "Admin changed phone",
              "Agent access request resolved",
              "Agent access requested",
              "Agent created",
              "Agent current version changed",
              "Agent permissions updated",
              "Agent version created",
              "Agent version published",
              "Amortization schedule updated",
              "App Store app disconnected",
              "Approval authority changed",
              "Approval chain updated",
              "Approval policy set as default",
              "Approval step added",
              "Approval step approved",
              "Approval step rejected",
              "Approval step skipped",
              "Approval step terminated",
              "Approved by manager",
              "Approved card edit request with modifications",
              "Approved card edit request",
              "Approved funds edit request with modifications",
              "Approved funds edit request",
              "Approved new card request with modifications",
              "Approved new card request",
              "Approved procurement change request",
              "Approved request for new funds with modifications",
              "Approved request for new funds",
              "Ascenda credit redeemed",
              "Attendee split",
              "Authorization letter downloaded",
              "Automatic investment transfer canceled",
              "Automatic rule management actions reviewed",
              "Automation deleted",
              "Bank account ACH details viewed",
              "Bank account entity owner changed",
              "Bank account sensitive details viewed",
              "Bank account updated",
              "Bank letter downloaded",
              "Bill Pay setup progress updated",
              "Bill created by AP coworker",
              "Bill linked to PO",
              "Bill linked to contract",
              "Bill linked",
              "Bill pay AP coworker questions answered",
              "Bill pay accepted PDR bank account ownership match",
              "Bill pay accepted sync for bank account from vendor network",
              "Bill pay accepted sync for vendor card acceptance policy from vendor network",
              "Bill pay accepted sync for vendor check mailing address from vendor network",
              "Bill pay accepted sync for vendor information from vendor network",
              "Bill pay accepted sync for vendor tax info from vendor network",
              "Bill pay accounting manual user action",
              "Bill pay accounting sync triggered",
              "Bill pay accrual synced",
              "Bill pay approval policy updated",
              "Bill pay automatic card payment no longer eligible",
              "Bill pay automatic card payment",
              "Bill pay bank account updated",
              "Bill pay batch payment initiated",
              "Bill pay business vendor unlinked from vendor network",
              "Bill pay card delivery",
              "Bill pay check address update",
              "Bill pay check tracking update",
              "Bill pay deleted bill",
              "Bill pay delivered payment",
              "Bill pay dismissed fraud alert",
              "Bill pay edited payee address",
              "Bill pay edited payment method",
              "Bill pay initiated payment refund",
              "Bill pay mailed check payment",
              "Bill pay marked as paid",
              "Bill pay marked as unpaid",
              "Bill pay matched transaction to bill",
              "Bill pay matched transfer to bill",
              "Bill pay payment failed",
              "Bill pay payment posted",
              "Bill pay payment reversal failed",
              "Bill pay payment reversal posted",
              "Bill pay payment reversal succeeded",
              "Bill pay recurrence info changed for recurring series",
              "Bill pay rejected PDR bank account ownership match",
              "Bill pay rejected sync for bank account from vendor network",
              "Bill pay rejected sync for vendor card acceptance policy from vendor network",
              "Bill pay rejected sync for vendor check mailing address from vendor network",
              "Bill pay rejected sync for vendor information from vendor network",
              "Bill pay rejected sync for vendor tax info from vendor network",
              "Bill pay retried payment",
              "Bill pay returned funds",
              "Bill pay submission policy updated",
              "Bill pay unmatched transfer from bill",
              "Bill unlinked from PO",
              "Bill unlinked from contract",
              "Bill unlinked",
              "Billing bank account updated",
              "Billing config updated",
              "Billing group primary business changed",
              "Blank canvas workflow execution updated",
              "Blank canvas workflow pause status updated",
              "Booking action by travel agency",
              "Booking request approval policy updated",
              "Bookkeeping agent browser control changed",
              "Bookkeeping agent response stopped",
              "Briefing subscription created",
              "Brokerage order updated",
              "Browser login changed",
              "Business bank account added",
              "Business bank account changed",
              "Business bank account removed",
              "Business communication preferences changed",
              "Cancel revision request",
              "Canceled physical card request",
              "Cancelled by customer",
              "Cancelled by ramp",
              "Card delivered",
              "Card offer accepted",
              "Card offer declined",
              "Card payment initiated (audit)",
              "Card payment initiated",
              "Cash Manager settings updated",
              "Cash agent recommendation updated",
              "Cash app rerun started",
              "Cash application agent action",
              "Cash manager recommendation reviewed",
              "Cashback redeemed",
              "Cellular ledger balance adjusted",
              "Change order workflow restarted due to change order request modification",
              "Changed bank account on bill",
              "Changed card holder",
              "Changed funds user",
              "Check PDF downloaded",
              "Checking Account terms accepted",
              "Close task restored",
              "Combined contracts with this contract",
              "Communication sent",
              "Complete revision",
              "Compliance flag updated",
              "Contract linked to card transaction",
              "Contract unlinked from card transaction",
              "Counterparty created",
              "Counterparty details changed",
              "Counterparty details configuration changed",
              "Counterparty details configuration created",
              "Counterparty details deleted",
              "Created accounting split line item",
              "Created card",
              "Created fund from purchase order",
              "Created merchant error",
              "Created unrecognized charge",
              "Created",
              "Debit settings updated",
              "Default product access updated",
              "Deleted bill field",
              "Deleted card acceptance policy",
              "Deleted procurement field",
              "Deleted vendor field",
              "Deleted",
              "Demoted co-owner to member",
              "Detached funds from spend program",
              "Developer API client deleted",
              "Developer API client secret rotated",
              "Direct Bank connection added",
              "Direct Bank credentials activated",
              "Direct Bank credentials saved",
              "Document labeled",
              "Document updated",
              "Docusign envelope updated",
              "Dormant funds automation changed",
              "Draft provenance recorded",
              "Draft vendor changed by AP coworker",
              "Draft vendor created",
              "Draft vendor deleted",
              "Draft vendor published",
              "Duplicate payment review confirmed",
              "Earn account opened",
              "Edited bill field",
              "Edited card acceptance policy",
              "Edited contract tracking setting",
              "Edited custom field",
              "Edited procurement field",
              "Edited spend allocation request",
              "Edited spend intent",
              "Edited tin",
              "Edited vendor field",
              "Edited wallet automation",
              "Email updated",
              "Emailed purchase order",
              "Employee policy signed",
              "Entity created",
              "Entity deleted",
              "Exception given from dispute resolution",
              "Exception given from repayment",
              "Exception request approved",
              "Exception request cancelled",
              "Exception request denied",
              "Exception requested",
              "External agent credential rotated",
              "External agent key created",
              "External agent key revoked",
              "External agent key updated",
              "External agent wallet execution changed",
              "External ticket created asana",
              "External ticket created jira",
              "External ticket created linear",
              "External ticket created zendesk",
              "Flex fee redeemed",
              "Flexible limits default changed",
              "Flight change receipt regenerated",
              "Forecast custom input added",
              "Forecast custom input deleted",
              "Forecast custom input updated",
              "Forecast settings updated",
              "Fraud Omni investigation started",
              "Funds activated from reissued virtual card",
              "Funds attached to invite",
              "Generated renewal brief for contract",
              "Governed change applied",
              "Governed change became stale",
              "Governed change rejected",
              "Governed change submitted for review",
              "Governed changes turned off",
              "Governed changes turned on",
              "HRIS integration setting updated",
              "IP allowlist updated",
              "Identity locked",
              "Identity unlocked",
              "Impersonation upgraded to read-write",
              "Incentive offer enrolled",
              "Initiated digital wallet provisioning (audit)",
              "Internal bank transfer link changed",
              "Internal impersonation upgraded to read-write",
              "International payment initiated",
              "Investment Account closed",
              "Investment Account opened",
              "Investment Account renamed",
              "Investment Account terms accepted",
              "Investment Account updated",
              "Ironclad workflow updated",
              "Issued funds",
              "Item receipt accounting sync",
              "Journal entry batch retry requested",
              "Large transfer initiated",
              "Left funds",
              "Legal agreement accepted",
              "Legal entity updated",
              "Linked funds to spend program",
              "Locked access to funds",
              "Locked card",
              "Login methods updated",
              "Managed portfolio transfer updated",
              "Manager updated",
              "Manual redemption redeemed",
              "Mark as accidental",
              "Mass payout initiated",
              "Matched purchase order to transaction",
              "Matched transaction to purchase order",
              "Memo updated",
              "Merged vendors",
              "Name updated hris",
              "Name updated",
              "New vendor approval policy updated",
              "New virtual card issued for currency migration",
              "Nightly bank sync setting changed",
              "Notification sent due to change order request modification",
              "Notification sent due to purchase order request modification",
              "Passkey created",
              "Passkey deleted",
              "Passkey removal request denied",
              "Password reset required",
              "Password reset user",
              "Password updated user",
              "Payback cancelled",
              "Payback payment failed",
              "Payback payment manually paid",
              "Payback payment retried",
              "Payback payment succeeded",
              "Payback request approved by user",
              "Payback request cancelled by manager",
              "Payback request rejected by user",
              "Payback requested by manager",
              "Payback triggered by user",
              "Payee linked to accounting",
              "Payment run action",
              "Payment run updated",
              "Payment to new counterparty",
              "Payment updated",
              "Phone change request reviewed",
              "Phone change request superseded",
              "Phone change requested",
              "Phone updated",
              "Points exchange redeemed",
              "Policy agent suggestion feedback submitted",
              "Post spend approval policy updated",
              "Preview mode entered",
              "Procurement  unmatched purchase order from transaction",
              "Procurement  unmatched transaction from purchase order",
              "Procurement agent run completed",
              "Procurement change request approval policy updated",
              "Procurement send global form",
              "Procurement submit global form response",
              "Procurement vendor onboarding submitted",
              "Procurement vendor onboarding triggered",
              "Product access granted",
              "Product access revoked",
              "Program entity restrictions changed",
              "Promoted member to co-owner",
              "Purchase order accounting sync created vendor",
              "Purchase order accounting sync failed",
              "Purchase order accounting sync success",
              "Purchase order accrual lines updated",
              "Purchase order accrual synced",
              "Purchase order delivery acknowledged",
              "Question created",
              "Question deleted",
              "Question updated",
              "RFX clarification answered",
              "RFX clarification question submitted",
              "RFX close date changed",
              "RFX closed",
              "RFX collaborator added",
              "RFX collaborator removed",
              "RFX created",
              "RFX graded",
              "RFX publish approval rejected",
              "RFX published",
              "RFX response deadline changed",
              "RFX response redacted",
              "RFX response submitted",
              "RFX returned to draft",
              "RFX submitted for publish approval",
              "RFX vendor accepted",
              "RFX vendor added",
              "RFX vendor contact changed",
              "RFX vendor declined",
              "RFX vendor removed",
              "Receipt created",
              "Receipt deleted",
              "Receipt downloaded for transfer",
              "Receipt matched",
              "Refund cleared",
              "Refund paid",
              "Reimbursement bank account updated",
              "Reimbursement field changed",
              "Reimbursement from user",
              "Reimbursement marked as unsynced",
              "Reimbursement policy agent suggestion feedback submitted",
              "Reimbursement submitted",
              "Reimbursement to user",
              "Reimbursements disabled",
              "Reimbursements enabled",
              "Reissued card",
              "Rejected card edit request",
              "Rejected funds edit request",
              "Rejected new card request",
              "Rejected procurement change request",
              "Rejected request for new funds",
              "Reminded to approve items",
              "Reminded to upload missing items",
              "Removed user from funds",
              "Repayment accounting sync success",
              "Request revision",
              "Requested an edit to these funds",
              "Requested new card",
              "Requested new funds",
              "Reset offline card PIN",
              "Resolved by ramp",
              "Review needed",
              "Reviewed by ramp",
              "Role updated",
              "Router API key status changed",
              "Router spend limit changed",
              "SFTP Authentication Failed",
              "SFTP Authentication IP and Username Matched",
              "SFTP Configuration Changed",
              "SSO certificate updated",
              "SSO domain DNS verification challenge created",
              "SSO domain DNS verification changed",
              "SSO domain-sharing request resolved",
              "SSO provider created",
              "SSO provider deleted",
              "SSO provider domains updated",
              "SaaS fee redeemed",
              "Separation of duties disabled",
              "Separation of duties enabled",
              "Set member limit on shared fund",
              "Shortfall coverage updated",
              "Smart OCR provenance recorded",
              "Snowflake connection configuration changed",
              "Snowflake connection created",
              "Snowflake connection removed",
              "Snowflake connection scope changed",
              "Sourcing event created",
              "Sourcing event status changed",
              "Spend allocation change request approval policy updated",
              "Spend approved",
              "Spend outcome recorded",
              "Spend rejected",
              "Spend request approval policy updated",
              "Spend settings updated",
              "Stack connector updated",
              "Status updated by intake agent",
              "Status updated",
              "Strict MFA setting updated",
              "Submission policy updated",
              "Submitted procurement change request",
              "Synced draft policy from workflow",
              "Tango gift card redeemed",
              "Temporarily unlocked access to funds",
              "Terminated card",
              "Terminated funds",
              "Test",
              "Third party risk management vendor review updated",
              "This contract was combined with another contract",
              "Ticket approvers updated",
              "Ticket assignee updated",
              "Ticket status updated",
              "Totp authenticator created",
              "Totp authenticator deleted",
              "Totp authenticator updated",
              "Transaction added to trip",
              "Transaction approval policy updated",
              "Transaction approval regeneration requested",
              "Transaction cleared",
              "Transaction entity changed",
              "Transaction fraud label deleted",
              "Transaction fraud status changed",
              "Transaction linked to contract",
              "Transaction marked as unsynced",
              "Transaction missing item reminder event",
              "Transaction paid",
              "Transaction receipt updated",
              "Transaction removed from trip",
              "Transaction submission policy exemption event",
              "Transaction unlinked from contract",
              "Transfer created",
              "Transfer initiated",
              "Transferred ownership of funds",
              "Travel booking manually matched to transaction",
              "Travel integration settings updated",
              "Travel policy selection updated",
              "Trip changed",
              "Trip question answered",
              "Unarchived funds",
              "Undid marking transaction as accidental",
              "Unlocked access to funds",
              "Unlocked card temporarily",
              "Unlocked card",
              "Unmark as accidental",
              "Updated card program",
              "Updated card",
              "Updated funds",
              "Updated policy to include Guest",
              "Updated spend program",
              "Updated workflow to include Guest",
              "User accepted invite",
              "User assigned by external firm",
              "User assigned through external firm merge",
              "User created",
              "User deactivated",
              "User deleted",
              "User invited",
              "User locked",
              "User logged out of all sessions",
              "User logged out",
              "User login",
              "User merchant allowlist updated",
              "User previewed",
              "User reactivated",
              "User undeleted",
              "User unlocked",
              "Vendor Network connection migrated",
              "Vendor Network updates enabled",
              "Vendor added to group",
              "Vendor awarded",
              "Vendor credit action",
              "Vendor edit approval policy updated",
              "Vendor hold released",
              "Vendor imported from erp",
              "Vendor management  vendor added to managed list",
              "Vendor management  vendor removed from managed list",
              "Vendor management agreement deleted document",
              "Vendor management agreement deleted",
              "Vendor management agreement linked document",
              "Vendor management agreement linked purchase order",
              "Vendor management agreement notification type switched",
              "Vendor management agreement reminder sent",
              "Vendor management agreement status changed",
              "Vendor management agreement unlinked document",
              "Vendor management agreement unlinked purchase order",
              "Vendor management agreement uploaded document",
              "Vendor management edited agreement field",
              "Vendor management expansion request status changed",
              "Vendor management vendor network invite sent",
              "Vendor memory file setting updated",
              "Vendor parent set",
              "Vendor parent unset",
              "Vendor payment approval policy updated",
              "Vendor placed on hold",
              "Vendor portal merge suggestion declined",
              "Vendor portal merged",
              "Vendor portal purchase order invoice updated",
              "Vendor profile access created",
              "Vendor profile access denied",
              "Vendor profile access edited",
              "Vendor profile access email sent",
              "Vendor profile access requested",
              "Vendor profile access revoked",
              "Vendor profile all documents downloaded",
              "Vendor profile document downloaded",
              "Vendor removed from group",
              "Vendor sync failure",
              "Viewed sensitive card details",
              "Violation from manager",
              "Violation from rule",
              "Violation from user",
              "Virtual card reissued",
              "Voided check downloaded",
              "WBX approval approved",
              "WBX approval attachment added",
              "WBX approval attachment removed",
              "WBX approval fields updated",
              "WBX approval opened",
              "WBX approval rejected",
              "WBX approver approved",
              "WBX approver rejected",
              "WBX policy created",
              "WBX policy deleted",
              "WBX policy draft discarded",
              "WBX policy draft published",
              "WBX policy draft started",
              "WBX policy renamed",
              "WBX policy workflow generated from draft",
              "WBX request admin approved entire workflow",
              "WBX request archived",
              "WBX request attachment added",
              "WBX request attachment removed",
              "WBX request created",
              "WBX request deleted",
              "WBX request fields updated",
              "WBX request submitted",
              "Wallet redeemed",
              "Workflow restarted due to purchase order request modification",
              "Workflow updated"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "AI spend anomaly review state changed": "An AI spend anomaly was resolved or reopened.",
              "AI usage limits updated": "AI usage limits were updated.",
              "Account closed": "A treasury account was closed.",
              "Account details previewed": "The redacted account & routing numbers were viewed for a treasury account.",
              "Account details viewed": "The unredacted account & routing numbers were viewed for a treasury account.",
              "Account document downloaded": "A monthly statement or 1099 was downloaded for a treasury account.",
              "Account number deleted": "A virtual account number was deleted for a treasury account.",
              "Account number generated": "A new virtual account number was generated for a treasury account.",
              "Account number renamed": "A virtual account number was renamed for a treasury account.",
              "Account renamed": "A treasury account was renamed.",
              "Accounting fixed asset changed": "A fixed asset was created, updated, productionized, or deleted.",
              "Accounting fixed asset class changed": "A fixed asset class was created, updated, productionized, or deleted.",
              "Accounting lease changed": "A lease was created, updated, productionized, or deleted.",
              "Accounting settings updated": "An accounting account or cash mapping was changed.",
              "Amortization schedule updated": "An amortization schedule was updated.",
              "App Store app disconnected": "An App Store app was disconnected.",
              "Approval authority changed": "A group approval limit was added, changed, or removed.",
              "Approval policy set as default": "An approval policy was set as the default for its spend type.",
              "Authorization letter downloaded": "An authorization letter was downloaded for a treasury account.",
              "Automatic investment transfer canceled": "An automatic post-settlement investment transfer was canceled.",
              "Automatic rule management actions reviewed": "Automatic accounting rule management actions were reviewed.",
              "Automation deleted": "A treasury automation policy was deleted.",
              "Bank account ACH details viewed": "ACH account and routing details were viewed for a business bank account.",
              "Bank account entity owner changed": "The legal entity owner of a business bank account was changed.",
              "Bank account sensitive details viewed": "Sensitive details were viewed for a business bank account.",
              "Bank letter downloaded": "A bank letter was downloaded for a treasury account.",
              "Bill Pay setup progress updated": "Bill Pay setup progress was updated.",
              "Bill created by AP coworker": "A bill was automatically created by the AP coworker agent.",
              "Bill pay accepted PDR bank account ownership match": "ACH payment details submitted through a payee details request were approved.",
              "Bill pay accrual synced": "A bill accrual was synced.",
              "Bill pay marked as unpaid": "A bill was marked as unpaid.",
              "Bill pay matched transfer to bill": "A transfer was matched to a bill.",
              "Bill pay payment reversal failed": "A bill payment reversal failed.",
              "Bill pay payment reversal posted": "A bill payment reversal was posted.",
              "Bill pay payment reversal succeeded": "A bill payment reversal succeeded.",
              "Bill pay rejected PDR bank account ownership match": "ACH payment details submitted through a payee details request were rejected.",
              "Bill pay submission policy updated": "A bill pay submission policy was updated.",
              "Bill pay unmatched transfer from bill": "A transfer was unmatched from a bill.",
              "Billing bank account updated": "The bank account that pays an entity's Ramp subscription fees was changed.",
              "Billing group primary business changed": "A billing group's primary business was changed.",
              "Booking action by travel agency": "A travel management company agent completed a booking action for this business through the Advisor Console.",
              "Bookkeeping agent browser control changed": "A user handed a bookkeeping agent browser to manual control or back to the agent.",
              "Bookkeeping agent response stopped": "A user stopped generation of a bookkeeping agent response.",
              "Briefing subscription created": "A briefing subscription was created.",
              "Browser login changed": "A browser agent login was added, changed, or removed.",
              "Business communication preferences changed": "Communication preferences for a business event were changed.",
              "Canceled physical card request": "An unfulfilled physical card request was canceled.",
              "Card offer accepted": "A user accepted a card offer.",
              "Card offer declined": "A user declined a card offer.",
              "Cash Manager settings updated": "Cash Manager settings updated for a treasury account.",
              "Cash app rerun started": "Ramp reran cash app on recent deposits that had no payment or suggestion.",
              "Cash application agent action": "An accounts receivable payment or payment application was created by the cash application agent.",
              "Cash manager recommendation reviewed": "A cash manager recommendation was approved or rejected.",
              "Cellular ledger balance adjusted": "An internal operator adjusted a Payments Cellular account balance.",
              "Check PDF downloaded": "A check PDF was downloaded for a check withdrawal.",
              "Close task restored": "A deleted close task and its recoverable configuration were restored.",
              "Compliance flag updated": "A compliance flag was updated.",
              "Contract linked to card transaction": "A contract was linked to a card transaction.",
              "Contract unlinked from card transaction": "A contract was unlinked from a card transaction.",
              "Counterparty details configuration changed": "A global counterparty details configuration was replaced.",
              "Counterparty details configuration created": "A global counterparty details configuration was created.",
              "Counterparty details deleted": "A counterparty's payment details were deleted.",
              "Debit settings updated": "Debit settings were updated for a virtual account number.",
              "Default product access updated": "The business's default product access was updated.",
              "Developer API client deleted": "A Developer API client was deleted.",
              "Developer API client secret rotated": "A Developer API client's secret was rotated.",
              "Direct Bank connection added": "A Direct Bank connection was added.",
              "Direct Bank credentials activated": "Credentials for a Direct Bank connection were activated.",
              "Direct Bank credentials saved": "Credentials for a Direct Bank connection were saved but not activated because the bank rejected them.",
              "Dormant funds automation changed": "Dormant fund automation settings were changed.",
              "Draft provenance recorded": "A draft payee or entity change was recorded.",
              "Draft vendor changed by AP coworker": "The AP intake coworker created or updated a draft vendor.",
              "Duplicate payment review confirmed": "A user confirmed matching invoice evidence as an intentional separate payment. Confirmation did not send payment.",
              "Earn account opened": "An Earn account was opened.",
              "Edited spend allocation request": "A spend allocation request was edited.",
              "Employee policy signed": "An employee signed their policy document or handbook.",
              "Entity created": "A legal entity was created.",
              "Entity deleted": "A legal entity was deleted.",
              "External agent credential rotated": "A standalone agent credential was rotated.",
              "External agent key created": "An agent key was created.",
              "External agent key revoked": "An agent key was revoked.",
              "External agent key updated": "An agent key was updated.",
              "External agent wallet execution changed": "A standalone agent wallet was disabled or re-enabled.",
              "Flex fee redeemed": "Points were redeemed to pay down a Ramp Flex installment fee.",
              "Flight change receipt regenerated": "A flight change charge's generated receipt was replaced with a regenerated receipt.",
              "Forecast custom input added": "A forecast custom input was added.",
              "Forecast custom input deleted": "A forecast custom input was deleted.",
              "Forecast custom input updated": "A forecast custom input was updated.",
              "Forecast settings updated": "Forecast settings were updated for a treasury account.",
              "Fraud Omni investigation started": "A Fraud Omni operator investigation was started for a Zendesk ticket.",
              "Funds attached to invite": "Funds were attached to a user's invite. The funds will be issued when the user accepts the invite.",
              "Governed change applied": "A governed change was applied after approval.",
              "Governed change became stale": "A governed change became stale without being applied.",
              "Governed change rejected": "A governed change was rejected during review.",
              "Governed change submitted for review": "A governed change was submitted for review.",
              "Governed changes turned off": "Meta-approvals were disabled for a governed subject after review.",
              "Governed changes turned on": "Meta-approvals were enabled for a governed subject.",
              "IP allowlist updated": "The business IP allowlist was updated.",
              "Identity locked": "An identity lock was created or rerun.",
              "Identity unlocked": "An identity lock was removed or rerun.",
              "Impersonation upgraded to read-write": "An impersonation session was upgraded to read-write.",
              "Incentive offer enrolled": "The business was enrolled in an incentive offer.",
              "Initiated digital wallet provisioning (audit)": "Digital wallet provisioning was initiated for a card.",
              "Internal bank transfer link changed": "A user linked or unlinked the two bank transactions representing an internal transfer.",
              "Internal impersonation upgraded to read-write": "An internal impersonation session was upgraded to read-write.",
              "Investment Account closed": "Investment account closed",
              "Investment Account opened": "Investment account opened",
              "Investment Account renamed": "Investment account renamed.",
              "Investment Account terms accepted": "Investment account terms were agreed to.",
              "Investment Account updated": "Investment Account updated.",
              "Journal entry batch retry requested": "A retry was requested for an accounting journal entry batch.",
              "Left funds": "A member left a shared fund.",
              "Legal agreement accepted": "A user accepted a legal agreement for a card offer.",
              "Legal entity updated": "A business legal entity was updated.",
              "Login methods updated": "The login methods allowed for business roles were updated.",
              "Manual redemption redeemed": "A manual cashback redemption was recorded against the business's rewards balance (e.g. when ops fulfills a customer redemption out-of-band by issuing Ramp incentive cards).",
              "New vendor approval policy updated": "A new vendor approval policy was updated.",
              "Nightly bank sync setting changed": "Nightly bank sync was enabled or disabled for the business.",
              "Passkey created": "A passkey was created for a user.",
              "Passkey deleted": "A passkey was deleted for a user.",
              "Passkey removal request denied": "An admin denied a user's passkey removal request.",
              "Phone change request reviewed": "An admin approved or denied a phone change request.",
              "Phone change request superseded": "A newer phone change request replaced a pending request.",
              "Phone change requested": "A user requested an administrator's help changing their phone number.",
              "Preview mode entered": "An internal preview impersonation session was started.",
              "Product access granted": "A user was granted access to a product.",
              "Product access revoked": "A user's access to a product was revoked.",
              "Program entity restrictions changed": "A program's allowed legal entities changed.",
              "Purchase order accrual lines updated": "Purchase order lines were manually included in or excluded from an accrual report.",
              "Purchase order accrual synced": "A purchase order accrual was synced.",
              "Purchase order delivery acknowledged": "A vendor acknowledged a purchase order delivery.",
              "Receipt downloaded for transfer": "A receipt was downloaded for a wallet transfer.",
              "Reimbursement marked as unsynced": "A reimbursement was marked as unsynced in Ramp.",
              "Repayment accounting sync success": "A repayment was successfully synced to the accounting provider.",
              "Reset offline card PIN": "An offline card PIN reset was accepted by the issuer; chip synchronization is pending.",
              "Router API key status changed": "A Router API key was locked, unlocked, or terminated from AI Spend.",
              "Router spend limit changed": "A Router API key or person spend limit was set, changed, or removed.",
              "SSO certificate updated": "An SSO provider certificate was updated.",
              "SSO domain DNS verification challenge created": "A domain's DNS verification challenge was created.",
              "SSO domain DNS verification changed": "A domain's DNS verification status changed.",
              "SSO domain-sharing request resolved": "An SSO domain-sharing request was approved or denied.",
              "SSO provider created": "An SSO provider was created.",
              "SSO provider deleted": "An SSO provider was deleted.",
              "SSO provider domains updated": "Domains were added to or removed from an SSO provider.",
              "Shortfall coverage updated": "Shortfall coverage updated.",
              "Smart OCR provenance recorded": "Smart OCR callback evidence was recorded.",
              "Snowflake connection configuration changed": "A Snowflake connection's credentials or configuration were changed.",
              "Snowflake connection created": "A Snowflake connection was created.",
              "Snowflake connection removed": "A Snowflake connection was removed.",
              "Snowflake connection scope changed": "The schemas or tables available to a Snowflake connection were changed.",
              "Spend settings updated": "A scalar setting on the spend settings page was changed.",
              "Stack connector updated": "A Stack connector was set up or disconnected.",
              "Status updated by intake agent": "Status of an accounts receivable customer was updated by the intake agent.",
              "Strict MFA setting updated": "A business strict MFA setting was updated.",
              "Submission policy updated": "A submission policy was updated.",
              "Synced draft policy from workflow": "A policy draft was updated to reflect edits made to its underlying workflow.",
              "Ticket approvers updated": "A ticket's approvers were updated.",
              "Transaction added to trip": "A transaction was added to a trip.",
              "Transaction approval regeneration requested": "An internal operator requested regeneration of transaction approval chains.",
              "Transaction fraud label deleted": "A transaction fraud label was deleted by a Ramp operator.",
              "Transaction fraud status changed": "A transaction fraud status was changed by a Ramp operator.",
              "Transaction linked to contract": "A card transaction was linked to a contract.",
              "Transaction marked as unsynced": "A card transaction was marked as unsynced in Ramp.",
              "Transaction removed from trip": "A transaction was removed from a trip.",
              "Transaction unlinked from contract": "A card transaction was unlinked from a contract.",
              "Transfer created": "A payment transfer was created.",
              "Transfer initiated": "A transfer was initiated for a treasury account.",
              "Travel booking manually matched to transaction": "A travel booking was manually matched to a card transaction.",
              "Travel integration settings updated": "Receipt attachment or trip creation settings were updated for a travel integration.",
              "Trip question answered": "A user answered a trip confirmation question.",
              "Unarchived funds": "Funds were unarchived.",
              "Updated policy to include Guest": "A policy was updated to include the Guest role.",
              "Updated workflow to include Guest": "A workflow or subflow was updated to include the Guest role.",
              "User logged out": "A user logged out.",
              "User logged out of all sessions": "A user logged out of all sessions.",
              "User merchant allowlist updated": "A user merchant allowlist was updated by a Ramp operator.",
              "Vendor Network connection migrated": "A vendor's Vendor Network connection was updated.",
              "Vendor edit approval policy updated": "A vendor edit approval policy was updated.",
              "Vendor hold released": "A vendor hold was released.",
              "Vendor management agreement reminder sent": "A user sent a manual contract reminder.",
              "Vendor management vendor network invite sent": "A Ramp Vendor Network invite was sent to a vendor.",
              "Vendor memory file setting updated": "A vendor's memory file setting was changed.",
              "Vendor parent set": "A parent vendor was set on a vendor.",
              "Vendor parent unset": "A vendor's parent vendor was removed.",
              "Vendor placed on hold": "A vendor was placed on hold.",
              "Vendor portal merge suggestion declined": "A vendor said a suggested vendor portal isn't theirs.",
              "Vendor portal merged": "A vendor combined two vendor portals.",
              "Vendor portal purchase order invoice updated": "A vendor changed a vendor portal invoice created from a purchase order.",
              "Voided check downloaded": "A voided check was downloaded for a treasury account.",
              "WBX request admin approved entire workflow": "An admin approved the entire workflow-backed policy request, skipping all remaining approval steps.",
              "Workflow updated": "A workflow was updated."
            }
          },
          "id": {
            "description": "Unique identifier for the audit log event",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "audit_log_events",
              "type": "many-to-one"
            }
          },
          "primary_reference": {
            "$ref": "#/components/schemas/PrimaryEntityReferenceResource",
            "description": "Metadata of the primary object referenced by the audit log event",
            "nullable": true
          },
          "user_details": {
            "$ref": "#/components/schemas/AuditLogUserDetailsResource",
            "description": "User details of the audit log event. Usually the same as actor details if present unless an agent acts on behalf of a user.",
            "nullable": true
          }
        },
        "required": [
          "actor_details",
          "actor_id",
          "actor_type",
          "additional_details",
          "agent_details",
          "event_details",
          "event_time",
          "event_type",
          "id",
          "primary_reference",
          "user_details"
        ],
        "type": "object",
        "x-resource-name": "audit_log_events"
      },
      "AuditLogPolicyAgentDetailsResource": {
        "properties": {
          "actor_type": {
            "description": "Type of the actor that the audit log event is attributable to",
            "enum": [
              "policy_agent"
            ],
            "type": "string"
          }
        },
        "required": [
          "actor_type"
        ],
        "type": "object"
      },
      "AuditLogRampActorDetailsResource": {
        "properties": {
          "actor_type": {
            "description": "Type of the actor that the audit log event is attributable to",
            "enum": [
              "ramp"
            ],
            "type": "string"
          }
        },
        "required": [
          "actor_type"
        ],
        "type": "object"
      },
      "AuditLogSpendRequestAgentDetailsResource": {
        "properties": {
          "actor_type": {
            "description": "Type of the actor that the audit log event is attributable to",
            "enum": [
              "spend_request_agent"
            ],
            "type": "string"
          }
        },
        "required": [
          "actor_type"
        ],
        "type": "object"
      },
      "AuditLogUserDetailsResource": {
        "properties": {
          "actor_type": {
            "description": "Type of the actor that the audit log event is attributable to",
            "enum": [
              "user"
            ],
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the user",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "actor_type",
          "id"
        ],
        "type": "object"
      },
      "AvailableOperand": {
        "discriminator": {
          "mapping": {
            "OBJECT": "#/components/schemas/AvailableOperandObjectType",
            "STATE": "#/components/schemas/AvailableState",
            "STATE_OBJECT": "#/components/schemas/AvailableStateObject",
            "STATE_OBJECT_LIST": "#/components/schemas/AvailableStateObjectList"
          },
          "propertyName": "available_operand_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/AvailableOperandObjectType"
          },
          {
            "$ref": "#/components/schemas/AvailableState"
          },
          {
            "$ref": "#/components/schemas/AvailableStateObject"
          },
          {
            "$ref": "#/components/schemas/AvailableStateObjectList"
          }
        ]
      },
      "AvailableOperandObjectType": {
        "properties": {
          "available_operand_type": {
            "enum": [
              "OBJECT"
            ],
            "type": "string"
          },
          "object_type": {
            "type": "string"
          }
        },
        "required": [
          "available_operand_type",
          "object_type"
        ],
        "type": "object"
      },
      "AvailableState": {
        "properties": {
          "available_operand_type": {
            "enum": [
              "STATE"
            ],
            "type": "string"
          },
          "child_type": {
            "nullable": true,
            "type": "string"
          },
          "display": {
            "readOnly": true,
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "mask": {
            "enum": [
              "CURRENCY",
              "DAY",
              "PERCENTAGE"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "state_type": {
            "enum": [
              "CONSTANT",
              "DYNAMIC",
              "STATIC"
            ],
            "type": "string"
          },
          "type": {
            "enum": [
              "ARRAY",
              "BOOL",
              "INT",
              "JSONB",
              "NUMERIC",
              "STR"
            ],
            "type": "string"
          }
        },
        "required": [
          "available_operand_type",
          "display",
          "key",
          "state_type",
          "type"
        ],
        "type": "object"
      },
      "AvailableStateObject": {
        "properties": {
          "available_operand_type": {
            "enum": [
              "STATE_OBJECT"
            ],
            "type": "string"
          },
          "display": {
            "readOnly": true,
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "mask": {
            "enum": [
              "CURRENCY",
              "DAY",
              "PERCENTAGE"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "object_type": {
            "readOnly": true,
            "type": "string"
          },
          "state_type": {
            "enum": [
              "CONSTANT",
              "DYNAMIC",
              "STATIC"
            ],
            "type": "string"
          }
        },
        "required": [
          "available_operand_type",
          "display",
          "key",
          "object_type",
          "state_type"
        ],
        "type": "object"
      },
      "AvailableStateObjectList": {
        "properties": {
          "available_operand_type": {
            "enum": [
              "STATE_OBJECT_LIST"
            ],
            "type": "string"
          },
          "display": {
            "readOnly": true,
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "mask": {
            "enum": [
              "CURRENCY",
              "DAY",
              "PERCENTAGE"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "object_list_type": {
            "readOnly": true,
            "type": "string"
          },
          "state_type": {
            "enum": [
              "CONSTANT",
              "DYNAMIC",
              "STATIC"
            ],
            "type": "string"
          }
        },
        "required": [
          "available_operand_type",
          "display",
          "key",
          "object_list_type",
          "state_type"
        ],
        "type": "object"
      },
      "BaseCardShippingAddressRequestBody": {
        "properties": {
          "address1": {
            "type": "string"
          },
          "address2": {
            "nullable": true,
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "postal_code": {
            "type": "string"
          },
          "state": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "address1",
          "city",
          "country",
          "postal_code"
        ],
        "type": "object"
      },
      "BaseProcurementRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseUnifiedSpendRequest"
          },
          {
            "properties": {
              "blank_canvas_execution_id": {
                "format": "uuid",
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "earliest_due_date": {
                "format": "date-time",
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "has_blocking_approval_requirements": {
                "nullable": true,
                "readOnly": true,
                "type": "boolean"
              },
              "is_expansion_request": {
                "readOnly": true,
                "type": "boolean"
              },
              "is_import_only_spend_program": {
                "readOnly": true,
                "type": "boolean"
              },
              "is_renewal_request": {
                "readOnly": true,
                "type": "boolean"
              },
              "is_sla_due_soon": {
                "readOnly": true,
                "type": "boolean"
              },
              "reduced_agreements": {
                "items": {
                  "$ref": "#/components/schemas/ReducedPayeeAgreementForUnifiedRequestPaginationSchema"
                },
                "readOnly": true,
                "type": "array"
              },
              "sla_due_date": {
                "format": "date-time",
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "sla_duration_in_seconds": {
                "nullable": true,
                "readOnly": true,
                "type": "integer"
              },
              "spend_end_date": {
                "format": "date",
                "nullable": true,
                "type": "string"
              },
              "spend_frequency": {
                "$ref": "#/components/schemas/SpendRequestFrequency",
                "nullable": true
              },
              "spend_start_date": {
                "format": "date",
                "nullable": true,
                "type": "string"
              },
              "tasks": {
                "items": {
                  "$ref": "#/components/schemas/SpendRequestTask"
                },
                "readOnly": true,
                "type": "array"
              }
            },
            "required": [
              "blank_canvas_execution_id",
              "earliest_due_date",
              "has_blocking_approval_requirements",
              "is_expansion_request",
              "is_import_only_spend_program",
              "is_renewal_request",
              "is_sla_due_soon",
              "reduced_agreements",
              "sla_due_date",
              "sla_duration_in_seconds",
              "spend_frequency",
              "tasks"
            ],
            "type": "object"
          }
        ]
      },
      "BaseProcurementRequestDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseUnifiedSpendRequestDetail"
          },
          {
            "properties": {
              "agent_executions": {
                "$ref": "#/components/schemas/AgentExecutionsInfo",
                "readOnly": true
              },
              "agreement_contract_type": {
                "description": "Contract type of the contract created on approval: the user's choice, else the suggestion, else RENEWABLE.",
                "enum": [
                  "ONE_TIME",
                  "PERPETUAL",
                  "RENEWABLE"
                ],
                "readOnly": true,
                "type": "string",
                "x-enum-descriptions": {
                  "ONE_TIME": "A fixed-term or fixed-scope contract that ends and is not renewed.",
                  "PERPETUAL": "A contract with no end date.",
                  "RENEWABLE": "A fixed-term contract that renews or is expected to be renewed."
                }
              },
              "agreements": {
                "items": {
                  "$ref": "#/components/schemas/PayeeAgreementForUnifiedRequestDetailDumpSchema"
                },
                "readOnly": true,
                "type": "array"
              },
              "ai_summary_data": {
                "$ref": "#/components/schemas/SpendRequestAISummary",
                "nullable": true
              },
              "approval_chain_data": {
                "$ref": "#/components/schemas/ApprovalChainData",
                "nullable": true,
                "readOnly": true
              },
              "approval_events": {
                "items": {
                  "$ref": "#/components/schemas/ApprovalEvent"
                },
                "readOnly": true,
                "type": "array"
              },
              "available_actions": {
                "$ref": "#/components/schemas/ProcurementSpendRequestAvailableActionsSchema",
                "deprecated": true,
                "readOnly": true
              },
              "available_actions_v2": {
                "$ref": "#/components/schemas/ProcurementSpendRequestAvailableActionsV2Schema",
                "readOnly": true
              },
              "blank_canvas_execution_id": {
                "format": "uuid",
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "change_request_diff": {
                "$ref": "#/components/schemas/ProcurementChangeRequestFieldsDiff",
                "nullable": true,
                "readOnly": true
              },
              "create_agreement_post_request_approval": {
                "type": "boolean"
              },
              "custom_form_files": {
                "items": {
                  "$ref": "#/components/schemas/ProcurementFormFile"
                },
                "readOnly": true,
                "type": "array"
              },
              "default_question_config_summary": {
                "$ref": "#/components/schemas/SpendIntentDefaultQuestionConfigSummary",
                "readOnly": true
              },
              "draft_revision": {
                "description": "Monotonic revision of user-editable request content, bumped on every content write; used to discard stale concurrent-edit reads.",
                "type": "integer"
              },
              "enable_agreement_renewal_reminders_post_approval": {
                "type": "boolean"
              },
              "forms": {
                "$ref": "#/components/schemas/SpendRequestForms",
                "readOnly": true
              },
              "in_progress_ai_summary_job_ids": {
                "items": {
                  "type": "string"
                },
                "readOnly": true,
                "type": "array"
              },
              "is_form_outdated": {
                "nullable": true,
                "readOnly": true,
                "type": "boolean"
              },
              "is_requesting_new_vendor": {
                "type": "boolean"
              },
              "is_user_on_approval_instance": {
                "readOnly": true,
                "type": "boolean"
              },
              "linkable_agreements": {
                "items": {
                  "$ref": "#/components/schemas/LinkablePayeeAgreementSchema"
                },
                "readOnly": true,
                "type": "array"
              },
              "purchase_order_documents": {
                "items": {
                  "$ref": "#/components/schemas/ProcurementSpendRequestDocumentDump"
                },
                "type": "array"
              },
              "renewals": {
                "deprecated": true,
                "description": "Deprecated. Always empty. Use agreements instead.",
                "items": {
                  "type": "object"
                },
                "readOnly": true,
                "type": "array"
              },
              "sanitized_approval_steps": {
                "items": {
                  "$ref": "#/components/schemas/SanitizedApprovalStep"
                },
                "nullable": true,
                "readOnly": true,
                "type": "array"
              },
              "sourcing_event": {
                "$ref": "#/components/schemas/SourcingEventForProcurementRequestDetail",
                "nullable": true
              },
              "spend_intent_config_snapshot": {
                "$ref": "#/components/schemas/SpendIntentConfigSnapshot",
                "nullable": true
              },
              "spend_request_documents": {
                "items": {
                  "$ref": "#/components/schemas/ProcurementSpendRequestDocumentDump"
                },
                "type": "array"
              },
              "suggested_agreement_contract_type": {
                "description": "Contract type suggested from the request documents, or null.",
                "enum": [
                  "ONE_TIME",
                  "PERPETUAL",
                  "RENEWABLE"
                ],
                "nullable": true,
                "readOnly": true,
                "type": "string",
                "x-enum-descriptions": {
                  "ONE_TIME": "A fixed-term or fixed-scope contract that ends and is not renewed.",
                  "PERPETUAL": "A contract with no end date.",
                  "RENEWABLE": "A fixed-term contract that renews or is expected to be renewed."
                }
              },
              "workflow_execution_status": {
                "$ref": "#/components/schemas/WorkflowExecutionPollStatus",
                "nullable": true,
                "readOnly": true
              },
              "workflow_form_files": {
                "items": {
                  "$ref": "#/components/schemas/ProcurementFormFile"
                },
                "readOnly": true,
                "type": "array"
              }
            },
            "required": [
              "agent_executions",
              "agreement_contract_type",
              "agreements",
              "ai_summary_data",
              "approval_chain_data",
              "approval_events",
              "available_actions",
              "available_actions_v2",
              "blank_canvas_execution_id",
              "change_request_diff",
              "create_agreement_post_request_approval",
              "custom_form_files",
              "default_question_config_summary",
              "draft_revision",
              "enable_agreement_renewal_reminders_post_approval",
              "forms",
              "in_progress_ai_summary_job_ids",
              "is_form_outdated",
              "is_user_on_approval_instance",
              "linkable_agreements",
              "renewals",
              "sanitized_approval_steps",
              "sourcing_event",
              "spend_intent_config_snapshot",
              "suggested_agreement_contract_type",
              "workflow_execution_status",
              "workflow_form_files"
            ],
            "type": "object"
          }
        ]
      },
      "BaseProcurementRequestWithAmounts": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseProcurementRequest"
          },
          {
            "properties": {
              "amount_details": {
                "$ref": "#/components/schemas/Money",
                "readOnly": true
              },
              "total_amount_details": {
                "$ref": "#/components/schemas/Money",
                "nullable": true,
                "readOnly": true
              }
            },
            "required": [
              "amount_details",
              "total_amount_details"
            ],
            "type": "object"
          }
        ]
      },
      "BaseReducedExistingSpendRequest": {
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_shareable": {
            "type": "boolean"
          },
          "lock_date": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "post_spend_approval_instance_policy": {
            "$ref": "#/components/schemas/ApprovalPolicyLightSchema",
            "nullable": true,
            "readOnly": true
          },
          "spend_eligibility_starts_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "spend_frequency": {
            "$ref": "#/components/schemas/SpendRequestFrequency",
            "nullable": true
          },
          "unified_request_id": {
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "unified_spend_request_type": {
            "enum": [
              "APPROVAL_ONLY",
              "FUND_UNARCHIVE",
              "PROCUREMENT_SPEND_ALLOCATION",
              "PURCHASE_ORDER",
              "SPEND_ALLOCATION",
              "TRAVEL"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "FUND_UNARCHIVE": "A request to restore an existing archived fund without issuing or changing funding."
            }
          }
        },
        "required": [
          "post_spend_approval_instance_policy",
          "unified_request_id",
          "unified_spend_request_type"
        ],
        "type": "object"
      },
      "BaseUnifiedRequest": {
        "properties": {
          "approval_instance_id": {
            "nullable": true,
            "type": "string"
          },
          "approved_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "created_by_user": {
            "$ref": "#/components/schemas/ReducedUserForBaseUnifiedRequest"
          },
          "deleted_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "display_request_number": {
            "description": "Human-facing display number, e.g. \"REQ-123\"; null until the request is numbered.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "entity": {
            "$ref": "#/components/schemas/BusinessEntityLight"
          },
          "id": {
            "format": "uuid",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "nullable": true,
            "type": "string"
          },
          "ramp_url": {
            "readOnly": true,
            "type": "string"
          },
          "reason": {
            "nullable": true,
            "type": "string"
          },
          "rejected_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "request_duration": {
            "nullable": true,
            "type": "integer"
          },
          "submitted_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "wbp_info": {
            "$ref": "#/components/schemas/WbpInfoResponseSchema",
            "nullable": true,
            "readOnly": true
          },
          "workflow_backed_policy_id": {
            "description": "ID of the originating workflow-backed policy.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "approval_instance_id",
          "approved_at",
          "created_at",
          "created_by_user",
          "deleted_at",
          "display_request_number",
          "entity",
          "id",
          "name",
          "ramp_url",
          "reason",
          "rejected_at",
          "request_duration",
          "submitted_at",
          "wbp_info",
          "workflow_backed_policy_id"
        ],
        "type": "object"
      },
      "BaseUnifiedRequestDetail": {
        "properties": {
          "ai_intake_thread_id": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "ai_request_copilot_thread_id": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "savings": {
            "items": {
              "$ref": "#/components/schemas/SpendRequestSavingResponse"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "required": [
          "ai_intake_thread_id",
          "ai_request_copilot_thread_id",
          "savings"
        ],
        "type": "object"
      },
      "BaseUnifiedSpendRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseUnifiedRequest"
          },
          {
            "properties": {
              "assigned_spend_intent": {
                "$ref": "#/components/schemas/ReducedSpendIntentForBaseUnifiedSpendRequest",
                "description": "Spend program assigned to a request that its workflow-backed policy is still approving, or null. Display it as the request's program.",
                "nullable": true,
                "readOnly": true
              },
              "coordinator": {
                "$ref": "#/components/schemas/ReducedUserForBaseUnifiedRequest",
                "nullable": true,
                "readOnly": true
              },
              "laminar_session_id": {
                "description": "Laminar chat session associated with this draft",
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "name": {
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "omni_chat_thread_id": {
                "description": "Omni chat thread associated with this draft",
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "owner": {
                "$ref": "#/components/schemas/ReducedUserForBaseUnifiedRequest",
                "readOnly": true
              },
              "payee": {
                "$ref": "#/components/schemas/ReducedPayee",
                "nullable": true
              },
              "request_status": {
                "enum": [
                  "APPROVED",
                  "DRAFT",
                  "REJECTED",
                  "SUBMITTED"
                ],
                "type": "string"
              },
              "secondary_display_name": {
                "nullable": true,
                "type": "string"
              },
              "spend_intent": {
                "$ref": "#/components/schemas/ReducedSpendIntentForBaseUnifiedSpendRequest",
                "nullable": true,
                "readOnly": true
              },
              "spend_request_id": {
                "format": "uuid",
                "type": "string"
              },
              "spend_request_vendor_type": {
                "enum": [
                  "EXISTING",
                  "NEW"
                ],
                "nullable": true,
                "type": "string"
              },
              "unified_request_type": {
                "default": "SPEND_REQUEST",
                "enum": [
                  "SPEND_REQUEST"
                ],
                "type": "string"
              },
              "user_defined_name": {
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "wbx_migration": {
                "$ref": "#/components/schemas/WbxMigrationInfo",
                "description": "Policy-to-program migration details, or null for requests that have not migrated.",
                "nullable": true,
                "readOnly": true
              }
            },
            "required": [
              "coordinator",
              "laminar_session_id",
              "name",
              "omni_chat_thread_id",
              "owner",
              "payee",
              "request_status",
              "secondary_display_name",
              "spend_intent",
              "spend_request_id",
              "spend_request_vendor_type",
              "unified_request_type",
              "user_defined_name",
              "wbx_migration"
            ],
            "type": "object"
          }
        ]
      },
      "BaseUnifiedSpendRequestDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseUnifiedRequestDetail"
          },
          {
            "properties": {
              "allowed_overage_percent": {
                "nullable": true,
                "readOnly": true,
                "type": "number"
              },
              "approver_comment": {
                "nullable": true,
                "type": "string"
              },
              "budget_path": {
                "$ref": "#/components/schemas/BudgetPathObjectWithAmountDetails",
                "nullable": true,
                "readOnly": true
              },
              "change_request_custom_form_collection_response_uuid": {
                "format": "uuid",
                "nullable": true,
                "type": "string"
              },
              "comment_thread_uuid": {
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "custom_form_collection_response_uuid": {
                "format": "uuid",
                "nullable": true,
                "type": "string"
              },
              "deleted_by_user": {
                "$ref": "#/components/schemas/ReducedUserForBaseUnifiedRequest",
                "nullable": true
              },
              "deleted_reason": {
                "nullable": true,
                "type": "string"
              },
              "display_request_number": {
                "description": "Human-readable request number, e.g. \"REQ-123\"; null until one is assigned.",
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "internal_memo": {
                "nullable": true,
                "type": "string"
              },
              "pending_change_request": {
                "$ref": "#/components/schemas/ReducedPendingChangeRequest",
                "nullable": true
              },
              "ramp_event_history_uuid": {
                "nullable": true,
                "readOnly": true,
                "type": "string"
              }
            },
            "required": [
              "allowed_overage_percent",
              "budget_path",
              "comment_thread_uuid",
              "display_request_number",
              "ramp_event_history_uuid"
            ],
            "type": "object"
          }
        ]
      },
      "BaseUnifiedSpendRequestWithAmount": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseUnifiedSpendRequest"
          },
          {
            "properties": {
              "amount_details": {
                "$ref": "#/components/schemas/Money",
                "readOnly": true
              },
              "spend_frequency": {
                "$ref": "#/components/schemas/SpendRequestFrequency",
                "nullable": true
              }
            },
            "required": [
              "amount_details",
              "spend_frequency"
            ],
            "type": "object"
          }
        ]
      },
      "BasicMoney": {
        "properties": {
          "amount": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "type": "object"
      },
      "Bill": {
        "example": {
          "accounting_date": "2024-05-12T00:00:00+00:00",
          "accounting_field_selections": [],
          "accounting_sync_date": "2024-05-12T00:00:00+00:00",
          "amount": {
            "amount": 96993,
            "currency_code": "USD"
          },
          "bill_owner": {
            "first_name": "John",
            "id": "96bb7007-eec5-430f-8d09-e033cbc000c2",
            "last_name": "Doe"
          },
          "created_at": "2024-05-12T01:37:27+00:00",
          "deep_link_url": null,
          "due_at": "2022-12-31T00:00:00+00:00",
          "enable_accounting_sync": true,
          "entity_id": "5bcc3734-f03a-4756-bc4b-afeb52d738ad",
          "fx_conversion_rate": "1.0",
          "id": "6e3816e3-0e53-42ae-b075-bdb0adff10c4",
          "inventory_line_items": [
            {
              "accounting_field_selections": [
                {
                  "category_info": {
                    "external_id": "Category",
                    "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                    "name": "Category",
                    "type": "GL_ACCOUNT"
                  },
                  "display_name": "Ramp Category - Renamed",
                  "external_id": "426",
                  "id": "07b4ce4d-2750-412e-aef4-6b7815f1411a",
                  "name": "Ramp Category",
                  "type": "Subsidiary"
                }
              ],
              "amount": {
                "amount": 25000,
                "currency_code": "USD"
              },
              "memo": "Staplers.",
              "quantity": 5,
              "unit_price": {
                "amount": 5000,
                "currency_code": "USD"
              }
            }
          ],
          "invoice_number": "432",
          "invoice_urls": [
            "https://receipts.ramp.com/some-url"
          ],
          "issued_at": "2022-12-31T00:00:00+00:00",
          "line_items": [
            {
              "accounting_field_selections": [],
              "amount": {
                "amount": 1998,
                "currency_code": "USD"
              },
              "memo": "Telephone Headset"
            },
            {
              "accounting_field_selections": [],
              "amount": {
                "amount": 94995,
                "currency_code": "USD"
              },
              "memo": "2-Drawer Lateral File Cabinet Steel White"
            }
          ],
          "memo": "Office Supplies",
          "paid_at": "2024-05-15T14:02:28.298Z",
          "payment": {
            "amount": {
              "amount": 96993,
              "currency_code": "USD"
            },
            "bank_debit_trace_id": {
              "descriptor": "Trace ID",
              "trace_id": "076921900257225"
            },
            "customer_friendly_payment_id": "A6PMDVX628",
            "effective_date": "2024-05-13T00:00:00+00:00",
            "payment_date": "2024-05-13T00:00:00+00:00",
            "payment_method": "ACH",
            "trace_id": {
              "descriptor": "ACH Trace ID",
              "trace_id": "076921900257224"
            }
          },
          "posting_date": "2024-05-12T00:00:00+00:00",
          "remote_id": null,
          "status": "OPEN",
          "status_summary": "PAYMENT_SCHEDULED",
          "sync_status": "NOT_SYNCED",
          "vendor": {
            "remote_code": "AMZON12",
            "remote_id": "Amazon",
            "remote_name": "Amazon",
            "type": "BUSINESS"
          },
          "vendor_contact_id": "ef825336-820e-4dd5-9d7f-0fc508e978c9",
          "vendor_memo": "Invoice #432 - July 2020"
        },
        "properties": {
          "accounting_date": {
            "description": "The date for the bill for accounting purposes. If not specified, falls back to the bill issue date.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the bill.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the bill, represented in the lowest denomination of the currency (e.g., cents for USD).",
            "readOnly": true
          },
          "applied_vendor_credits": {
            "description": "Vendor Credits that have been applied to this Bill",
            "items": {
              "$ref": "#/components/schemas/BillAppliedVendorCredit"
            },
            "readOnly": true,
            "type": "array"
          },
          "approval_status": {
            "description": "Approval status of the bill. Note that this is separate from the approval status for payment release.",
            "enum": [
              "APPROVED",
              "INITIALIZED",
              "PENDING",
              "REJECTED",
              "TERMINATED"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "APPROVED": "The approval chain has been approved.",
              "INITIALIZED": "The approval chain has been initialized.",
              "PENDING": "The approval chain is awaiting approval.",
              "REJECTED": "The approval chain has been rejected.",
              "TERMINATED": "The approval chain has been terminated."
            }
          },
          "archived_at": {
            "description": "The datetime the bill was archived.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "attachments": {
            "description": "Business-visible bill attachments with their types and download URLs.",
            "items": {
              "$ref": "#/components/schemas/ApiBillAttachmentResource"
            },
            "readOnly": true,
            "type": "array"
          },
          "bill_owner": {
            "$ref": "#/components/schemas/ApiBillOwner",
            "description": "Information about the bill owner."
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "deep_link_url": {
            "description": "Link to bill in ERP, if exists.",
            "type": "string"
          },
          "draft_bill_created_at": {
            "description": "The date the draft bill was created if this bill was created from a draft bill, otherwise None.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "draft_bill_id": {
            "description": "Unique identifier of the draft bill this bill was created from, if one exists.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "draft_bills",
              "type": "many-to-one"
            }
          },
          "due_at": {
            "format": "date-time",
            "type": "string"
          },
          "enable_accounting_sync": {
            "description": "Flag specifying whether the bill should sync to the ERP",
            "type": "boolean"
          },
          "entity_id": {
            "description": "Associated business entity.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "fx_conversion_rate": {
            "description": "FX conversion rate from bill invoice currency to payer currency.",
            "format": "decimal",
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "inventory_line_items": {
            "description": "List of inventory line items related to the bill.",
            "items": {
              "$ref": "#/components/schemas/ApiBillInventoryLineItem"
            },
            "type": "array"
          },
          "invoice_number": {
            "description": "The invoice number on the bill.",
            "type": "string"
          },
          "invoice_urls": {
            "description": "Pre-signed URLs for all business-visible bill attachments, including supporting files. Use attachments and filter by attachment_type INVOICE to identify the invoice document.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "is_payment_sync_ready": {
            "description": "Whether the bill is ready for payment accounting export. Can be true while status is OPEN. For bills with multiple payments, one eligible ready payment is sufficient; this field does not identify which payments are ready. Excludes manual payments, fully synced bills, and bills paid entirely with vendor credits.",
            "readOnly": true,
            "type": "boolean"
          },
          "is_withholding_release": {
            "description": "Whether this bill is a retainage withholding release bill, if applicable.",
            "nullable": true,
            "readOnly": true,
            "type": "boolean"
          },
          "issued_at": {
            "description": "The date the bill was issued on invoice.",
            "format": "date-time",
            "type": "string"
          },
          "item_receipt_ids": {
            "description": "List of unique identifiers for item receipts associated with this bill through matched purchase orders.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "item_receipts",
                "type": "many-to-many"
              }
            },
            "readOnly": true,
            "type": "array"
          },
          "line_items": {
            "description": "List of line items related to the bill.",
            "items": {
              "$ref": "#/components/schemas/ApiBillLineItem"
            },
            "type": "array"
          },
          "memo": {
            "description": "Memo of the bill.",
            "type": "string"
          },
          "paid_at": {
            "description": "The datetime the bill's payment status is set to PAID. None if the bill's payment status is OPEN",
            "format": "date-time",
            "type": "string"
          },
          "payment": {
            "$ref": "#/components/schemas/ApiBillPayment",
            "description": "Payment information for the bill. For bills with multiple payments, this is the first non-vendor-credit payment.",
            "nullable": true,
            "readOnly": true
          },
          "posting_date": {
            "description": "The date the bill was posted to the ERP. Alternatively known as accounting date, accounting sync date.",
            "format": "date-time",
            "type": "string"
          },
          "purchase_order_id": {
            "description": "Unique identifier of matched purchase order, if one exists.",
            "format": "uuid",
            "readOnly": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "purchase_orders",
              "type": "many-to-one"
            }
          },
          "related_bills": {
            "description": "Bills associated with this bill, labelled from this bill's side (e.g. the insurance bill for a rental). Only returned when bill associations are enabled for the business.",
            "items": {
              "$ref": "#/components/schemas/ApiRelatedBill"
            },
            "readOnly": true,
            "type": "array"
          },
          "remote_id": {
            "description": "The external ID that identifies the bill on the client's side.",
            "type": "string"
          },
          "status": {
            "enum": [
              "OPEN",
              "PAID"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "OPEN": "The bill has not been fully paid.",
              "PAID": "The bill has been paid in full."
            }
          },
          "status_summary": {
            "description": "Status summary of the bill.",
            "enum": [
              "APPROVAL_PENDING",
              "APPROVAL_REJECTED",
              "ARCHIVED",
              "AWAITING_PAYMENT",
              "AWAITING_RELEASE",
              "BLOCKED",
              "HELD_BY_PROVIDER",
              "ON_HOLD",
              "PAYMENT_COMPLETED",
              "PAYMENT_DETAILS_MISSING",
              "PAYMENT_ERROR",
              "PAYMENT_NOT_INSTRUCTED",
              "PAYMENT_PROCESSING",
              "PAYMENT_READY",
              "PAYMENT_SCHEDULED",
              "PENDING_VENDOR_APPROVAL",
              "WAITING_FOR_TRANSACTION_MATCH",
              "WAITING_FOR_TRANSFER_MATCH",
              "WAITING_FOR_VENDOR"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "APPROVAL_PENDING": "The bill is waiting for one or more approvals.",
              "APPROVAL_REJECTED": "The bill was rejected in the approval flow.",
              "ARCHIVED": "The bill has been archived.",
              "AWAITING_PAYMENT": "The bill is waiting for the business to send push-payment funding.",
              "AWAITING_RELEASE": "The bill is waiting for payment release.",
              "BLOCKED": "The bill is blocked from payment initiation or approval.",
              "HELD_BY_PROVIDER": "The bill payment is held by the payment provider.",
              "ON_HOLD": "The bill has been placed on hold.",
              "PAYMENT_COMPLETED": "The bill has been paid.",
              "PAYMENT_DETAILS_MISSING": "The bill is missing required payment details.",
              "PAYMENT_ERROR": "The bill payment failed.",
              "PAYMENT_NOT_INSTRUCTED": "The bill uses Ramp payments but has not been scheduled yet.",
              "PAYMENT_PROCESSING": "The bill payment has been initiated and is processing.",
              "PAYMENT_READY": "The bill is ready for payment.",
              "PAYMENT_SCHEDULED": "The bill payment is scheduled.",
              "PENDING_VENDOR_APPROVAL": "The bill is waiting for a vendor edit to be approved.",
              "WAITING_FOR_TRANSACTION_MATCH": "The bill is paid by card and is waiting for a matching card transaction.",
              "WAITING_FOR_TRANSFER_MATCH": "The bill is paid by direct debit and is waiting for a matching wallet transfer.",
              "WAITING_FOR_VENDOR": "The bill is waiting on required vendor information."
            }
          },
          "sync_status": {
            "description": "Sync status of the bill.",
            "enum": [
              "BILL_AND_PAYMENT_SYNCED",
              "BILL_SYNCED",
              "NOT_SYNCED"
            ],
            "readOnly": true,
            "type": "string"
          },
          "vendor": {
            "$ref": "#/components/schemas/ApiBillVendor",
            "description": "Vendor information of the bill."
          },
          "vendor_contact_id": {
            "description": "Unique identifier of associated vendor contact.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendor_contacts",
              "type": "many-to-one"
            }
          },
          "vendor_memo": {
            "description": "Memo to the vendor.",
            "type": "string"
          }
        },
        "required": [
          "accounting_date",
          "accounting_field_selections",
          "amount",
          "applied_vendor_credits",
          "approval_status",
          "archived_at",
          "attachments",
          "bill_owner",
          "created_at",
          "draft_bill_created_at",
          "draft_bill_id",
          "due_at",
          "entity_id",
          "fx_conversion_rate",
          "id",
          "inventory_line_items",
          "invoice_urls",
          "is_payment_sync_ready",
          "issued_at",
          "item_receipt_ids",
          "line_items",
          "payment",
          "status",
          "status_summary",
          "sync_status",
          "vendor",
          "vendor_contact_id"
        ],
        "type": "object",
        "x-resource-name": "bills"
      },
      "BillAppliedVendorCredit": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the Vendor Credit applied to this specific bill. This is not necessarily the entire amount of the Vendor Credit itself. Currently only USD is supported for Vendor Credits.",
            "readOnly": true
          },
          "id": {
            "description": "Unique identifier for the vendor credit",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "id"
        ],
        "type": "object"
      },
      "BillPayAttachmentTypeRequestBody": {
        "enum": [
          "EMAIL",
          "FILE",
          "INVOICE",
          "VENDOR_CREDIT"
        ],
        "title": "BillPayAttachmentType",
        "type": "string",
        "x-enum-descriptions": {
          "EMAIL": "An email associated with the bill.",
          "FILE": "A supporting file attached to the bill.",
          "INVOICE": "The invoice document for the bill.",
          "VENDOR_CREDIT": "A vendor credit document."
        }
      },
      "BlankCanvasApprovalMetadataRequestBody": {
        "example": {
          "recipients": [
            {
              "email": "john.doe@example.com",
              "name": "John Doe"
            }
          ],
          "status": "pending",
          "url": "https://www.google.com"
        },
        "properties": {
          "recipients": {
            "description": "Recipients of the approval request",
            "items": {
              "$ref": "#/components/schemas/BlankCanvasApprovalMetadataUserRequestBody"
            },
            "nullable": true,
            "type": "array"
          },
          "status": {
            "default": null,
            "description": "Display name of the status of the approval request, usually in sentence case",
            "nullable": true,
            "type": "string"
          },
          "url": {
            "default": null,
            "description": "URL of the approval request",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "BlankCanvasApprovalMetadataResource": {
        "example": {
          "approval_trigger_instance_id": "95c7d5be-2754-4ae3-a675-124bf0639886",
          "recipients": [
            {
              "email": "john.doe@example.com",
              "name": "John Doe"
            }
          ],
          "status": "pending",
          "url": "https://www.google.com"
        },
        "properties": {
          "approval_trigger_instance_id": {
            "description": "ID of the approval trigger instance",
            "format": "uuid",
            "type": "string"
          },
          "recipients": {
            "description": "Recipients of the approval request",
            "items": {
              "$ref": "#/components/schemas/BlankCanvasApprovalMetadataUser"
            },
            "nullable": true,
            "type": "array"
          },
          "status": {
            "default": null,
            "description": "Display name of the status of the approval request, usually in sentence case",
            "nullable": true,
            "type": "string"
          },
          "url": {
            "default": null,
            "description": "URL of the approval request",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "approval_trigger_instance_id"
        ],
        "type": "object"
      },
      "BlankCanvasApprovalMetadataUser": {
        "properties": {
          "email": {
            "description": "Email of the recipient",
            "type": "string"
          },
          "name": {
            "description": "Name of the recipient",
            "type": "string"
          }
        },
        "required": [
          "email",
          "name"
        ],
        "type": "object"
      },
      "BlankCanvasApprovalMetadataUserRequestBody": {
        "properties": {
          "email": {
            "description": "Email of the recipient",
            "type": "string"
          },
          "name": {
            "description": "Name of the recipient",
            "type": "string"
          }
        },
        "required": [
          "email",
          "name"
        ],
        "type": "object"
      },
      "BlankCanvasApprovalRequestBody": {
        "example": {
          "action": "approve"
        },
        "properties": {
          "action": {
            "description": "Action to perform on the blank canvas workflow step: approve or reject",
            "enum": [
              "approve",
              "reject"
            ],
            "type": "string"
          }
        },
        "required": [
          "action"
        ],
        "type": "object"
      },
      "BlankCanvasApprovalResponse": {
        "example": {
          "message": "Blank canvas workflow step approved successfully"
        },
        "properties": {
          "message": {
            "description": "Descriptive message about the operation result",
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object"
      },
      "BlankCanvasDocumentRequestBody": {
        "example": {
          "document": "[raw document data]",
          "unified_request_id": "95c7d5be-2754-4ae3-a675-124bf0639886",
          "vendor_document_category": "VENDOR_CONTRACT"
        },
        "properties": {
          "document": {
            "description": "The document to upload for the blank canvas workflow step.",
            "format": "binary",
            "type": "string"
          },
          "unified_request_id": {
            "description": "Unique identifier of the unified request to upload the document to. Must be associated with a spend request.",
            "format": "uuid",
            "type": "string"
          },
          "vendor_document_category": {
            "description": "Category of document to upload",
            "enum": [
              "ADDENDUM_OR_RIDER",
              "AMENDMENT",
              "BANK_LETTER",
              "CAIQ_LITE",
              "CERTIFICATE_OF_INSURANCE",
              "CONTRACT_OTHER",
              "DATA_PROTECTION_AGREEMENT",
              "ECOVADIS",
              "ENGAGEMENT_LETTER",
              "FAQ",
              "FORM_1099",
              "GDPR",
              "HIPAA",
              "INVOICE",
              "ISO_27001",
              "ISO_9001",
              "MSA",
              "NDA",
              "NMSDC_CERTIFICATION",
              "ORDER_FORM",
              "OTHER",
              "PAYMENT_INSTRUCTIONS",
              "PCI_DSS",
              "PEN_TEST_REPORT",
              "PRIVACY_POLICY",
              "PURCHASE_ORDER",
              "QUESTIONNAIRE",
              "QUOTE",
              "SECURITY_DOCUMENT",
              "SECURITY_EXHIBIT",
              "SIG",
              "SLA",
              "SOC_1_TYPE_1",
              "SOC_1_TYPE_2",
              "SOC_2",
              "SOW",
              "TAX_DOCUMENT",
              "TAX_DOCUMENT_INTL_COR",
              "TAX_DOCUMENT_INTL_GOV_FORM",
              "TAX_DOCUMENT_INTL_OTHER",
              "TAX_DOCUMENT_INTL_STATUTORY_FORM",
              "TOS",
              "VENDOR_CONTRACT",
              "VENDOR_CREDIT",
              "VOIDED_CHECK",
              "W8",
              "W9"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "BANK_LETTER": "A bank letter used to verify bank account details.",
              "PURCHASE_ORDER": "A buyer-issued purchase order authorizing goods or services.",
              "QUESTIONNAIRE": "A vendor questionnaire document.",
              "TAX_DOCUMENT_INTL_COR": "A certificate establishing a vendor's tax residence.",
              "TAX_DOCUMENT_INTL_GOV_FORM": "A tax form issued by a government authority.",
              "TAX_DOCUMENT_INTL_OTHER": "An international tax document not covered by a more specific category.",
              "TAX_DOCUMENT_INTL_STATUTORY_FORM": "A tax form required by local law."
            }
          }
        },
        "required": [
          "document",
          "unified_request_id",
          "vendor_document_category"
        ],
        "type": "object"
      },
      "BlockGroup": {
        "properties": {
          "available_operands": {
            "items": {
              "$ref": "#/components/schemas/AvailableOperand"
            },
            "readOnly": true,
            "type": "array"
          },
          "has_been_visited": {
            "readOnly": true,
            "type": "boolean"
          },
          "identifier": {
            "nullable": true,
            "type": "string"
          },
          "metadata": {},
          "uuid": {
            "format": "uuid",
            "type": "string"
          },
          "vertex_type": {
            "enum": [
              "BLOCK_GROUP"
            ],
            "type": "string"
          }
        },
        "required": [
          "uuid",
          "vertex_type"
        ],
        "type": "object"
      },
      "BoolValue": {
        "properties": {
          "child_type": {
            "nullable": true,
            "type": "string"
          },
          "type": {
            "enum": [
              "BOOL"
            ],
            "type": "string"
          },
          "value": {
            "nullable": true,
            "type": "boolean"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "BooleanCellContentsForDisplay": {
        "properties": {
          "display_name": {
            "type": "string"
          },
          "type": {
            "enum": [
              "boolean"
            ],
            "type": "string"
          },
          "value": {
            "type": "boolean"
          }
        },
        "required": [
          "display_name",
          "type",
          "value"
        ],
        "type": "object"
      },
      "BooleanValueSchema": {
        "properties": {
          "value": {
            "title": "Value",
            "type": "boolean"
          }
        },
        "required": [
          "value"
        ],
        "title": "BooleanValueSchema",
        "type": "object"
      },
      "BudgetAmountCellResponseSchemaBase": {
        "properties": {
          "amount": {
            "title": "Amount",
            "type": "number"
          },
          "budget_amount": {
            "nullable": true,
            "title": "Budget Amount",
            "type": "number"
          },
          "committed_amount": {
            "title": "Committed Amount",
            "type": "number"
          },
          "issued_amount": {
            "title": "Issued Amount",
            "type": "number"
          },
          "variance": {
            "nullable": true,
            "title": "Variance",
            "type": "number"
          }
        },
        "required": [
          "amount",
          "budget_amount",
          "committed_amount",
          "issued_amount",
          "variance"
        ],
        "title": "BudgetAmountCellResponseSchemaBase",
        "type": "object"
      },
      "BudgetEntityCellWithTrackingCategoryResponseSchema": {
        "properties": {
          "budget_entity_cell_id": {
            "title": "Budget Entity Cell Id",
            "type": "string"
          },
          "column_id": {
            "title": "Column Id",
            "type": "string"
          },
          "column_position": {
            "title": "Column Position",
            "type": "integer"
          },
          "entity_id_for_filter": {
            "oneOf": [
              {
                "type": "integer"
              },
              {
                "type": "string"
              }
            ],
            "title": "Entity Id For Filter"
          },
          "entity_name": {
            "title": "Entity Name",
            "type": "string"
          },
          "tracking_category_uuid": {
            "default": null,
            "nullable": true,
            "title": "Tracking Category Uuid",
            "type": "string"
          }
        },
        "required": [
          "budget_entity_cell_id",
          "column_id",
          "column_position",
          "entity_id_for_filter",
          "entity_name"
        ],
        "title": "BudgetEntityCellWithTrackingCategoryResponseSchema",
        "type": "object"
      },
      "BudgetPathObjectWithAmountDetails": {
        "properties": {
          "amount_details": {
            "$ref": "#/components/schemas/BudgetAmountCellResponseSchemaBase"
          },
          "path_entities": {
            "items": {
              "$ref": "#/components/schemas/BudgetEntityCellWithTrackingCategoryResponseSchema"
            },
            "title": "Path Entities",
            "type": "array"
          },
          "path_id": {
            "title": "Path Id",
            "type": "string"
          }
        },
        "required": [
          "amount_details",
          "path_entities",
          "path_id"
        ],
        "title": "BudgetPathObjectWithAmountDetails",
        "type": "object"
      },
      "BulkCreateFilterRulesRequestParamsRequestBody": {
        "example": {
          "accounting_connection_id": "93509d56-3169-4169-a4b7-64c71bca5030",
          "rules": [
            {
              "required_selections": [
                {
                  "trigger_field_option_remote_id": "entity_option_us",
                  "trigger_field_remote_id": "entity_001"
                },
                {
                  "trigger_field_option_remote_id": "project_option_y",
                  "trigger_field_remote_id": "project_001"
                }
              ],
              "target_field_option_remote_id": "task_option_b",
              "target_field_remote_id": "task_001"
            },
            {
              "required_selections": [
                {
                  "trigger_field_option_remote_id": "project_option_x",
                  "trigger_field_remote_id": "project_001"
                }
              ],
              "target_field_option_remote_id": "task_option_a",
              "target_field_remote_id": "task_001"
            }
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "If these filter rules belong to an inactive accounting connection, you must specify that accounting connection's ID.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "rules": {
            "description": "A list of field option filter rules to create.",
            "items": {
              "$ref": "#/components/schemas/FieldOptionFilterRuleIdentityParamsRequestBody"
            },
            "maxItems": 1000,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "rules"
        ],
        "type": "object"
      },
      "BulkCreateFilterRulesResponse": {
        "example": {
          "created_count": 5,
          "duplicate_count": 2
        },
        "properties": {
          "created_count": {
            "description": "The number of filter rules that were newly created.",
            "type": "integer"
          },
          "duplicate_count": {
            "description": "The number of filter rules that already existed (no change made).",
            "type": "integer"
          }
        },
        "required": [
          "created_count",
          "duplicate_count"
        ],
        "type": "object"
      },
      "BulkDeleteFilterRulesRequestParamsRequestBody": {
        "example": {
          "accounting_connection_id": "93509d56-3169-4169-a4b7-64c71bca5030",
          "rules": [
            {
              "required_selections": [
                {
                  "trigger_field_option_remote_id": "project_option_x",
                  "trigger_field_remote_id": "project_001"
                }
              ],
              "target_field_option_remote_id": "task_option_a",
              "target_field_remote_id": "task_001"
            }
          ]
        },
        "properties": {
          "accounting_connection_id": {
            "description": "If these filter rules belong to an inactive accounting connection, you must specify that accounting connection's ID.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "rules": {
            "description": "A list of field option filter rules to delete, identified by their target and required selections.",
            "items": {
              "$ref": "#/components/schemas/FieldOptionFilterRuleIdentityParamsRequestBody"
            },
            "maxItems": 1000,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "rules"
        ],
        "type": "object"
      },
      "BulkDeleteFilterRulesResponse": {
        "example": {
          "deleted_count": 3,
          "not_found_count": 1
        },
        "properties": {
          "deleted_count": {
            "description": "The number of filter rules that were deleted.",
            "type": "integer"
          },
          "not_found_count": {
            "description": "The number of filter rules that were not found (already deleted or never existed).",
            "type": "integer"
          }
        },
        "required": [
          "deleted_count",
          "not_found_count"
        ],
        "type": "object"
      },
      "Business": {
        "example": {
          "active": true,
          "billing_address": {
            "address1": "123 Main St",
            "city": "New York City",
            "country": "US",
            "postal_code": "10003",
            "state": "NY"
          },
          "business_name_legal": "Sushi Luncheonette",
          "business_name_on_card": "Sushi Luncheonette",
          "created_time": "2022-08-20T16:54:29+00:00",
          "enforce_sso": false,
          "id": "9abffcf0-dd7d-42f0-b806-ce0502ab6496",
          "initial_approved_limit": 2000000,
          "initial_approved_limit_amount": {
            "currency": "USD",
            "value": 200000000
          },
          "is_integrated_with_slack": false,
          "limit_locked": false,
          "phone": "8014441234",
          "website": "www.ramp.com"
        },
        "properties": {
          "active": {
            "description": "Whether the business account is active.",
            "type": "boolean"
          },
          "billing_address": {
            "description": "Billing address of the business.",
            "type": "object"
          },
          "business_name_legal": {
            "description": "Legal name of the business entity.",
            "type": "string"
          },
          "business_name_on_card": {
            "description": "Business name that appears on issued cards.",
            "type": "string"
          },
          "created_time": {
            "description": "When the business account was created.",
            "format": "date-time",
            "type": "string"
          },
          "enforce_sso": {
            "description": "Whether single sign-on is enforced for the business.",
            "type": "boolean"
          },
          "id": {
            "description": "Unique identifier for the business.",
            "format": "uuid",
            "type": "string"
          },
          "initial_approved_limit": {
            "description": "Initial credit limit approved for the business, in whole US dollars (USD).",
            "type": "integer"
          },
          "initial_approved_limit_amount": {
            "$ref": "#/components/schemas/ApiAmount",
            "description": "Initial credit limit approved for the business, in minor units (cents) with an explicit USD currency code. `null` if no initial limit has been approved.",
            "nullable": true,
            "readOnly": true
          },
          "is_integrated_with_slack": {
            "description": "Whether the business has integrated with Slack.",
            "type": "boolean"
          },
          "is_reimbursements_enabled": {
            "description": "Whether reimbursements feature is enabled for the business.",
            "type": "boolean"
          },
          "limit_locked": {
            "description": "Whether the credit limit is locked and cannot be modified.",
            "type": "boolean"
          },
          "phone": {
            "description": "Primary contact phone number for the business.",
            "type": "string"
          },
          "website": {
            "description": "Company website URL.",
            "type": "string"
          }
        },
        "required": [
          "initial_approved_limit_amount",
          "is_reimbursements_enabled"
        ],
        "type": "object",
        "x-resource-name": "businesses"
      },
      "BusinessBalance": {
        "example": {
          "available_card_limit": 2000000,
          "available_card_limit_amount": {
            "amount": 200000000,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "available_flex_limit": 0,
          "available_flex_limit_amount": {
            "amount": 0,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "balance_including_pending": 6271.22,
          "balance_including_pending_amount": {
            "amount": 627122,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "card_balance_excluding_pending": 4941.29,
          "card_balance_excluding_pending_amount": {
            "amount": 494129,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "card_balance_including_pending": 6271.22,
          "card_balance_including_pending_amount": {
            "amount": 627122,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "card_limit": 2000000,
          "card_limit_amount": {
            "amount": 200000000,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "flex_balance": 0,
          "flex_balance_amount": {
            "amount": 0,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "flex_limit": 0,
          "flex_limit_amount": {
            "amount": 0,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "float_balance_excluding_pending": 0,
          "float_balance_excluding_pending_amount": {
            "amount": 0,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "global_limit": 2000000,
          "global_limit_amount": {
            "amount": 200000000,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "max_balance": 2000000,
          "max_balance_amount": {
            "amount": 200000000,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "next_billing_date": "09/17/2022",
          "prev_billing_date": "08/21/2022",
          "statement_balance": 4941.29,
          "statement_balance_amount": {
            "amount": 494129,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          }
        },
        "properties": {
          "available_card_limit": {
            "description": "Remaining available card spending limit.",
            "type": "number"
          },
          "available_card_limit_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Remaining available card spending limit in minor units with an explicit USD currency code.",
            "readOnly": true
          },
          "available_flex_limit": {
            "description": "Remaining available flex spending limit.",
            "type": "number"
          },
          "available_flex_limit_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Remaining available flex spending limit in minor units with an explicit USD currency code.",
            "readOnly": true
          },
          "balance_including_pending": {
            "description": "Total balance including pending transactions.",
            "type": "number"
          },
          "balance_including_pending_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total balance including pending transactions in minor units with an explicit USD currency code.",
            "readOnly": true
          },
          "card_balance_excluding_pending_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Current card balance excluding pending transactions in minor units with an explicit USD currency code.",
            "readOnly": true
          },
          "card_balance_including_pending": {
            "description": "Current card balance including pending transactions.",
            "type": "number"
          },
          "card_balance_including_pending_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Current card balance including pending transactions in minor units with an explicit USD currency code.",
            "readOnly": true
          },
          "card_limit": {
            "description": "Maximum allowed card spending limit.",
            "type": "number"
          },
          "card_limit_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Maximum allowed card spending limit in minor units with an explicit USD currency code.",
            "readOnly": true
          },
          "flex_balance": {
            "description": "Current balance of flex spending.",
            "type": "number"
          },
          "flex_balance_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Current balance of flex spending in minor units with an explicit USD currency code.",
            "readOnly": true
          },
          "flex_limit": {
            "description": "Maximum allowed flex spending limit.",
            "type": "number"
          },
          "flex_limit_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Maximum allowed flex spending limit in minor units with an explicit USD currency code.",
            "readOnly": true
          },
          "float_balance_excluding_pending": {
            "description": "Float account balance excluding pending transactions.",
            "type": "number"
          },
          "float_balance_excluding_pending_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Float account balance excluding pending transactions in minor units with an explicit USD currency code.",
            "readOnly": true
          },
          "global_limit": {
            "description": "Overall spending limit for the business.",
            "type": "number"
          },
          "global_limit_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Overall spending limit for the business in minor units with an explicit USD currency code.",
            "readOnly": true
          },
          "max_balance": {
            "description": "Maximum balance allowed for the business.",
            "type": "number"
          },
          "max_balance_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Maximum balance allowed for the business in minor units with an explicit USD currency code.",
            "readOnly": true
          },
          "next_billing_date": {
            "description": "Date of the next billing cycle.",
            "type": "string"
          },
          "prev_billing_date": {
            "description": "Date of the previous billing cycle.",
            "type": "string"
          },
          "statement_balance": {
            "description": "Balance from the most recent statement.",
            "type": "number"
          },
          "statement_balance_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Balance from the most recent statement in minor units with an explicit USD currency code.",
            "readOnly": true
          }
        },
        "required": [
          "available_card_limit_amount",
          "available_flex_limit_amount",
          "balance_including_pending_amount",
          "card_balance_excluding_pending_amount",
          "card_balance_including_pending_amount",
          "card_limit_amount",
          "flex_balance_amount",
          "flex_limit_amount",
          "float_balance_excluding_pending_amount",
          "global_limit_amount",
          "max_balance_amount",
          "statement_balance_amount"
        ],
        "type": "object"
      },
      "BusinessEntityLight": {
        "properties": {
          "entity_name": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "entity_name",
          "id"
        ],
        "type": "object"
      },
      "CLMSigningProvider": {
        "enum": [
          "docusign",
          "dropbox_sign",
          "ironclad"
        ],
        "title": "CLMSigningProvider",
        "type": "string"
      },
      "CLMSigningProviderInfo": {
        "properties": {
          "is_workflow_completed": {
            "title": "Is Workflow Completed",
            "type": "boolean"
          },
          "provider": {
            "$ref": "#/components/schemas/CLMSigningProvider"
          }
        },
        "required": [
          "is_workflow_completed",
          "provider"
        ],
        "title": "CLMSigningProviderInfo",
        "type": "object"
      },
      "CancelledActionUpdateRequestBody": {
        "properties": {
          "mark_vendor_inactive": {
            "default": false,
            "title": "Mark Vendor Inactive",
            "type": "boolean"
          },
          "reason": {
            "title": "Reason",
            "type": "string"
          },
          "type": {
            "description": "Marks the agreement as not renewing.",
            "enum": [
              "CANCELLED"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "title": "CancelledActionUpdate",
        "type": "object"
      },
      "Card": {
        "example": {
          "card_program_id": null,
          "cardholder_id": "3a5b1f62-988f-4190-bf31-b7ae87c5df42",
          "cardholder_name": "Julie Phillip",
          "created_at": "2022-05-04T00:00:00+00:00",
          "display_name": "T&E",
          "entity_id": "c6c61be9-f278-47bc-a814-f98a7fc2dfdc",
          "expiration": "0227",
          "fulfillment": {
            "fulfillment_status": "ISSUED",
            "shipping": {
              "recipient_address": {
                "address1": "123 Main St",
                "city": "New York City",
                "country": "US",
                "first_name": "Julie",
                "last_name": "Phillip",
                "postal_code": "10003",
                "state": "NY"
              }
            },
            "shipping_date": null,
            "shipping_eta": null,
            "shipping_tracking_url": null
          },
          "has_program_overridden": false,
          "id": "d8135cfe-0396-4b2d-b2cf-ad809fb04731",
          "is_physical": false,
          "last_four": "3751",
          "spending_restrictions": {
            "amount": 5000,
            "auto_lock_date": null,
            "blocked_categories": [],
            "categories": [],
            "interval": "MONTHLY",
            "suspended": false,
            "total_amount": {
              "currency": "USD",
              "value": 500000
            },
            "total_transaction_amount_limit": null,
            "transaction_amount_limit": null
          },
          "state": "ACTIVE"
        },
        "properties": {
          "card_program_id": {
            "deprecated": true,
            "description": "Unique identifier of the card program.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "cardholder_id": {
            "description": "Unique identifier of the card holder.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "cardholder_name": {
            "description": "Card holder's full name.",
            "type": "string"
          },
          "created_at": {
            "description": "Date time at which the card is created. It conforms to ISO8601 format",
            "format": "date-time",
            "type": "string"
          },
          "display_name": {
            "description": "Cosmetic display name of the card.",
            "readOnly": true,
            "type": "string"
          },
          "entity_id": {
            "description": "Unique identifier of the associated business entity.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "expiration": {
            "description": "Expiration date in the format of MMYY.",
            "readOnly": true,
            "type": "string"
          },
          "fulfillment": {
            "$ref": "#/components/schemas/ApiCardFulfillment",
            "description": "Fulfillment details of a Ramp card. For physical cards only.",
            "nullable": true,
            "readOnly": true
          },
          "has_program_overridden": {
            "description": "Whether the card has overridden the default settings from its card program.",
            "readOnly": true,
            "type": "boolean"
          },
          "id": {
            "description": "Unique identifier of the card.",
            "format": "uuid",
            "type": "string"
          },
          "is_physical": {
            "type": "boolean"
          },
          "last_four": {
            "description": "Last four digits of the card number.",
            "readOnly": true,
            "type": "string"
          },
          "spending_restrictions": {
            "$ref": "#/components/schemas/ApiCardSpendingRestrictionsDump",
            "description": "Specifies the spend restrictions on a Ramp card.",
            "nullable": true,
            "readOnly": true
          },
          "state": {
            "description": "State of the card",
            "enum": [
              "ACTIVE",
              "CHIP_LOCKED",
              "SUSPENDED",
              "TERMINATED",
              "UNACTIVATED"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ACTIVE": "The card is active and can be used for transactions.",
              "CHIP_LOCKED": "The card chip is locked after the PIN retry limit was exceeded.",
              "SUSPENDED": "The card is temporarily suspended and cannot be used for transactions.",
              "TERMINATED": "The card has been permanently terminated and cannot be used for transactions.",
              "UNACTIVATED": "The card has been issued but has not yet been activated."
            }
          }
        },
        "required": [
          "card_program_id",
          "display_name",
          "expiration",
          "fulfillment",
          "has_program_overridden",
          "last_four",
          "spending_restrictions"
        ],
        "type": "object",
        "x-resource-name": "cards"
      },
      "CardDetails": {
        "example": {
          "cvv": "449",
          "expiration": "1226",
          "id": "d8135cfe-0396-4b2d-b2cf-ad809fb04731",
          "pan": "4403900918007455"
        },
        "properties": {
          "cvv": {
            "description": "Card verfication value.",
            "type": "string"
          },
          "expiration": {
            "description": "Card expiration date in MMYY format.",
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the card.",
            "format": "uuid",
            "type": "string"
          },
          "pan": {
            "description": "Primary account number(PAN) of the card.",
            "type": "string"
          }
        },
        "required": [
          "expiration"
        ],
        "type": "object"
      },
      "CardPersonalization": {
        "properties": {
          "text": {
            "$ref": "#/components/schemas/CardPersonalizationText"
          }
        },
        "type": "object"
      },
      "CardPersonalizationNameLine": {
        "properties": {
          "value": {
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "CardPersonalizationText": {
        "properties": {
          "name_line_1": {
            "$ref": "#/components/schemas/CardPersonalizationNameLine"
          },
          "name_line_2": {
            "$ref": "#/components/schemas/CardPersonalizationNameLine"
          }
        },
        "type": "object"
      },
      "CardShipping": {
        "properties": {
          "method": {
            "nullable": true,
            "type": "string"
          },
          "recipient_address": {
            "$ref": "#/components/schemas/CardShippingAddress"
          },
          "recipient_address_verification_state": {
            "enum": [
              "NOT_VERIFIED",
              "OVERRIDEN",
              "VERIFIED"
            ],
            "nullable": true,
            "type": "string"
          },
          "return_address": {
            "$ref": "#/components/schemas/CardShippingAddress",
            "nullable": true
          }
        },
        "type": "object"
      },
      "CardShippingAddress": {
        "properties": {
          "address1": {
            "type": "string"
          },
          "address2": {
            "nullable": true,
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "first_name": {
            "maxLength": 50,
            "type": "string"
          },
          "last_name": {
            "maxLength": 50,
            "type": "string"
          },
          "phone": {
            "nullable": true,
            "type": "string"
          },
          "postal_code": {
            "type": "string"
          },
          "state": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "address1",
          "city",
          "country",
          "first_name",
          "last_name",
          "postal_code"
        ],
        "type": "object"
      },
      "Cashback": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the cashback.",
            "readOnly": true
          },
          "created_at": {
            "description": "Timestamp when the cashback was created (ISO8601 format).",
            "format": "date-time",
            "type": "string"
          },
          "entity_id": {
            "description": "Business entity associated with this cashback.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "id": {
            "description": "Unique identifier for the cashback.",
            "format": "uuid",
            "type": "string"
          },
          "sync_status": {
            "description": "Current sync status of the cashback.",
            "enum": [
              "NOT_SYNC_READY",
              "SYNCED",
              "SYNC_READY"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "NOT_SYNC_READY": "The object is missing required accounting setup and is not ready to sync.",
              "SYNCED": "The object has already been synced to the accounting provider.",
              "SYNC_READY": "The object is ready to sync to the accounting provider."
            }
          }
        },
        "required": [
          "amount",
          "sync_status"
        ],
        "type": "object",
        "x-resource-name": "cashbacks"
      },
      "ChangePaymentMethodDenialReason": {
        "enum": [
          "approval_generation_incomplete",
          "no_permission",
          "not_procurement"
        ],
        "title": "ChangePaymentMethodDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "approval_generation_incomplete": "The payment method cannot be changed until approval generation succeeds."
        }
      },
      "ChangeRowExternalKeyRequestBody": {
        "properties": {
          "new_external_key": {
            "description": "The new external key to set for the row",
            "title": "New External Key",
            "type": "string"
          }
        },
        "required": [
          "new_external_key"
        ],
        "title": "ChangeRowExternalKey",
        "type": "object"
      },
      "ChangeVendorDenialReason": {
        "enum": [
          "archived",
          "linked_to_bills",
          "linked_to_contract",
          "linked_to_transactions",
          "no_permission",
          "punchout_order",
          "renewal_request"
        ],
        "title": "ChangeVendorDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "archived": "The request has been archived.",
          "linked_to_bills": "The purchase order is linked to bills.",
          "linked_to_contract": "The request is linked to a contract.",
          "linked_to_transactions": "The purchase order is linked to transactions.",
          "no_permission": "The user does not have permission to edit the request's primary fields.",
          "punchout_order": "The purchase order was created from a punchout order.",
          "renewal_request": "The request is a contract renewal."
        }
      },
      "ColumnNameAndContentsRequestBody": {
        "properties": {
          "contents": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/NativeRowIdentifierRequestBody"
              },
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Contents"
          },
          "name": {
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "contents",
          "name"
        ],
        "title": "ColumnNameAndContents",
        "type": "object"
      },
      "CompletedAgentExecution": {
        "description": "Information about a completed agent execution.",
        "properties": {
          "agent_id": {
            "default": null,
            "nullable": true,
            "title": "Agent Id",
            "type": "string"
          },
          "created_at": {
            "default": null,
            "format": "date-time",
            "nullable": true,
            "title": "Created At",
            "type": "string"
          },
          "has_report": {
            "title": "Has Report",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "triggered_by": {
            "default": null,
            "nullable": true,
            "title": "Triggered By",
            "type": "string"
          }
        },
        "required": [
          "has_report",
          "id",
          "status",
          "title"
        ],
        "title": "CompletedAgentExecution",
        "type": "object"
      },
      "Condition": {
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/ConditionGroup"
          },
          "then": {
            "items": {
              "$ref": "#/components/schemas/Vertex"
            },
            "type": "array"
          }
        },
        "required": [
          "condition",
          "then"
        ],
        "type": "object"
      },
      "ConditionGroup": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ConditionItem"
            },
            "type": "array"
          },
          "operator": {
            "enum": [
              "ALL",
              "ANY",
              "NOT"
            ],
            "type": "string"
          }
        },
        "required": [
          "items",
          "operator"
        ],
        "type": "object"
      },
      "ConditionItem": {
        "discriminator": {
          "mapping": {
            "CONDITION": "#/components/schemas/AtomicCondition",
            "CONDITION_GROUP": "#/components/schemas/NestedConditionGroup"
          },
          "propertyName": "condition_item_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/AtomicCondition"
          },
          {
            "$ref": "#/components/schemas/NestedConditionGroup"
          }
        ]
      },
      "ConditionVertex": {
        "properties": {
          "available_operands": {
            "items": {
              "$ref": "#/components/schemas/AvailableOperand"
            },
            "readOnly": true,
            "type": "array"
          },
          "has_been_visited": {
            "readOnly": true,
            "type": "boolean"
          },
          "identifier": {
            "nullable": true,
            "type": "string"
          },
          "metadata": {},
          "uuid": {
            "format": "uuid",
            "type": "string"
          },
          "vertex_type": {
            "enum": [
              "CONDITION"
            ],
            "type": "string"
          }
        },
        "required": [
          "uuid",
          "vertex_type"
        ],
        "type": "object"
      },
      "ContactValueSchema": {
        "properties": {
          "email": {
            "description": "Contact email",
            "format": "email",
            "title": "Email",
            "type": "string"
          },
          "first_name": {
            "default": null,
            "nullable": true,
            "title": "First Name",
            "type": "string"
          },
          "last_name": {
            "default": null,
            "nullable": true,
            "title": "Last Name",
            "type": "string"
          },
          "phone_number": {
            "default": null,
            "description": "Contact phone number",
            "nullable": true,
            "title": "Phone Number",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "title": "ContactValueSchema",
        "type": "object"
      },
      "CoreProcurementRequestDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseProcurementRequestDetail"
          },
          {
            "properties": {
              "purchase_order": {
                "$ref": "#/components/schemas/PurchaseOrderForProcurementRequestDetail"
              },
              "purchase_order_detail": {
                "$ref": "#/components/schemas/PurchaseOrderForProcurementRequestDetail",
                "readOnly": true
              },
              "total_amount_details_in_business_default_currency": {
                "$ref": "#/components/schemas/Money",
                "nullable": true,
                "readOnly": true
              }
            },
            "required": [
              "purchase_order",
              "purchase_order_detail",
              "total_amount_details_in_business_default_currency"
            ],
            "type": "object"
          }
        ]
      },
      "CountedPaginatedResponseApiTransactionCanonicalSchema": {
        "example": {
          "data": [
            {
              "accounting_categories": [],
              "accounting_date": "2022-05-03T00:00:00+00:00",
              "accounting_field_selections": [
                {
                  "category_info": {
                    "external_id": "Category",
                    "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                    "name": "Category",
                    "type": "GL_ACCOUNT"
                  },
                  "display_name": "Ramp Category",
                  "external_id": "Category",
                  "id": "07b4ce4d-2750-412e-aef4-6b7815f1411c",
                  "name": "Category",
                  "type": "GL_ACCOUNT"
                }
              ],
              "all_requirements_met_and_approved": true,
              "amount": 90,
              "attendees": [
                {
                  "name": "Jack Johnson",
                  "user_id": null
                },
                {
                  "name": "Joe Johnson",
                  "user_id": "7979392e-8d41-4f97-815b-ccd7584802bf"
                }
              ],
              "card_holder": {
                "department_id": "d471d830-2e73-4082-8a75-68540f83e86e",
                "department_name": "Executive",
                "first_name": "Patrick",
                "last_name": "Robinson",
                "location_id": "4fcf3423-a2e6-42f6-8dd8-9b3a8c51e069",
                "location_name": "San Francisco",
                "user_id": "a26c82c9-6b7d-4022-bc4b-a55b4c4743c7"
              },
              "card_id": "6bc41b14-f853-4862-bae5-4f122f123f6e",
              "currency_code": "USD",
              "disputes": [],
              "entity_amount": {
                "currency": "USD",
                "value": 9000
              },
              "entity_id": "24850cdb-1b3f-4eb9-bf20-967ca9f97605",
              "fund_id": "5e25f547-bd09-40ad-aab3-b8fefdf16885",
              "id": "fd14cd6a-846e-4994-9315-5a59e6bb465f",
              "limit_id": "5e25f547-bd09-40ad-aab3-b8fefdf16885",
              "line_items": [
                {
                  "accounting_field_selections": [
                    {
                      "category_info": {
                        "external_id": "Subsidiary",
                        "id": "15e9565d-7e73-40d8-9fbc-5f6f89b1c075",
                        "name": "Subsidiary",
                        "type": "SUBSIDIARY"
                      },
                      "display_name": "Ramp BV - EMEA",
                      "external_id": "426",
                      "id": "07b4ce4d-2750-412e-aef4-6b7815f1411a",
                      "name": "Ramp BV",
                      "type": "SUBSIDIARY"
                    }
                  ],
                  "amount": {
                    "amount": 5000,
                    "currency_code": "USD"
                  },
                  "converted_amount": {
                    "amount": 5000,
                    "currency_code": "USD"
                  },
                  "id": "11111111-1111-1111-1111-111111111111"
                },
                {
                  "accounting_field_selections": [
                    {
                      "category_info": {
                        "external_id": "Subsidiary",
                        "id": "15e9565d-7e73-40d8-9fbc-5f6f89b1c075",
                        "name": "Subsidiary",
                        "type": "SUBSIDIARY"
                      },
                      "display_name": null,
                      "external_id": "425",
                      "id": "07b4ce4d-2750-412e-aef4-6b7815f1411b",
                      "name": "Ramp LP",
                      "type": "Subsidiary"
                    }
                  ],
                  "amount": {
                    "amount": 4000,
                    "currency_code": "USD"
                  },
                  "converted_amount": {
                    "amount": 4000,
                    "currency_code": "USD"
                  }
                }
              ],
              "memo": null,
              "merchant_amount": {
                "currency": "EUR",
                "value": 9000
              },
              "merchant_category_code": null,
              "merchant_category_code_description": null,
              "merchant_data": {
                "auto_rental": null,
                "flight": null,
                "fuel": null,
                "lodging": null,
                "receipt": [
                  {
                    "commodity_code": null,
                    "description": "Vanta Automated Compliance",
                    "discount": null,
                    "quantity": 1,
                    "tax": null,
                    "total": 5000,
                    "unit_cost": 5000
                  },
                  {
                    "commodity_code": null,
                    "description": "Vanta Risk Management",
                    "discount": null,
                    "quantity": 1,
                    "tax": null,
                    "total": 4000,
                    "unit_cost": 4000
                  }
                ],
                "reference": "343165593943"
              },
              "merchant_descriptor": "VANTA",
              "merchant_id": "2907e304-cac2-4abf-84c4-b3b454ae3b8c",
              "merchant_location": {
                "city": "SAN FRANCISCO",
                "country": "USA",
                "postal_code": "941050000",
                "state": "06"
              },
              "merchant_name": "Vanta",
              "network_merchant_id": "1234567890",
              "original_transaction_amount": {
                "amount": 9000,
                "currency_code": "EUR"
              },
              "original_transaction_id": null,
              "policy_violations": [],
              "receipts": [],
              "settlement_date": "2022-05-03T00:00:00+00:00",
              "sk_category_id": "40,41",
              "sk_category_name": "SaaS / Software",
              "spend_program_id": "4a2b8c1e-9f63-4d75-ae12-3b9d47f85e29",
              "state": "CLEARED",
              "synced_at": "2022-05-04T00:00:00+00:00",
              "trip_id": "ec6aae2b-38c6-4eeb-adf0-80f25dbf9aad",
              "trip_name": "Trip to Europe",
              "updated_at": "2022-05-03T00:00:00+00:00",
              "user_transaction_time": "2022-04-28T00:00:00+00:00"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>",
            "total_count": 2412,
            "total_count_capped": false
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Transaction"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPICountedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "CreatedTableColumnResponse": {
        "properties": {
          "column_id": {
            "description": "The id of the created column",
            "title": "Column Id",
            "type": "string"
          }
        },
        "required": [
          "column_id"
        ],
        "title": "CreatedTableColumnResponse",
        "type": "object"
      },
      "Currency": {
        "description": "We attempted to dynamically create this class from the ISO4217Currency and CryptoCurrency enums.\nHowever, mypy was not able to infer the type of the Currency enum; so we manually added the currencies to the enum.",
        "enum": [
          "AED",
          "AFN",
          "ALL",
          "AMD",
          "ANG",
          "AOA",
          "ARS",
          "AUD",
          "AWG",
          "AZN",
          "BAM",
          "BBD",
          "BDT",
          "BGN",
          "BHD",
          "BIF",
          "BMD",
          "BND",
          "BOB",
          "BOV",
          "BRL",
          "BSD",
          "BTN",
          "BWP",
          "BYN",
          "BZD",
          "CAD",
          "CDF",
          "CHE",
          "CHF",
          "CHW",
          "CLF",
          "CLP",
          "CNH",
          "CNY",
          "COP",
          "COU",
          "CRC",
          "CUC",
          "CUP",
          "CVE",
          "CZK",
          "DJF",
          "DKK",
          "DOP",
          "DZD",
          "EGP",
          "ERN",
          "ETB",
          "EUR",
          "EURC",
          "FJD",
          "FKP",
          "GBP",
          "GEL",
          "GHS",
          "GIP",
          "GMD",
          "GNF",
          "GTQ",
          "GYD",
          "HKD",
          "HNL",
          "HRK",
          "HTG",
          "HUF",
          "IDR",
          "ILS",
          "INR",
          "IQD",
          "IRR",
          "ISK",
          "JMD",
          "JOD",
          "JPY",
          "KES",
          "KGS",
          "KHR",
          "KMF",
          "KPW",
          "KRW",
          "KWD",
          "KYD",
          "KZT",
          "LAK",
          "LBP",
          "LKR",
          "LRD",
          "LSL",
          "LYD",
          "MAD",
          "MDL",
          "MGA",
          "MKD",
          "MMK",
          "MNT",
          "MOP",
          "MRU",
          "MUR",
          "MVR",
          "MWK",
          "MXN",
          "MXV",
          "MYR",
          "MZN",
          "NAD",
          "NGN",
          "NIO",
          "NOK",
          "NPR",
          "NZD",
          "OMR",
          "OPEN_USD",
          "PAB",
          "PEN",
          "PGK",
          "PHP",
          "PKR",
          "PLN",
          "PYG",
          "QAR",
          "RON",
          "RSD",
          "RUB",
          "RWF",
          "SAR",
          "SBD",
          "SCR",
          "SDG",
          "SEK",
          "SGD",
          "SHP",
          "SLE",
          "SLL",
          "SOS",
          "SRD",
          "SSP",
          "STN",
          "SVC",
          "SYP",
          "SZL",
          "THB",
          "TJS",
          "TMT",
          "TND",
          "TOP",
          "TRY",
          "TTD",
          "TWD",
          "TZS",
          "UAH",
          "UGX",
          "USD",
          "USDB",
          "USDC",
          "USDG",
          "USDT",
          "USN",
          "UYI",
          "UYU",
          "UYW",
          "UZS",
          "VED",
          "VES",
          "VND",
          "VUV",
          "WST",
          "XAD",
          "XAF",
          "XAG",
          "XAU",
          "XBA",
          "XBB",
          "XBC",
          "XBD",
          "XCD",
          "XCG",
          "XDR",
          "XOF",
          "XPD",
          "XPF",
          "XPT",
          "XSU",
          "XTS",
          "XUA",
          "XXX",
          "YER",
          "ZAR",
          "ZMW",
          "ZWG",
          "ZWL"
        ],
        "title": "Currency",
        "type": "string",
        "x-enum-descriptions": {
          "AED": "UAE Dirham",
          "AFN": "Afghani",
          "ALL": "Lek",
          "AMD": "Armenian Dram",
          "ANG": "Netherlands Antillean Guilder",
          "AOA": "Kwanza",
          "ARS": "Argentine Peso",
          "AUD": "Australian Dollar",
          "AWG": "Aruban Florin",
          "AZN": "Azerbaijan Manat",
          "BAM": "Convertible Mark",
          "BBD": "Barbados Dollar",
          "BDT": "Taka",
          "BGN": "Bulgarian Lev",
          "BHD": "Bahraini Dinar",
          "BIF": "Burundi Franc",
          "BMD": "Bermudian Dollar",
          "BND": "Brunei Dollar",
          "BOB": "Boliviano",
          "BOV": "Mvdol",
          "BRL": "Brazilian Real",
          "BSD": "Bahamian Dollar",
          "BTN": "Ngultrum",
          "BWP": "Pula",
          "BYN": "Belarusian Ruble",
          "BZD": "Belize Dollar",
          "CAD": "Canadian Dollar",
          "CDF": "Congolese Franc",
          "CHE": "WIR Euro",
          "CHF": "Swiss Franc",
          "CHW": "WIR Franc",
          "CLF": "Unidad de Fomento",
          "CLP": "Chilean Peso",
          "CNH": "CNH",
          "CNY": "Yuan Renminbi",
          "COP": "Colombian Peso",
          "COU": "Unidad de Valor Real",
          "CRC": "Costa Rican Colon",
          "CUC": "Peso Convertible",
          "CUP": "Cuban Peso",
          "CVE": "Cabo Verde Escudo",
          "CZK": "Czech Koruna",
          "DJF": "Djibouti Franc",
          "DKK": "Danish Krone",
          "DOP": "Dominican Peso",
          "DZD": "Algerian Dinar",
          "EGP": "Egyptian Pound",
          "ERN": "Nakfa",
          "ETB": "Ethiopian Birr",
          "EUR": "Euro",
          "EURC": "Euro Coin",
          "FJD": "Fiji Dollar",
          "FKP": "Falkland Islands Pound",
          "GBP": "Pound Sterling",
          "GEL": "Lari",
          "GHS": "Ghana Cedi",
          "GIP": "Gibraltar Pound",
          "GMD": "Dalasi",
          "GNF": "Guinean Franc",
          "GTQ": "Quetzal",
          "GYD": "Guyana Dollar",
          "HKD": "Hong Kong Dollar",
          "HNL": "Lempira",
          "HRK": "Croatian Kuna",
          "HTG": "Gourde",
          "HUF": "Forint",
          "IDR": "Rupiah",
          "ILS": "New Israeli Sheqel",
          "INR": "Indian Rupee",
          "IQD": "Iraqi Dinar",
          "IRR": "Iranian Rial",
          "ISK": "Iceland Krona",
          "JMD": "Jamaican Dollar",
          "JOD": "Jordanian Dinar",
          "JPY": "Yen",
          "KES": "Kenyan Shilling",
          "KGS": "Som",
          "KHR": "Riel",
          "KMF": "Comorian Franc",
          "KPW": "North Korean Won",
          "KRW": "Won",
          "KWD": "Kuwaiti Dinar",
          "KYD": "Cayman Islands Dollar",
          "KZT": "Tenge",
          "LAK": "Lao Kip",
          "LBP": "Lebanese Pound",
          "LKR": "Sri Lanka Rupee",
          "LRD": "Liberian Dollar",
          "LSL": "Loti",
          "LYD": "Libyan Dinar",
          "MAD": "Moroccan Dirham",
          "MDL": "Moldovan Leu",
          "MGA": "Malagasy Ariary",
          "MKD": "Denar",
          "MMK": "Kyat",
          "MNT": "Tugrik",
          "MOP": "Pataca",
          "MRU": "Ouguiya",
          "MUR": "Mauritius Rupee",
          "MVR": "Rufiyaa",
          "MWK": "Malawi Kwacha",
          "MXN": "Mexican Peso",
          "MXV": "Mexican Unidad de Inversion (UDI)",
          "MYR": "Malaysian Ringgit",
          "MZN": "Mozambique Metical",
          "NAD": "Namibia Dollar",
          "NGN": "Naira",
          "NIO": "Cordoba Oro",
          "NOK": "Norwegian Krone",
          "NPR": "Nepalese Rupee",
          "NZD": "New Zealand Dollar",
          "OMR": "Rial Omani",
          "OPEN_USD": "OpenUSD",
          "PAB": "Balboa",
          "PEN": "Sol",
          "PGK": "Kina",
          "PHP": "Philippine Peso",
          "PKR": "Pakistan Rupee",
          "PLN": "Zloty",
          "PYG": "Guarani",
          "QAR": "Qatari Rial",
          "RON": "Romanian Leu",
          "RSD": "Serbian Dinar",
          "RUB": "Russian Ruble",
          "RWF": "Rwanda Franc",
          "SAR": "Saudi Riyal",
          "SBD": "Solomon Islands Dollar",
          "SCR": "Seychelles Rupee",
          "SDG": "Sudanese Pound",
          "SEK": "Swedish Krona",
          "SGD": "Singapore Dollar",
          "SHP": "Saint Helena Pound",
          "SLE": "Leone",
          "SLL": "Leone",
          "SOS": "Somali Shilling",
          "SRD": "Surinam Dollar",
          "SSP": "South Sudanese Pound",
          "STN": "Dobra",
          "SVC": "El Salvador Colon",
          "SYP": "Syrian Pound",
          "SZL": "Lilangeni",
          "THB": "Baht",
          "TJS": "Somoni",
          "TMT": "Turkmenistan New Manat",
          "TND": "Tunisian Dinar",
          "TOP": "Pa’anga",
          "TRY": "Turkish Lira",
          "TTD": "Trinidad and Tobago Dollar",
          "TWD": "New Taiwan Dollar",
          "TZS": "Tanzanian Shilling",
          "UAH": "Hryvnia",
          "UGX": "Uganda Shilling",
          "USD": "US Dollar",
          "USDB": "USDB",
          "USDC": "USDC",
          "USDG": "Global Dollar",
          "USDT": "USDT",
          "USN": "US Dollar (Next day)",
          "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
          "UYU": "Peso Uruguayo",
          "UYW": "Unidad Previsional",
          "UZS": "Uzbekistan Sum",
          "VED": "Bolívar Soberano",
          "VES": "Bolívar Soberano",
          "VND": "Dong",
          "VUV": "Vatu",
          "WST": "Tala",
          "XAD": "Arab Accounting Dinar",
          "XAF": "CFA Franc BEAC",
          "XAG": "Silver",
          "XAU": "Gold",
          "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
          "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
          "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
          "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
          "XCD": "East Caribbean Dollar",
          "XCG": "Caribbean Guilder",
          "XDR": "SDR (Special Drawing Right)",
          "XOF": "CFA Franc BCEAO",
          "XPD": "Palladium",
          "XPF": "CFP Franc",
          "XPT": "Platinum",
          "XSU": "Sucre",
          "XTS": "Codes specifically reserved for testing purposes",
          "XUA": "ADB Unit of Account",
          "XXX": "The codes assigned for transactions where no currency is involved",
          "YER": "Yemeni Rial",
          "ZAR": "Rand",
          "ZMW": "Zambian Kwacha",
          "ZWG": "Zimbabwe Gold",
          "ZWL": "Zimbabwe Dollar"
        }
      },
      "CurrencyAmount": {
        "properties": {
          "amount": {
            "description": "the amount of money represented in the smallest denomination of the currency. For example, when the currency is USD, then the amount is expressed in cents.",
            "type": "integer"
          },
          "currency_code": {
            "default": "USD",
            "description": "The type of currency, in ISO 4217 format. e.g. USD for US dollars",
            "type": "string"
          },
          "minor_unit_conversion_rate": {
            "description": "The conversion factor to convert from the integer amount to the actual currency value. Divide amount by this value to get the real currency amount. For USD, this is 100 (e.g., 12034 / 100 = 120.34 USD). See https://docs.ramp.com/developer-api/v1/monetary-values for more information.",
            "nullable": true,
            "readOnly": true,
            "type": "integer"
          }
        },
        "required": [
          "amount",
          "currency_code",
          "minor_unit_conversion_rate"
        ],
        "type": "object"
      },
      "CurrencyAmountRequestBody": {
        "properties": {
          "amount": {
            "description": "the amount of money represented in the smallest denomination of the currency. For example, when the currency is USD, then the amount is expressed in cents.",
            "type": "integer"
          },
          "currency_code": {
            "default": "USD",
            "description": "The type of currency, in ISO 4217 format. e.g. USD for US dollars",
            "type": "string"
          }
        },
        "required": [
          "amount"
        ],
        "type": "object"
      },
      "CurrencyDetails": {
        "properties": {
          "currency": {
            "description": "3-char currency code (e.g. 'USD', 'CAD')",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "currency_sign": {
            "description": "Currency sign (e.g. '$', '€')",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "Display name (e.g. 'US Dollar')",
            "readOnly": true,
            "type": "string"
          },
          "num_decimal_places": {
            "description": "Number of decimal places to render.",
            "readOnly": true,
            "type": "integer"
          }
        },
        "required": [
          "currency",
          "currency_sign",
          "name",
          "num_decimal_places"
        ],
        "type": "object"
      },
      "CurrencyRequestBody": {
        "description": "We attempted to dynamically create this class from the ISO4217Currency and CryptoCurrency enums.\nHowever, mypy was not able to infer the type of the Currency enum; so we manually added the currencies to the enum.",
        "enum": [
          "AED",
          "AFN",
          "ALL",
          "AMD",
          "ANG",
          "AOA",
          "ARS",
          "AUD",
          "AWG",
          "AZN",
          "BAM",
          "BBD",
          "BDT",
          "BGN",
          "BHD",
          "BIF",
          "BMD",
          "BND",
          "BOB",
          "BOV",
          "BRL",
          "BSD",
          "BTN",
          "BWP",
          "BYN",
          "BZD",
          "CAD",
          "CDF",
          "CHE",
          "CHF",
          "CHW",
          "CLF",
          "CLP",
          "CNH",
          "CNY",
          "COP",
          "COU",
          "CRC",
          "CUC",
          "CUP",
          "CVE",
          "CZK",
          "DJF",
          "DKK",
          "DOP",
          "DZD",
          "EGP",
          "ERN",
          "ETB",
          "EUR",
          "EURC",
          "FJD",
          "FKP",
          "GBP",
          "GEL",
          "GHS",
          "GIP",
          "GMD",
          "GNF",
          "GTQ",
          "GYD",
          "HKD",
          "HNL",
          "HRK",
          "HTG",
          "HUF",
          "IDR",
          "ILS",
          "INR",
          "IQD",
          "IRR",
          "ISK",
          "JMD",
          "JOD",
          "JPY",
          "KES",
          "KGS",
          "KHR",
          "KMF",
          "KPW",
          "KRW",
          "KWD",
          "KYD",
          "KZT",
          "LAK",
          "LBP",
          "LKR",
          "LRD",
          "LSL",
          "LYD",
          "MAD",
          "MDL",
          "MGA",
          "MKD",
          "MMK",
          "MNT",
          "MOP",
          "MRU",
          "MUR",
          "MVR",
          "MWK",
          "MXN",
          "MXV",
          "MYR",
          "MZN",
          "NAD",
          "NGN",
          "NIO",
          "NOK",
          "NPR",
          "NZD",
          "OMR",
          "OPEN_USD",
          "PAB",
          "PEN",
          "PGK",
          "PHP",
          "PKR",
          "PLN",
          "PYG",
          "QAR",
          "RON",
          "RSD",
          "RUB",
          "RWF",
          "SAR",
          "SBD",
          "SCR",
          "SDG",
          "SEK",
          "SGD",
          "SHP",
          "SLE",
          "SLL",
          "SOS",
          "SRD",
          "SSP",
          "STN",
          "SVC",
          "SYP",
          "SZL",
          "THB",
          "TJS",
          "TMT",
          "TND",
          "TOP",
          "TRY",
          "TTD",
          "TWD",
          "TZS",
          "UAH",
          "UGX",
          "USD",
          "USDB",
          "USDC",
          "USDG",
          "USDT",
          "USN",
          "UYI",
          "UYU",
          "UYW",
          "UZS",
          "VED",
          "VES",
          "VND",
          "VUV",
          "WST",
          "XAD",
          "XAF",
          "XAG",
          "XAU",
          "XBA",
          "XBB",
          "XBC",
          "XBD",
          "XCD",
          "XCG",
          "XDR",
          "XOF",
          "XPD",
          "XPF",
          "XPT",
          "XSU",
          "XTS",
          "XUA",
          "XXX",
          "YER",
          "ZAR",
          "ZMW",
          "ZWG",
          "ZWL"
        ],
        "title": "Currency",
        "type": "string",
        "x-enum-descriptions": {
          "AED": "UAE Dirham",
          "AFN": "Afghani",
          "ALL": "Lek",
          "AMD": "Armenian Dram",
          "ANG": "Netherlands Antillean Guilder",
          "AOA": "Kwanza",
          "ARS": "Argentine Peso",
          "AUD": "Australian Dollar",
          "AWG": "Aruban Florin",
          "AZN": "Azerbaijan Manat",
          "BAM": "Convertible Mark",
          "BBD": "Barbados Dollar",
          "BDT": "Taka",
          "BGN": "Bulgarian Lev",
          "BHD": "Bahraini Dinar",
          "BIF": "Burundi Franc",
          "BMD": "Bermudian Dollar",
          "BND": "Brunei Dollar",
          "BOB": "Boliviano",
          "BOV": "Mvdol",
          "BRL": "Brazilian Real",
          "BSD": "Bahamian Dollar",
          "BTN": "Ngultrum",
          "BWP": "Pula",
          "BYN": "Belarusian Ruble",
          "BZD": "Belize Dollar",
          "CAD": "Canadian Dollar",
          "CDF": "Congolese Franc",
          "CHE": "WIR Euro",
          "CHF": "Swiss Franc",
          "CHW": "WIR Franc",
          "CLF": "Unidad de Fomento",
          "CLP": "Chilean Peso",
          "CNH": "CNH",
          "CNY": "Yuan Renminbi",
          "COP": "Colombian Peso",
          "COU": "Unidad de Valor Real",
          "CRC": "Costa Rican Colon",
          "CUC": "Peso Convertible",
          "CUP": "Cuban Peso",
          "CVE": "Cabo Verde Escudo",
          "CZK": "Czech Koruna",
          "DJF": "Djibouti Franc",
          "DKK": "Danish Krone",
          "DOP": "Dominican Peso",
          "DZD": "Algerian Dinar",
          "EGP": "Egyptian Pound",
          "ERN": "Nakfa",
          "ETB": "Ethiopian Birr",
          "EUR": "Euro",
          "EURC": "Euro Coin",
          "FJD": "Fiji Dollar",
          "FKP": "Falkland Islands Pound",
          "GBP": "Pound Sterling",
          "GEL": "Lari",
          "GHS": "Ghana Cedi",
          "GIP": "Gibraltar Pound",
          "GMD": "Dalasi",
          "GNF": "Guinean Franc",
          "GTQ": "Quetzal",
          "GYD": "Guyana Dollar",
          "HKD": "Hong Kong Dollar",
          "HNL": "Lempira",
          "HRK": "Croatian Kuna",
          "HTG": "Gourde",
          "HUF": "Forint",
          "IDR": "Rupiah",
          "ILS": "New Israeli Sheqel",
          "INR": "Indian Rupee",
          "IQD": "Iraqi Dinar",
          "IRR": "Iranian Rial",
          "ISK": "Iceland Krona",
          "JMD": "Jamaican Dollar",
          "JOD": "Jordanian Dinar",
          "JPY": "Yen",
          "KES": "Kenyan Shilling",
          "KGS": "Som",
          "KHR": "Riel",
          "KMF": "Comorian Franc",
          "KPW": "North Korean Won",
          "KRW": "Won",
          "KWD": "Kuwaiti Dinar",
          "KYD": "Cayman Islands Dollar",
          "KZT": "Tenge",
          "LAK": "Lao Kip",
          "LBP": "Lebanese Pound",
          "LKR": "Sri Lanka Rupee",
          "LRD": "Liberian Dollar",
          "LSL": "Loti",
          "LYD": "Libyan Dinar",
          "MAD": "Moroccan Dirham",
          "MDL": "Moldovan Leu",
          "MGA": "Malagasy Ariary",
          "MKD": "Denar",
          "MMK": "Kyat",
          "MNT": "Tugrik",
          "MOP": "Pataca",
          "MRU": "Ouguiya",
          "MUR": "Mauritius Rupee",
          "MVR": "Rufiyaa",
          "MWK": "Malawi Kwacha",
          "MXN": "Mexican Peso",
          "MXV": "Mexican Unidad de Inversion (UDI)",
          "MYR": "Malaysian Ringgit",
          "MZN": "Mozambique Metical",
          "NAD": "Namibia Dollar",
          "NGN": "Naira",
          "NIO": "Cordoba Oro",
          "NOK": "Norwegian Krone",
          "NPR": "Nepalese Rupee",
          "NZD": "New Zealand Dollar",
          "OMR": "Rial Omani",
          "OPEN_USD": "OpenUSD",
          "PAB": "Balboa",
          "PEN": "Sol",
          "PGK": "Kina",
          "PHP": "Philippine Peso",
          "PKR": "Pakistan Rupee",
          "PLN": "Zloty",
          "PYG": "Guarani",
          "QAR": "Qatari Rial",
          "RON": "Romanian Leu",
          "RSD": "Serbian Dinar",
          "RUB": "Russian Ruble",
          "RWF": "Rwanda Franc",
          "SAR": "Saudi Riyal",
          "SBD": "Solomon Islands Dollar",
          "SCR": "Seychelles Rupee",
          "SDG": "Sudanese Pound",
          "SEK": "Swedish Krona",
          "SGD": "Singapore Dollar",
          "SHP": "Saint Helena Pound",
          "SLE": "Leone",
          "SLL": "Leone",
          "SOS": "Somali Shilling",
          "SRD": "Surinam Dollar",
          "SSP": "South Sudanese Pound",
          "STN": "Dobra",
          "SVC": "El Salvador Colon",
          "SYP": "Syrian Pound",
          "SZL": "Lilangeni",
          "THB": "Baht",
          "TJS": "Somoni",
          "TMT": "Turkmenistan New Manat",
          "TND": "Tunisian Dinar",
          "TOP": "Pa’anga",
          "TRY": "Turkish Lira",
          "TTD": "Trinidad and Tobago Dollar",
          "TWD": "New Taiwan Dollar",
          "TZS": "Tanzanian Shilling",
          "UAH": "Hryvnia",
          "UGX": "Uganda Shilling",
          "USD": "US Dollar",
          "USDB": "USDB",
          "USDC": "USDC",
          "USDG": "Global Dollar",
          "USDT": "USDT",
          "USN": "US Dollar (Next day)",
          "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
          "UYU": "Peso Uruguayo",
          "UYW": "Unidad Previsional",
          "UZS": "Uzbekistan Sum",
          "VED": "Bolívar Soberano",
          "VES": "Bolívar Soberano",
          "VND": "Dong",
          "VUV": "Vatu",
          "WST": "Tala",
          "XAD": "Arab Accounting Dinar",
          "XAF": "CFA Franc BEAC",
          "XAG": "Silver",
          "XAU": "Gold",
          "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
          "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
          "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
          "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
          "XCD": "East Caribbean Dollar",
          "XCG": "Caribbean Guilder",
          "XDR": "SDR (Special Drawing Right)",
          "XOF": "CFA Franc BCEAO",
          "XPD": "Palladium",
          "XPF": "CFP Franc",
          "XPT": "Platinum",
          "XSU": "Sucre",
          "XTS": "Codes specifically reserved for testing purposes",
          "XUA": "ADB Unit of Account",
          "XXX": "The codes assigned for transactions where no currency is involved",
          "YER": "Yemeni Rial",
          "ZAR": "Rand",
          "ZMW": "Zambian Kwacha",
          "ZWG": "Zimbabwe Gold",
          "ZWL": "Zimbabwe Dollar"
        }
      },
      "CustomCellOutputWithLoadedReferences": {
        "properties": {
          "column_display_name": {
            "description": "The display name of the column",
            "type": "string"
          },
          "column_id": {
            "description": "The id of the column",
            "type": "string"
          },
          "value": {
            "description": "The contents of the cell",
            "discriminator": {
              "mapping": {
                "boolean": "#/components/schemas/BooleanCellContentsForDisplay",
                "custom_table": "#/components/schemas/CustomTableReferenceCellContentsForDisplay",
                "date": "#/components/schemas/DatetimeCellContentsForDisplay",
                "native_table": "#/components/schemas/NativeTableReferenceCellContentsForDisplay",
                "number": "#/components/schemas/NumberCellContentsForDisplay",
                "text": "#/components/schemas/TextCellContentsForDisplay"
              },
              "propertyName": "type"
            },
            "oneOf": [
              {
                "$ref": "#/components/schemas/BooleanCellContentsForDisplay"
              },
              {
                "$ref": "#/components/schemas/CustomTableReferenceCellContentsForDisplay"
              },
              {
                "$ref": "#/components/schemas/DatetimeCellContentsForDisplay"
              },
              {
                "$ref": "#/components/schemas/NativeTableReferenceCellContentsForDisplay"
              },
              {
                "$ref": "#/components/schemas/NumberCellContentsForDisplay"
              },
              {
                "$ref": "#/components/schemas/TextCellContentsForDisplay"
              }
            ]
          }
        },
        "required": [
          "column_display_name",
          "column_id",
          "value"
        ],
        "type": "object"
      },
      "CustomFieldOption": {
        "example": {
          "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
          "code": "20001",
          "created_at": "2019-08-28T14:15:22+00:00",
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "id": "123",
          "is_active": true,
          "provider_name": "Accounting",
          "ramp_id": "649b6731-33c6-4ff5-8a5d-2333fcc90ace",
          "updated_at": "2020-08-28T14:40:12+00:00",
          "value": "Office/Admin:Phone & Internet"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the custom accounting field option belongs to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "many-to-one"
            }
          },
          "code": {
            "description": "Code of the custom field option; Usually it is a unique identifier for the custom field option in the remote ERP system.",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "display_name": {
            "description": "Display name of the custom field option.",
            "type": "string"
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities that this custom field option is available for. Null means the custom field option is available for all connected entities.",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "readOnly": true,
            "type": "array"
          },
          "id": {
            "description": "Remote/external ID of custom accounting field option from ERP system.",
            "type": "string"
          },
          "is_active": {
            "type": "boolean"
          },
          "provider_name": {
            "description": "Name of the accounting connection that the custom accounting field option belongs to.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "ramp_id": {
            "description": "id to uniquely identify a custom field option within Ramp system",
            "format": "uuid",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "description": "A vendor is a person or business that provides goods or services",
            "type": "string"
          },
          "visibility": {
            "description": "Visibility of the custom field option.",
            "enum": [
              "HIDDEN",
              "VISIBLE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "HIDDEN": "The option is hidden from selection in Ramp.",
              "VISIBLE": "The option is available for selection in Ramp."
            }
          }
        },
        "required": [
          "accounting_connection_id",
          "entity_remote_ids",
          "provider_name"
        ],
        "type": "object"
      },
      "CustomFormAddressFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "ADDRESS"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormAddressMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "$ref": "#/components/schemas/AddressValueSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormAddressFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormAddressFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "ADDRESS"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormAddressMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormAddressFieldSchema",
        "type": "object"
      },
      "CustomFormAddressMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PAYEE__CUSTOM_RECORDS": "#/components/schemas/PayeeCustomRecordMappedFieldSchema",
            "PURCHASE_ORDER__BILL_TO_ADDRESS": "#/components/schemas/PurchaseOrderBillToAddressMappedFieldSchema",
            "PURCHASE_ORDER__PAYEE_ADDRESS": "#/components/schemas/PurchaseOrderPayeeAddressMappedFieldSchema",
            "PURCHASE_ORDER__SHIP_TO_ADDRESS": "#/components/schemas/PurchaseOrderShipToAddressMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderBillToAddressMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderPayeeAddressMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderShipToAddressMappedFieldSchema"
          }
        ]
      },
      "CustomFormBooleanFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "BOOLEAN"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormBooleanMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "$ref": "#/components/schemas/BooleanValueSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormBooleanFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormBooleanFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "BOOLEAN"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormBooleanMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormBooleanFieldSchema",
        "type": "object"
      },
      "CustomFormBooleanMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PAYEE__CUSTOM_RECORDS": "#/components/schemas/PayeeCustomRecordMappedFieldSchema",
            "PURCHASE_ORDER__CUSTOM_FIELD": "#/components/schemas/PurchaseOrderCustomFieldMappedFieldSchema",
            "SPEND_ALLOCATION__IS_SHAREABLE": "#/components/schemas/SpendAllocationIsShareableMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderCustomFieldMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/SpendAllocationIsShareableMappedFieldSchema"
          }
        ]
      },
      "CustomFormCollectionApiResponseDumpSchemaV2": {
        "description": "Represents the dump schema for a custom form collection response.",
        "properties": {
          "custom_form_collection": {
            "$ref": "#/components/schemas/CustomFormCollectionWithResponseDumpSchemaV2"
          },
          "custom_form_collection_response_uuid": {
            "title": "Custom Form Collection Response Uuid",
            "type": "string"
          },
          "draft_revision": {
            "default": null,
            "description": "Monotonic revision of the owning spend request's user-editable content, used to discard stale concurrent-edit reads; null when the response is not attached to a spend request.",
            "nullable": true,
            "title": "Draft Revision",
            "type": "integer"
          }
        },
        "required": [
          "custom_form_collection",
          "custom_form_collection_response_uuid"
        ],
        "title": "CustomFormCollectionApiResponseDumpSchemaV2",
        "type": "object"
      },
      "CustomFormCollectionLogEntryWithResponseDumpSchemaV2": {
        "description": "Represents the dump schema for a custom form collection response log entry on a custom form response.",
        "properties": {
          "allow_comments": {
            "default": false,
            "title": "Allow Comments",
            "type": "boolean"
          },
          "forms": {
            "items": {
              "$ref": "#/components/schemas/CustomFormResponseDumpSchemaV2"
            },
            "title": "Forms",
            "type": "array"
          },
          "label": {
            "nullable": true,
            "title": "Label",
            "type": "string"
          },
          "uuid": {
            "title": "Uuid",
            "type": "string"
          }
        },
        "required": [
          "forms",
          "label",
          "uuid"
        ],
        "title": "CustomFormCollectionLogEntryWithResponseDumpSchemaV2",
        "type": "object"
      },
      "CustomFormCollectionWithResponseDumpSchemaV2": {
        "description": "Represents the dump schema for a custom form collection on a custom form response.",
        "properties": {
          "custom_form_collection_log_entry": {
            "$ref": "#/components/schemas/CustomFormCollectionLogEntryWithResponseDumpSchemaV2"
          },
          "uuid": {
            "title": "Uuid",
            "type": "string"
          }
        },
        "required": [
          "custom_form_collection_log_entry",
          "uuid"
        ],
        "title": "CustomFormCollectionWithResponseDumpSchemaV2",
        "type": "object"
      },
      "CustomFormConditionWithActions": {
        "$ref": "#/components/schemas/WorkflowsCondition"
      },
      "CustomFormContactFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "CONTACT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormContactMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "$ref": "#/components/schemas/ContactValueSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormContactFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormContactFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "CONTACT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormContactMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormContactFieldSchema",
        "type": "object"
      },
      "CustomFormContactMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PURCHASE_ORDER__BILLING_CONTACT": "#/components/schemas/PurchaseOrderBillingContactMappedFieldSchema",
            "PURCHASE_ORDER__PAYEE_CONTACT": "#/components/schemas/PurchaseOrderPayeeContactMappedFieldSchema",
            "PURCHASE_ORDER__SHIPPING_CONTACT": "#/components/schemas/PurchaseOrderShippingContactMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PurchaseOrderBillingContactMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderPayeeContactMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderShippingContactMappedFieldSchema"
          }
        ]
      },
      "CustomFormDateFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "DATE"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormDateMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "$ref": "#/components/schemas/StringValueSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormDateFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormDateFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "DATE"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormDateMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormDateFieldSchema",
        "type": "object"
      },
      "CustomFormDateMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PAYEE__CUSTOM_RECORDS": "#/components/schemas/PayeeCustomRecordMappedFieldSchema",
            "PURCHASE_ORDER__CUSTOM_FIELD": "#/components/schemas/PurchaseOrderCustomFieldMappedFieldSchema",
            "PURCHASE_ORDER__PROMISE_DATE": "#/components/schemas/PurchaseOrderPromiseDateMappedFieldSchema",
            "SPEND_ALLOCATION__END_DATE": "#/components/schemas/SpendAllocationEndDateMappedFieldSchema",
            "SPEND_ALLOCATION__START_DATE": "#/components/schemas/SpendAllocationStartDateMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderCustomFieldMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderPromiseDateMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/SpendAllocationEndDateMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/SpendAllocationStartDateMappedFieldSchema"
          }
        ]
      },
      "CustomFormDepartmentFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "DEPARTMENT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/DepartmentValueDumpSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormDepartmentFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormDepartmentFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "DEPARTMENT"
            ],
            "title": "Field Type",
            "type": "string"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormDepartmentFieldSchema",
        "type": "object"
      },
      "CustomFormEffectActionVertex": {
        "$ref": "#/components/schemas/Action"
      },
      "CustomFormEffectSDKConditionVertex": {
        "$ref": "#/components/schemas/SDKCondition"
      },
      "CustomFormEffectWorkflowDefinitionSchema": {
        "properties": {
          "fallback_vertices": {
            "description": "Fallback action used when no conditional branch matches.",
            "items": {
              "$ref": "#/components/schemas/CustomFormEffectActionVertex"
            },
            "title": "Fallback Vertices",
            "type": "array"
          },
          "vertices": {
            "description": "Ordered conditional branches for this field effect.",
            "items": {
              "$ref": "#/components/schemas/CustomFormEffectSDKConditionVertex"
            },
            "title": "Vertices",
            "type": "array"
          }
        },
        "required": [
          "fallback_vertices",
          "vertices"
        ],
        "title": "CustomFormEffectWorkflowDefinitionSchema",
        "type": "object"
      },
      "CustomFormEmailFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "EMAIL"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormEmailMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "$ref": "#/components/schemas/StringValueSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormEmailFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormEmailFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "EMAIL"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormEmailMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormEmailFieldSchema",
        "type": "object"
      },
      "CustomFormEmailMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PAYEE__CUSTOM_RECORDS": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          }
        ]
      },
      "CustomFormFieldMappingMetadataRestrictionControlTypeSchema": {
        "properties": {
          "restriction_control_type": {
            "$ref": "#/components/schemas/CustomFormMappingMetadataRestrictionControlType"
          }
        },
        "required": [
          "restriction_control_type"
        ],
        "title": "CustomFormFieldMappingMetadataRestrictionControlTypeSchema",
        "type": "object"
      },
      "CustomFormFieldResponseDumpSchemaV2": {
        "discriminator": {
          "mapping": {
            "ADDRESS": "#/components/schemas/CustomFormAddressFieldResponseDumpSchema",
            "BOOLEAN": "#/components/schemas/CustomFormBooleanFieldResponseDumpSchema",
            "CONTACT": "#/components/schemas/CustomFormContactFieldResponseDumpSchema",
            "DATE": "#/components/schemas/CustomFormDateFieldResponseDumpSchema",
            "DEPARTMENT": "#/components/schemas/CustomFormDepartmentFieldResponseDumpSchema",
            "EMAIL": "#/components/schemas/CustomFormEmailFieldResponseDumpSchema",
            "FILE_UPLOAD": "#/components/schemas/CustomFormFileUploadFieldResponseDumpSchema",
            "LINK": "#/components/schemas/CustomFormLinkFieldResponseDumpSchema",
            "MERCHANT": "#/components/schemas/CustomFormMerchantFieldResponseDumpSchema",
            "MERCHANT_CATEGORY": "#/components/schemas/CustomFormMerchantCategoryFieldResponseDumpSchema",
            "MONETARY_AMOUNT": "#/components/schemas/CustomFormMonetaryAmountFieldResponseDumpSchema",
            "NUMBER": "#/components/schemas/CustomFormNumberFieldResponseDumpSchema",
            "PARAGRAPH": "#/components/schemas/CustomFormParagraphFieldResponseDumpSchema",
            "TEXT": "#/components/schemas/CustomFormTextFieldResponseDumpSchema",
            "TEXT_MULTI_SELECT": "#/components/schemas/CustomFormTextMultiSelectFieldResponseDumpSchema",
            "TEXT_SINGLE_SELECT": "#/components/schemas/CustomFormTextSingleSelectFieldResponseDumpSchema",
            "USER": "#/components/schemas/CustomFormUserFieldResponseDumpSchema",
            "VENDOR": "#/components/schemas/CustomFormVendorFieldResponseDumpSchema"
          },
          "propertyName": "field_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/CustomFormAddressFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormBooleanFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormContactFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormDateFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormDepartmentFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormEmailFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormFileUploadFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormLinkFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormMerchantCategoryFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormMerchantFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormMonetaryAmountFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormNumberFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormParagraphFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormTextFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormTextMultiSelectFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormTextSingleSelectFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormUserFieldResponseDumpSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormVendorFieldResponseDumpSchema"
          }
        ]
      },
      "CustomFormFieldResponseWrapperDumpSchemaV2": {
        "properties": {
          "allowed_dynamic_user_group_uuids": {
            "default": null,
            "description": "Dynamic user groups whose members may be selected for this field.",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "title": "Allowed Dynamic User Group Uuids",
            "type": "array"
          },
          "allowed_users": {
            "default": null,
            "description": "Eligible users resolved for this form. Null applies no additional restriction; an empty list means no eligible users.",
            "items": {
              "$ref": "#/components/schemas/UserValueDumpSchema"
            },
            "nullable": true,
            "title": "Allowed Users",
            "type": "array"
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/RampDocumentSchema"
            },
            "title": "Attachments",
            "type": "array"
          },
          "conditions": {
            "$ref": "#/components/schemas/CustomFormConditionWithActions",
            "nullable": true
          },
          "description": {
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "exclude_from_ai_prefill": {
            "default": false,
            "description": "When True, AI intake/document prefill never generates an answer for this field.",
            "title": "Exclude From Ai Prefill",
            "type": "boolean"
          },
          "field": {
            "$ref": "#/components/schemas/CustomFormFieldResponseDumpSchemaV2"
          },
          "field_id": {
            "title": "Field Id",
            "type": "string"
          },
          "field_mapping_references": {
            "description": "Integration field mappings that reference this question.",
            "items": {
              "$ref": "#/components/schemas/QuestionFieldMappingReference"
            },
            "title": "Field Mapping References",
            "type": "array"
          },
          "global_library_field_id": {
            "default": null,
            "nullable": true,
            "title": "Global Library Field Id",
            "type": "string"
          },
          "is_mapped_to_ironclad_field": {
            "default": false,
            "title": "Is Mapped To Ironclad Field",
            "type": "boolean"
          },
          "is_used_in_approval_workflow_approval_step": {
            "default": false,
            "description": "Whether an approval step selects its approver from this field.",
            "title": "Is Used In Approval Workflow Approval Step",
            "type": "boolean"
          },
          "is_used_in_approval_workflow_condition": {
            "default": false,
            "description": "Broad compatibility flag for fields used in approval conditions or approval steps.",
            "title": "Is Used In Approval Workflow Condition",
            "type": "boolean"
          },
          "is_used_in_custom_form_workflow_condition": {
            "default": false,
            "title": "Is Used In Custom Form Workflow Condition",
            "type": "boolean"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "required": {
            "title": "Required",
            "type": "boolean"
          },
          "required_if_conditions": {
            "$ref": "#/components/schemas/CustomFormConditionWithActions",
            "default": null,
            "description": "Conditions that make this field required when they evaluate to true.",
            "nullable": true
          },
          "short_title": {
            "default": null,
            "description": "Optional concise title copied from a Global Question Library field.",
            "nullable": true,
            "title": "Short Title",
            "type": "string"
          },
          "validation_errors": {
            "items": {
              "$ref": "#/components/schemas/CustomFormFieldValidationErrorSchemaV2"
            },
            "title": "Validation Errors",
            "type": "array"
          },
          "value_display_string": {
            "nullable": true,
            "readOnly": true,
            "title": "Value Display String",
            "type": "string"
          }
        },
        "required": [
          "conditions",
          "description",
          "field",
          "field_id",
          "label",
          "required",
          "value_display_string"
        ],
        "title": "CustomFormFieldResponseWrapperDumpSchemaV2",
        "type": "object"
      },
      "CustomFormFieldSchemaV2": {
        "discriminator": {
          "mapping": {
            "ADDRESS": "#/components/schemas/CustomFormAddressFieldSchema",
            "BOOLEAN": "#/components/schemas/CustomFormBooleanFieldSchema",
            "CONTACT": "#/components/schemas/CustomFormContactFieldSchema",
            "DATE": "#/components/schemas/CustomFormDateFieldSchema",
            "DEPARTMENT": "#/components/schemas/CustomFormDepartmentFieldSchema",
            "EMAIL": "#/components/schemas/CustomFormEmailFieldSchema",
            "FILE_UPLOAD": "#/components/schemas/CustomFormFileUploadFieldSchema",
            "LINK": "#/components/schemas/CustomFormLinkFieldSchema",
            "MERCHANT": "#/components/schemas/CustomFormMerchantFieldSchema",
            "MERCHANT_CATEGORY": "#/components/schemas/CustomFormMerchantCategoryFieldSchema",
            "MONETARY_AMOUNT": "#/components/schemas/CustomFormMonetaryAmountFieldSchema",
            "NUMBER": "#/components/schemas/CustomFormNumberFieldSchema",
            "PARAGRAPH": "#/components/schemas/CustomFormParagraphFieldSchema",
            "TEXT": "#/components/schemas/CustomFormTextFieldSchema",
            "TEXT_MULTI_SELECT": "#/components/schemas/CustomFormTextMultiSelectFieldSchema",
            "TEXT_SINGLE_SELECT": "#/components/schemas/CustomFormTextSingleSelectFieldSchema",
            "USER": "#/components/schemas/CustomFormUserFieldSchema",
            "VENDOR": "#/components/schemas/CustomFormVendorFieldSchema"
          },
          "propertyName": "field_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/CustomFormAddressFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormBooleanFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormContactFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormDateFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormDepartmentFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormEmailFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormFileUploadFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormLinkFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormMerchantCategoryFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormMerchantFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormMonetaryAmountFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormNumberFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormParagraphFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormTextFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormTextMultiSelectFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormTextSingleSelectFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormUserFieldSchema"
          },
          {
            "$ref": "#/components/schemas/CustomFormVendorFieldSchema"
          }
        ]
      },
      "CustomFormFieldValidationErrorSchemaV2": {
        "properties": {
          "message": {
            "title": "Message",
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "title": "CustomFormFieldValidationErrorSchemaV2",
        "type": "object"
      },
      "CustomFormFieldWrapperDumpSchema": {
        "properties": {
          "allowed_dynamic_user_group_uuids": {
            "default": null,
            "description": "Dynamic user groups whose members may be selected for this field.",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "title": "Allowed Dynamic User Group Uuids",
            "type": "array"
          },
          "allowed_users": {
            "default": null,
            "description": "Eligible users resolved for this form. Null applies no additional restriction; an empty list means no eligible users.",
            "items": {
              "$ref": "#/components/schemas/UserValueDumpSchema"
            },
            "nullable": true,
            "title": "Allowed Users",
            "type": "array"
          },
          "answer_filter_workflow_definition": {
            "$ref": "#/components/schemas/CustomFormEffectWorkflowDefinitionSchema",
            "default": null,
            "description": "Workflow definition that conditionally filters this field's choices.",
            "nullable": true
          },
          "attachments": {
            "items": {
              "$ref": "#/components/schemas/RampDocumentSchema"
            },
            "title": "Attachments",
            "type": "array"
          },
          "conditions": {
            "$ref": "#/components/schemas/CustomFormConditionWithActions",
            "nullable": true
          },
          "default_answer_workflow_definition": {
            "$ref": "#/components/schemas/CustomFormEffectWorkflowDefinitionSchema",
            "default": null,
            "description": "Workflow definition that conditionally defaults this field's answer.",
            "nullable": true
          },
          "description": {
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "disclaimer": {
            "nullable": true,
            "title": "Disclaimer",
            "type": "string"
          },
          "document_category": {
            "$ref": "#/components/schemas/PayeeDocumentCategory",
            "default": null,
            "nullable": true
          },
          "exclude_from_ai_prefill": {
            "default": false,
            "description": "When True, AI intake/document prefill never generates an answer for this field.",
            "title": "Exclude From Ai Prefill",
            "type": "boolean"
          },
          "field": {
            "$ref": "#/components/schemas/CustomFormFieldSchemaV2"
          },
          "field_id": {
            "title": "Field Id",
            "type": "string"
          },
          "field_mapping_references": {
            "description": "Integration field mappings that reference this question.",
            "items": {
              "$ref": "#/components/schemas/QuestionFieldMappingReference"
            },
            "title": "Field Mapping References",
            "type": "array"
          },
          "global_library_field_id": {
            "default": null,
            "nullable": true,
            "title": "Global Library Field Id",
            "type": "string"
          },
          "is_mapped_to_ironclad_field": {
            "default": false,
            "title": "Is Mapped To Ironclad Field",
            "type": "boolean"
          },
          "is_used_in_approval_workflow_approval_step": {
            "default": false,
            "description": "Whether an approval step selects its approver from this field.",
            "title": "Is Used In Approval Workflow Approval Step",
            "type": "boolean"
          },
          "is_used_in_approval_workflow_condition": {
            "default": false,
            "description": "Broad compatibility flag for fields used in approval conditions or approval steps.",
            "title": "Is Used In Approval Workflow Condition",
            "type": "boolean"
          },
          "is_used_in_custom_form_workflow_condition": {
            "default": false,
            "title": "Is Used In Custom Form Workflow Condition",
            "type": "boolean"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "required": {
            "title": "Required",
            "type": "boolean"
          },
          "required_if_conditions": {
            "$ref": "#/components/schemas/CustomFormConditionWithActions",
            "default": null,
            "description": "Conditions that make this field required when they evaluate to true.",
            "nullable": true
          },
          "short_title": {
            "default": null,
            "description": "Optional concise title copied from a Global Question Library field.",
            "nullable": true,
            "title": "Short Title",
            "type": "string"
          }
        },
        "required": [
          "conditions",
          "description",
          "disclaimer",
          "field",
          "field_id",
          "label",
          "required"
        ],
        "title": "CustomFormFieldWrapperDumpSchema",
        "type": "object"
      },
      "CustomFormFileUploadFieldResponseDumpSchema": {
        "properties": {
          "allowed_file_types": {
            "default": null,
            "items": {
              "$ref": "#/components/schemas/Filetype"
            },
            "nullable": true,
            "title": "Allowed File Types",
            "type": "array"
          },
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "document_category": {
            "$ref": "#/components/schemas/PayeeDocumentCategory",
            "default": null,
            "nullable": true
          },
          "field_type": {
            "enum": [
              "FILE_UPLOAD"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormFileUploadMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "items": {
              "$ref": "#/components/schemas/FileValueDumpSchema"
            },
            "nullable": true,
            "title": "Value",
            "type": "array"
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormFileUploadFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormFileUploadFieldSchema": {
        "properties": {
          "allowed_file_types": {
            "default": null,
            "items": {
              "$ref": "#/components/schemas/Filetype"
            },
            "nullable": true,
            "title": "Allowed File Types",
            "type": "array"
          },
          "document_category": {
            "$ref": "#/components/schemas/PayeeDocumentCategory",
            "default": null,
            "nullable": true
          },
          "field_type": {
            "enum": [
              "FILE_UPLOAD"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormFileUploadMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormFileUploadFieldSchema",
        "type": "object"
      },
      "CustomFormFileUploadMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PURCHASE_ORDER__ATTACHMENTS": "#/components/schemas/PurchaseOrderAttachmentsMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PurchaseOrderAttachmentsMappedFieldSchema"
          }
        ]
      },
      "CustomFormLinkFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "LINK"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormLinkMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "$ref": "#/components/schemas/StringValueSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormLinkFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormLinkFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "LINK"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormLinkMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormLinkFieldSchema",
        "type": "object"
      },
      "CustomFormLinkMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PAYEE__CUSTOM_RECORDS": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          }
        ]
      },
      "CustomFormMappingMetadataRestrictionControlType": {
        "enum": [
          "ALLOWLIST",
          "BLOCKLIST"
        ],
        "title": "CustomFormMappingMetadataRestrictionControlType",
        "type": "string"
      },
      "CustomFormMerchantCategoryFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "MERCHANT_CATEGORY"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "discriminator": {
                "mapping": {
                  "SPEND_ALLOCATION__MERCHANT_CATEGORY_RESTRICTIONS": "#/components/schemas/SpendAllocationMerchantCategoryRestrictionsMappedFieldResponseSchema",
                  "SPEND_ALLOCATION__MERCHANT_CATEGORY_RESTRICTIONS_ALLOWLIST": "#/components/schemas/SpendAllocationMerchantCategoryRestrictionsAllowListMappedFieldSchema",
                  "SPEND_ALLOCATION__MERCHANT_CATEGORY_RESTRICTIONS_BLOCKLIST": "#/components/schemas/SpendAllocationMerchantCategoryRestrictionsBlockListMappedFieldSchema"
                },
                "propertyName": "mapped_field"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/SpendAllocationMerchantCategoryRestrictionsAllowListMappedFieldSchema"
                },
                {
                  "$ref": "#/components/schemas/SpendAllocationMerchantCategoryRestrictionsBlockListMappedFieldSchema"
                },
                {
                  "$ref": "#/components/schemas/SpendAllocationMerchantCategoryRestrictionsMappedFieldResponseSchema"
                }
              ]
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "items": {
              "$ref": "#/components/schemas/MerchantCategoryValueDumpSchema"
            },
            "nullable": true,
            "title": "Value",
            "type": "array"
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormMerchantCategoryFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormMerchantCategoryFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "MERCHANT_CATEGORY"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormMerchantCategoryMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormMerchantCategoryFieldSchema",
        "type": "object"
      },
      "CustomFormMerchantCategoryMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "SPEND_ALLOCATION__MERCHANT_CATEGORY_RESTRICTIONS": "#/components/schemas/SpendAllocationMerchantCategoryRestrictionsMappedFieldSchema",
            "SPEND_ALLOCATION__MERCHANT_CATEGORY_RESTRICTIONS_ALLOWLIST": "#/components/schemas/SpendAllocationMerchantCategoryRestrictionsAllowListMappedFieldSchema",
            "SPEND_ALLOCATION__MERCHANT_CATEGORY_RESTRICTIONS_BLOCKLIST": "#/components/schemas/SpendAllocationMerchantCategoryRestrictionsBlockListMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/SpendAllocationMerchantCategoryRestrictionsAllowListMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/SpendAllocationMerchantCategoryRestrictionsBlockListMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/SpendAllocationMerchantCategoryRestrictionsMappedFieldSchema"
          }
        ]
      },
      "CustomFormMerchantFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "MERCHANT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "discriminator": {
                "mapping": {
                  "SPEND_ALLOCATION__MERCHANT_RESTRICTIONS": "#/components/schemas/SpendAllocationMerchantRestrictionsMappedFieldResponseSchema",
                  "SPEND_ALLOCATION__MERCHANT_RESTRICTIONS_ALLOWLIST": "#/components/schemas/SpendAllocationMerchantRestrictionsAllowListMappedFieldSchema",
                  "SPEND_ALLOCATION__MERCHANT_RESTRICTIONS_BLOCKLIST": "#/components/schemas/SpendAllocationMerchantRestrictionsBlockListMappedFieldSchema"
                },
                "propertyName": "mapped_field"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/SpendAllocationMerchantRestrictionsAllowListMappedFieldSchema"
                },
                {
                  "$ref": "#/components/schemas/SpendAllocationMerchantRestrictionsBlockListMappedFieldSchema"
                },
                {
                  "$ref": "#/components/schemas/SpendAllocationMerchantRestrictionsMappedFieldResponseSchema"
                }
              ]
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "items": {
              "$ref": "#/components/schemas/MerchantValueDumpSchema"
            },
            "nullable": true,
            "title": "Value",
            "type": "array"
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormMerchantFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormMerchantFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "MERCHANT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormMerchantMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormMerchantFieldSchema",
        "type": "object"
      },
      "CustomFormMerchantMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "SPEND_ALLOCATION__MERCHANT_RESTRICTIONS": "#/components/schemas/SpendAllocationMerchantRestrictionsMappedFieldSchema",
            "SPEND_ALLOCATION__MERCHANT_RESTRICTIONS_ALLOWLIST": "#/components/schemas/SpendAllocationMerchantRestrictionsAllowListMappedFieldSchema",
            "SPEND_ALLOCATION__MERCHANT_RESTRICTIONS_BLOCKLIST": "#/components/schemas/SpendAllocationMerchantRestrictionsBlockListMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/SpendAllocationMerchantRestrictionsAllowListMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/SpendAllocationMerchantRestrictionsBlockListMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/SpendAllocationMerchantRestrictionsMappedFieldSchema"
          }
        ]
      },
      "CustomFormMonetaryAmountFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "MONETARY_AMOUNT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormMonetaryAmountMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "$ref": "#/components/schemas/MonetaryAmountValueSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormMonetaryAmountFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormMonetaryAmountFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "MONETARY_AMOUNT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormMonetaryAmountMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormMonetaryAmountFieldSchema",
        "type": "object"
      },
      "CustomFormMonetaryAmountMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PAYEE__CUSTOM_RECORDS": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          }
        ]
      },
      "CustomFormNumberFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "NUMBER"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormNumberMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "$ref": "#/components/schemas/DecimalValueSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormNumberFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormNumberFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "NUMBER"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormNumberMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormNumberFieldSchema",
        "type": "object"
      },
      "CustomFormNumberMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PAYEE__CUSTOM_RECORDS": "#/components/schemas/PayeeCustomRecordMappedFieldSchema",
            "PAYEE__NET_PAYMENT_TERMS": "#/components/schemas/PayeeNetPaymentTermsMappedFieldSchema",
            "PURCHASE_ORDER__NET_PAYMENT_TERMS": "#/components/schemas/PurchaseOrderNetPaymentTermsMappedFieldSchema",
            "SPEND_ALLOCATION__EXPENSE_AMOUNT_LIMIT": "#/components/schemas/SpendAllocationExpenseAmountLimitMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PayeeNetPaymentTermsMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderNetPaymentTermsMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/SpendAllocationExpenseAmountLimitMappedFieldSchema"
          }
        ]
      },
      "CustomFormParagraphFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "PARAGRAPH"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormParagraphMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "$ref": "#/components/schemas/StringValueSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormParagraphFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormParagraphFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "PARAGRAPH"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormParagraphMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormParagraphFieldSchema",
        "type": "object"
      },
      "CustomFormParagraphMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PAYEE__CUSTOM_RECORDS": "#/components/schemas/PayeeCustomRecordMappedFieldSchema",
            "PAYEE__DESCRIPTION": "#/components/schemas/PayeeDescriptionMappedFieldSchema",
            "PURCHASE_ORDER__MEMO": "#/components/schemas/PurchaseOrderMemoMappedFieldSchema",
            "REQUEST_REASON": "#/components/schemas/RequestReasonMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PayeeDescriptionMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderMemoMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/RequestReasonMappedFieldSchema"
          }
        ]
      },
      "CustomFormResponseDumpSchemaV2": {
        "properties": {
          "conditions": {
            "$ref": "#/components/schemas/CustomFormConditionWithActions",
            "nullable": true
          },
          "description": {
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormFieldResponseWrapperDumpSchemaV2"
            },
            "title": "Fields",
            "type": "array"
          },
          "label": {
            "nullable": true,
            "title": "Label",
            "type": "string"
          },
          "section_id": {
            "title": "Section Id",
            "type": "string"
          },
          "uuid": {
            "title": "Uuid",
            "type": "string"
          }
        },
        "required": [
          "conditions",
          "description",
          "fields",
          "label",
          "section_id",
          "uuid"
        ],
        "title": "CustomFormResponseDumpSchemaV2",
        "type": "object"
      },
      "CustomFormStringFieldChoiceDumpSchema": {
        "properties": {
          "value": {
            "$ref": "#/components/schemas/StringValueSchema"
          },
          "value_id": {
            "title": "Value Id",
            "type": "string"
          }
        },
        "required": [
          "value",
          "value_id"
        ],
        "title": "CustomFormStringFieldChoiceDumpSchema",
        "type": "object"
      },
      "CustomFormTextFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "TEXT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormTextMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "$ref": "#/components/schemas/StringValueSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormTextFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormTextFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "TEXT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormTextMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormTextFieldSchema",
        "type": "object"
      },
      "CustomFormTextMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PAYEE__CUSTOM_RECORDS": "#/components/schemas/PayeeCustomRecordMappedFieldSchema",
            "PURCHASE_ORDER__CUSTOM_FIELD": "#/components/schemas/PurchaseOrderCustomFieldMappedFieldSchema",
            "REQUEST_NAME": "#/components/schemas/RequestNameMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderCustomFieldMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/RequestNameMappedFieldSchema"
          }
        ]
      },
      "CustomFormTextMultiSelectFieldResponseDumpSchema": {
        "properties": {
          "choices": {
            "items": {
              "$ref": "#/components/schemas/CustomFormStringFieldChoiceDumpSchema"
            },
            "title": "Choices",
            "type": "array"
          },
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "TEXT_MULTI_SELECT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormTextMultiSelectMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "items": {
              "$ref": "#/components/schemas/StringValueSchema"
            },
            "nullable": true,
            "title": "Value",
            "type": "array"
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormTextMultiSelectFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormTextMultiSelectFieldSchema": {
        "properties": {
          "choices": {
            "items": {
              "$ref": "#/components/schemas/CustomFormStringFieldChoiceDumpSchema"
            },
            "title": "Choices",
            "type": "array"
          },
          "field_type": {
            "enum": [
              "TEXT_MULTI_SELECT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormTextMultiSelectMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormTextMultiSelectFieldSchema",
        "type": "object"
      },
      "CustomFormTextMultiSelectMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PAYEE__CUSTOM_RECORDS": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          }
        ]
      },
      "CustomFormTextSingleSelectFieldResponseDumpSchema": {
        "properties": {
          "choices": {
            "items": {
              "$ref": "#/components/schemas/CustomFormStringFieldChoiceDumpSchema"
            },
            "title": "Choices",
            "type": "array"
          },
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "TEXT_SINGLE_SELECT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormTextSingleSelectMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          },
          "value": {
            "$ref": "#/components/schemas/StringValueSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormTextSingleSelectFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormTextSingleSelectFieldSchema": {
        "properties": {
          "choices": {
            "items": {
              "$ref": "#/components/schemas/CustomFormStringFieldChoiceDumpSchema"
            },
            "title": "Choices",
            "type": "array"
          },
          "field_type": {
            "enum": [
              "TEXT_SINGLE_SELECT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "mapped_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFormTextSingleSelectMappedFieldSchema"
            },
            "title": "Mapped Fields",
            "type": "array"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormTextSingleSelectFieldSchema",
        "type": "object"
      },
      "CustomFormTextSingleSelectMappedFieldSchema": {
        "discriminator": {
          "mapping": {
            "PAYEE__CUSTOM_RECORDS": "#/components/schemas/PayeeCustomRecordMappedFieldSchema",
            "PURCHASE_ORDER__CUSTOM_FIELD": "#/components/schemas/PurchaseOrderCustomFieldMappedFieldSchema"
          },
          "propertyName": "mapped_field"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PayeeCustomRecordMappedFieldSchema"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderCustomFieldMappedFieldSchema"
          }
        ]
      },
      "CustomFormUserFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "description": "Optional comment supplied with the field response.",
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "description": "Field type discriminator for a user selection field.",
            "enum": [
              "USER"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/UserValueDumpSchema",
            "description": "Selected user, or null when no user was selected.",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormUserFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormUserFieldSchema": {
        "properties": {
          "field_type": {
            "description": "Field type discriminator for a user selection field.",
            "enum": [
              "USER"
            ],
            "title": "Field Type",
            "type": "string"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormUserFieldSchema",
        "type": "object"
      },
      "CustomFormVendorFieldResponseDumpSchema": {
        "properties": {
          "comment": {
            "default": null,
            "nullable": true,
            "title": "Comment",
            "type": "string"
          },
          "field_type": {
            "enum": [
              "VENDOR"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/VendorValueDumpSchema",
            "nullable": true
          }
        },
        "required": [
          "field_type",
          "value"
        ],
        "title": "CustomFormVendorFieldResponseDumpSchema",
        "type": "object"
      },
      "CustomFormVendorFieldSchema": {
        "properties": {
          "field_type": {
            "enum": [
              "VENDOR"
            ],
            "title": "Field Type",
            "type": "string"
          }
        },
        "required": [
          "field_type"
        ],
        "title": "CustomFormVendorFieldSchema",
        "type": "object"
      },
      "CustomRecordBooleanColumnType": {
        "properties": {
          "type": {
            "default": "boolean",
            "enum": [
              "boolean"
            ],
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "CustomRecordCustomReferenceColumnType": {
        "properties": {
          "cardinality": {
            "description": "The cardinality of the referencing column",
            "enum": [
              "many_to_many",
              "many_to_one",
              "one_to_many",
              "one_to_one"
            ],
            "type": "string"
          },
          "corresponding_column_id": {
            "default": null,
            "description": "The column in the referenced table that corresponds to the referencing column. This is null for forward-only reference columns.",
            "nullable": true,
            "type": "string"
          },
          "table_display_name": {
            "description": "The display name of the referenced table",
            "type": "string"
          },
          "table_id": {
            "description": "The unique identifier for the referenced table",
            "type": "string"
          },
          "table_name": {
            "description": "The API name of the custom table that is referenced",
            "type": "string"
          },
          "type": {
            "default": "custom_reference",
            "enum": [
              "custom_reference"
            ],
            "type": "string"
          }
        },
        "required": [
          "cardinality",
          "corresponding_column_id",
          "table_display_name",
          "table_id",
          "table_name",
          "type"
        ],
        "type": "object"
      },
      "CustomRecordDatetimeColumnType": {
        "properties": {
          "display_type": {
            "enum": [
              "date"
            ],
            "type": "string"
          },
          "type": {
            "default": "datetime",
            "enum": [
              "datetime"
            ],
            "type": "string"
          }
        },
        "required": [
          "display_type",
          "type"
        ],
        "type": "object"
      },
      "CustomRecordNativeReferenceColumnType": {
        "properties": {
          "cardinality": {
            "description": "The cardinality of the referencing column",
            "enum": [
              "many_to_many",
              "many_to_one",
              "one_to_many",
              "one_to_one"
            ],
            "type": "string"
          },
          "corresponding_column_id": {
            "default": null,
            "description": "The column in the referenced table that corresponds to the referencing column. This is null for forward-only reference columns.",
            "nullable": true,
            "type": "string"
          },
          "table_id": {
            "description": "The unique identifier for the referenced table",
            "type": "string"
          },
          "table_name": {
            "description": "The native Ramp table that is referenced",
            "enum": [
              "accounting_field_options",
              "approver_groups",
              "bills",
              "business_entities",
              "cards",
              "contracts",
              "departments",
              "external_attendees",
              "limits",
              "locations",
              "merchant_categories",
              "purchase_order_line_items",
              "purchase_orders",
              "reimbursements",
              "transactions",
              "users",
              "vendors"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "accounting_field_options": "An accounting field value, such as a GL account or class.",
              "approver_groups": "A group of users that can collectively approve a request.",
              "bills": "A vendor bill.",
              "business_entities": "A legal entity of the business.",
              "cards": "A physical or virtual card.",
              "contracts": "A vendor contract.",
              "departments": "A business department.",
              "external_attendees": "An expense attendee who is not a user in the business.",
              "limits": "A spend limit, also known as a fund.",
              "locations": "A business location.",
              "merchant_categories": "A merchant category, such as Airlines or Restaurants.",
              "purchase_order_line_items": "A purchase order line item.",
              "purchase_orders": "A purchase order.",
              "reimbursements": "An expense reimbursement.",
              "transactions": "A card transaction.",
              "users": "A user in the business.",
              "vendors": "A vendor."
            }
          },
          "tracking_category": {
            "$ref": "#/components/schemas/TrackingCategoryMetadata",
            "default": null,
            "description": "Metadata about the tracking category when referencing accounting_field_options",
            "nullable": true
          },
          "type": {
            "default": "native_reference",
            "enum": [
              "native_reference"
            ],
            "type": "string"
          }
        },
        "required": [
          "cardinality",
          "corresponding_column_id",
          "table_id",
          "table_name",
          "tracking_category",
          "type"
        ],
        "type": "object"
      },
      "CustomRecordNumberColumnType": {
        "properties": {
          "display_type": {
            "enum": [
              "currency",
              "number",
              "percentage"
            ],
            "type": "string"
          },
          "type": {
            "default": "number",
            "enum": [
              "number"
            ],
            "type": "string"
          }
        },
        "required": [
          "display_type",
          "type"
        ],
        "type": "object"
      },
      "CustomRecordTextColumnType": {
        "properties": {
          "display_type": {
            "enum": [
              "email",
              "numeric_id",
              "paragraph",
              "phone",
              "plain_text",
              "url"
            ],
            "type": "string"
          },
          "type": {
            "default": "text",
            "enum": [
              "text"
            ],
            "type": "string"
          }
        },
        "required": [
          "display_type",
          "type"
        ],
        "type": "object"
      },
      "CustomRecordsQueryAndClauseAdapterRequestBody": {
        "$ref": "#/components/schemas/CustomRecordsQueryAndClauseRequestBody",
        "title": "CustomRecordsQueryAndClauseAdapter"
      },
      "CustomRecordsQueryAndClauseRequestBody": {
        "properties": {
          "filters": {
            "items": {
              "discriminator": {
                "mapping": {
                  "and": "#/components/schemas/CustomRecordsQueryAndClauseRequestBody",
                  "filter": "#/components/schemas/RowQueryFilterRequestBody",
                  "or": "#/components/schemas/CustomRecordsQueryOrClauseRequestBody"
                },
                "propertyName": "type"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CustomRecordsQueryAndClauseRequestBody"
                },
                {
                  "$ref": "#/components/schemas/CustomRecordsQueryOrClauseRequestBody"
                },
                {
                  "$ref": "#/components/schemas/RowQueryFilterRequestBody"
                }
              ]
            },
            "title": "Filters",
            "type": "array"
          },
          "type": {
            "enum": [
              "and"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "filters"
        ],
        "title": "CustomRecordsQueryAndClause",
        "type": "object"
      },
      "CustomRecordsQueryOrClauseRequestBody": {
        "properties": {
          "filters": {
            "items": {
              "discriminator": {
                "mapping": {
                  "and": "#/components/schemas/CustomRecordsQueryAndClauseRequestBody",
                  "filter": "#/components/schemas/RowQueryFilterRequestBody",
                  "or": "#/components/schemas/CustomRecordsQueryOrClauseRequestBody"
                },
                "propertyName": "type"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CustomRecordsQueryAndClauseRequestBody"
                },
                {
                  "$ref": "#/components/schemas/CustomRecordsQueryOrClauseRequestBody"
                },
                {
                  "$ref": "#/components/schemas/RowQueryFilterRequestBody"
                }
              ]
            },
            "title": "Filters",
            "type": "array"
          },
          "type": {
            "enum": [
              "or"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "filters"
        ],
        "title": "CustomRecordsQueryOrClause",
        "type": "object"
      },
      "CustomRowColumnContentsByColumnNameRequestBody": {
        "properties": {
          "cells": {
            "description": "The contents of the cells in the row. The column name should be the name of the column, and the contents should be the value to insert into the cell. When setting a cell to reference many rows, each reference must be a separate entry in the list.",
            "items": {
              "$ref": "#/components/schemas/ColumnNameAndContentsRequestBody"
            },
            "title": "Cells",
            "type": "array"
          },
          "external_key": {
            "description": "The external key of the row.",
            "title": "External Key",
            "type": "string"
          }
        },
        "required": [
          "cells",
          "external_key"
        ],
        "title": "CustomRowColumnContentsByColumnName",
        "type": "object"
      },
      "CustomRowDataWithLoadedReferences": {
        "example": {
          "cells": [
            {
              "column_display_name": "Country",
              "column_id": "<column_id>",
              "value": {
                "has_more": false,
                "rows": [
                  {
                    "display_name": "USA",
                    "external_key": "USA",
                    "row_id": "<row_id>",
                    "type": "custom_table"
                  }
                ],
                "table_name": "countries",
                "type": "custom_table"
              }
            },
            {
              "column_display_name": "Regional Director",
              "column_id": "<column_id>",
              "value": {
                "has_more": false,
                "rows": [
                  {
                    "display_name": "John Doe",
                    "external_key": "<existing_ramp_user_uuid>",
                    "row_id": "<row_id>",
                    "type": "native_table"
                  }
                ],
                "table_name": "users",
                "type": "native_table"
              }
            },
            {
              "column_display_name": "States",
              "column_id": "<column_id>",
              "value": {
                "has_more": true,
                "rows": [
                  {
                    "display_name": "Arizona",
                    "external_key": "Arizona",
                    "row_id": "<row_id>",
                    "type": "custom_table"
                  },
                  {
                    "display_name": "California",
                    "external_key": "California",
                    "row_id": "<row_id>",
                    "type": "custom_table"
                  },
                  {
                    "display_name": "New Jersey",
                    "external_key": "New Jersey",
                    "row_id": "<row_id>",
                    "type": "custom_table"
                  },
                  {
                    "display_name": "New York",
                    "external_key": "New York",
                    "row_id": "<row_id>",
                    "type": "custom_table"
                  },
                  {
                    "display_name": "Texas",
                    "external_key": "Texas",
                    "row_id": "<row_id>",
                    "type": "custom_table"
                  }
                ],
                "table_name": "states",
                "type": "custom_table"
              }
            }
          ],
          "external_key": "Northeast",
          "id": "<row_id>"
        },
        "properties": {
          "cells": {
            "description": "The contents of each column for this row.",
            "items": {
              "$ref": "#/components/schemas/CustomCellOutputWithLoadedReferences"
            },
            "type": "array"
          },
          "display_name": {
            "description": "A display name for the custom row.",
            "type": "string"
          },
          "external_key": {
            "description": "The external key of the custom row. Will be unique within the table.",
            "type": "string"
          },
          "id": {
            "description": "The id of the custom row",
            "type": "string"
          }
        },
        "required": [
          "cells",
          "display_name",
          "external_key",
          "id"
        ],
        "type": "object"
      },
      "CustomRowExternalKeyRequestBody": {
        "properties": {
          "external_key": {
            "title": "External Key",
            "type": "string"
          }
        },
        "required": [
          "external_key"
        ],
        "title": "CustomRowExternalKey",
        "type": "object"
      },
      "CustomTableReferenceCellContentsForDisplay": {
        "properties": {
          "has_more": {
            "description": "Indicates if there are more rows in the table than are included in this response",
            "type": "boolean"
          },
          "rows": {
            "description": "The rows referenced by this cell",
            "items": {
              "$ref": "#/components/schemas/CustomTableRowForDisplay"
            },
            "type": "array"
          },
          "table_name": {
            "description": "The custom table that referenced rows are part of",
            "type": "string"
          },
          "type": {
            "enum": [
              "custom_table"
            ],
            "type": "string"
          }
        },
        "required": [
          "has_more",
          "rows",
          "table_name",
          "type"
        ],
        "type": "object"
      },
      "CustomTableReferenceRequestBody": {
        "example": {
          "table_name": "business_regions",
          "type": "custom_table"
        },
        "properties": {
          "table_name": {
            "description": "The name of the custom table",
            "type": "string"
          },
          "type": {
            "default": "custom_table",
            "enum": [
              "custom_table"
            ],
            "type": "string"
          }
        },
        "required": [
          "table_name"
        ],
        "type": "object"
      },
      "CustomTableReferenceUsingLabelAndName": {
        "example": {
          "table_label": "Teams",
          "table_name": "teams",
          "type": "custom_table"
        },
        "properties": {
          "table_label": {
            "description": "The custom table's label as displayed in Ramp",
            "type": "string"
          },
          "table_name": {
            "description": "The custom table's API name",
            "type": "string"
          },
          "type": {
            "default": "custom_table",
            "enum": [
              "custom_table"
            ],
            "type": "string"
          }
        },
        "required": [
          "table_label",
          "table_name",
          "type"
        ],
        "type": "object"
      },
      "CustomTableReferenceUsingLabelAndNameRequestBody": {
        "example": {
          "table_label": "Teams",
          "table_name": "teams",
          "type": "custom_table"
        },
        "properties": {
          "table_label": {
            "description": "The custom table's label as displayed in Ramp",
            "type": "string"
          },
          "table_name": {
            "description": "The custom table's API name",
            "type": "string"
          },
          "type": {
            "default": "custom_table",
            "enum": [
              "custom_table"
            ],
            "type": "string"
          }
        },
        "required": [
          "table_label",
          "table_name"
        ],
        "type": "object"
      },
      "CustomTableRowForDisplay": {
        "properties": {
          "display_name": {
            "type": "string"
          },
          "external_key": {
            "description": "The external key of the row",
            "type": "string"
          },
          "row_id": {
            "description": "The id of the row",
            "type": "string"
          },
          "type": {
            "default": "custom_table",
            "enum": [
              "custom_table"
            ],
            "type": "string"
          }
        },
        "required": [
          "display_name",
          "external_key",
          "row_id",
          "type"
        ],
        "type": "object"
      },
      "DatetimeCellContentsForDisplay": {
        "properties": {
          "display_name": {
            "type": "string"
          },
          "type": {
            "enum": [
              "date"
            ],
            "type": "string"
          },
          "value": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "display_name",
          "type",
          "value"
        ],
        "type": "object"
      },
      "DecimalValueSchema": {
        "properties": {
          "value": {
            "title": "Value",
            "type": "number"
          }
        },
        "required": [
          "value"
        ],
        "title": "DecimalValueSchema",
        "type": "object"
      },
      "DefaultPaymentMethodAddressPolicy": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ApiAddressResource"
          },
          "kind": {
            "enum": [
              "ADDRESS"
            ],
            "type": "string"
          }
        },
        "required": [
          "data",
          "kind"
        ],
        "type": "object"
      },
      "DefaultPaymentMethodBankAccountPolicy": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ApiVendorBankAccountResource"
          },
          "kind": {
            "enum": [
              "BANK_ACCOUNT"
            ],
            "type": "string"
          }
        },
        "required": [
          "data",
          "kind"
        ],
        "type": "object"
      },
      "DefaultPaymentMethodCardPolicy": {
        "properties": {
          "card_payment_method": {
            "enum": [
              "ACH",
              "AUTOMATIC_CARD_PAYMENT",
              "CARD",
              "CHECK",
              "CRYPTO_WALLET_TRANSFER",
              "DIRECT_DEBIT",
              "DOMESTIC_WIRE",
              "EARLY_PAYMENT_DISCOUNT",
              "FED_NOW",
              "INTERNATIONAL",
              "LOCAL_BANK_TRANSFER",
              "ONE_TIME_CARD",
              "ONE_TIME_CARD_DELIVERY",
              "PAID_MANUALLY",
              "RTP",
              "SWIFT",
              "UNSPECIFIED",
              "VENDOR_CREDIT"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ACH": "A US ACH bank transfer.",
              "AUTOMATIC_CARD_PAYMENT": "A card payment that Ramp automatically initiates for the bill.",
              "CARD": "A payment made with an existing Ramp card.",
              "CHECK": "A paper check payment mailed to the vendor.",
              "CRYPTO_WALLET_TRANSFER": "A transfer to a cryptocurrency wallet.",
              "DIRECT_DEBIT": "A direct debit from a Ramp account.",
              "DOMESTIC_WIRE": "A US domestic wire transfer.",
              "EARLY_PAYMENT_DISCOUNT": "A noncash contribution from an early payment discount.",
              "FED_NOW": "An instant FedNow bank transfer.",
              "INTERNATIONAL": "An international bank transfer.",
              "LOCAL_BANK_TRANSFER": "A local bank transfer in a non-USD currency.",
              "ONE_TIME_CARD": "A single-use card payment where the business user pays the vendor directly.",
              "ONE_TIME_CARD_DELIVERY": "A single-use card payment where Ramp sends card details to the vendor contact.",
              "PAID_MANUALLY": "A payment recorded as paid outside of Ramp.",
              "RTP": "A real-time payment bank transfer.",
              "SWIFT": "An international USD-denominated SWIFT bank transfer.",
              "UNSPECIFIED": "No payment method has been selected.",
              "VENDOR_CREDIT": "A payment satisfied with vendor credit."
            }
          },
          "kind": {
            "enum": [
              "CARD"
            ],
            "type": "string"
          }
        },
        "required": [
          "card_payment_method",
          "kind"
        ],
        "type": "object"
      },
      "DefaultPaymentMethodDirectDebitPolicy": {
        "properties": {
          "kind": {
            "description": "The vendor's default payment policy type.",
            "enum": [
              "DIRECT_DEBIT"
            ],
            "type": "string"
          },
          "payment_method": {
            "description": "The direct debit payment method for this vendor.",
            "enum": [
              "ACH",
              "AUTOMATIC_CARD_PAYMENT",
              "CARD",
              "CHECK",
              "CRYPTO_WALLET_TRANSFER",
              "DIRECT_DEBIT",
              "DOMESTIC_WIRE",
              "EARLY_PAYMENT_DISCOUNT",
              "FED_NOW",
              "INTERNATIONAL",
              "LOCAL_BANK_TRANSFER",
              "ONE_TIME_CARD",
              "ONE_TIME_CARD_DELIVERY",
              "PAID_MANUALLY",
              "RTP",
              "SWIFT",
              "UNSPECIFIED",
              "VENDOR_CREDIT"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ACH": "A US ACH bank transfer.",
              "AUTOMATIC_CARD_PAYMENT": "A card payment that Ramp automatically initiates for the bill.",
              "CARD": "A payment made with an existing Ramp card.",
              "CHECK": "A paper check payment mailed to the vendor.",
              "CRYPTO_WALLET_TRANSFER": "A transfer to a cryptocurrency wallet.",
              "DIRECT_DEBIT": "A direct debit from a Ramp account.",
              "DOMESTIC_WIRE": "A US domestic wire transfer.",
              "EARLY_PAYMENT_DISCOUNT": "A noncash contribution from an early payment discount.",
              "FED_NOW": "An instant FedNow bank transfer.",
              "INTERNATIONAL": "An international bank transfer.",
              "LOCAL_BANK_TRANSFER": "A local bank transfer in a non-USD currency.",
              "ONE_TIME_CARD": "A single-use card payment where the business user pays the vendor directly.",
              "ONE_TIME_CARD_DELIVERY": "A single-use card payment where Ramp sends card details to the vendor contact.",
              "PAID_MANUALLY": "A payment recorded as paid outside of Ramp.",
              "RTP": "A real-time payment bank transfer.",
              "SWIFT": "An international USD-denominated SWIFT bank transfer.",
              "UNSPECIFIED": "No payment method has been selected.",
              "VENDOR_CREDIT": "A payment satisfied with vendor credit."
            }
          }
        },
        "required": [
          "kind",
          "payment_method"
        ],
        "type": "object"
      },
      "DefaultPaymentMethodPolicy": {
        "discriminator": {
          "mapping": {
            "ADDRESS": "#/components/schemas/DefaultPaymentMethodAddressPolicy",
            "BANK_ACCOUNT": "#/components/schemas/DefaultPaymentMethodBankAccountPolicy",
            "CARD": "#/components/schemas/DefaultPaymentMethodCardPolicy",
            "DIRECT_DEBIT": "#/components/schemas/DefaultPaymentMethodDirectDebitPolicy"
          },
          "propertyName": "kind"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/DefaultPaymentMethodAddressPolicy"
          },
          {
            "$ref": "#/components/schemas/DefaultPaymentMethodBankAccountPolicy"
          },
          {
            "$ref": "#/components/schemas/DefaultPaymentMethodCardPolicy"
          },
          {
            "$ref": "#/components/schemas/DefaultPaymentMethodDirectDebitPolicy"
          }
        ]
      },
      "DefaultPaymentMethodResource": {
        "properties": {
          "policy": {
            "$ref": "#/components/schemas/DefaultPaymentMethodPolicy",
            "nullable": true
          },
          "update_source": {
            "enum": [
              "AUTO",
              "MANUAL"
            ],
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "DeferredTaskUUID": {
        "properties": {
          "id": {
            "description": "ID of the deferred task.",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "DeleteCellsResponse": {
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/NumDeleted"
          }
        },
        "required": [
          "metadata"
        ],
        "title": "DeleteCellsResponse",
        "type": "object"
      },
      "DeleteCustomRowRequestBody": {
        "example": {
          "data": [
            {
              "external_key": "Northeast"
            },
            {
              "external_key": "Southwest"
            }
          ]
        },
        "properties": {
          "data": {
            "description": "List of the external keys of rows to delete.",
            "items": {
              "$ref": "#/components/schemas/CustomRowExternalKeyRequestBody"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "DeleteCustomRow",
        "type": "object"
      },
      "DeleteCustomRowResponse": {
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/NumDeleted"
          }
        },
        "required": [
          "metadata"
        ],
        "title": "DeleteCustomRowResponse",
        "type": "object"
      },
      "DeleteRenewalDenialReason": {
        "enum": [
          "APPROVED_REQUEST",
          "PENDING_REQUEST",
          "REJECTED_REQUEST"
        ],
        "title": "DeleteRenewalDenialReason",
        "type": "string"
      },
      "Department": {
        "example": {
          "id": "c16b6ee1-2f5d-45e9-9fb4-c1c541a9ea70",
          "name": "Bookkeeping"
        },
        "properties": {
          "id": {
            "description": "Unique identifier for the department.",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "Name of the department.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "x-resource-name": "departments"
      },
      "DepartmentDisplay": {
        "properties": {
          "department_name": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "department_name",
          "id"
        ],
        "type": "object"
      },
      "DepartmentValueDumpSchema": {
        "properties": {
          "department_name": {
            "title": "Department Name",
            "type": "string"
          },
          "department_uuid": {
            "title": "Department Uuid",
            "type": "string"
          }
        },
        "required": [
          "department_name",
          "department_uuid"
        ],
        "title": "DepartmentValueDumpSchema",
        "type": "object"
      },
      "DevApiCreateReferenceColumnArgsRequestBody": {
        "example": {
          "cardinality": "many_to_one",
          "corresponding_column_label": "Members",
          "corresponding_column_name": "members",
          "foreign_table": {
            "table_name": "cost_center",
            "type": "custom_table"
          }
        },
        "properties": {
          "cardinality": {
            "description": "The cardinality of the reference.",
            "enum": [
              "many_to_many",
              "many_to_one"
            ],
            "type": "string"
          },
          "corresponding_column_label": {
            "default": null,
            "description": "The label of the corresponding column. Providing either corresponding column field opts into creating an archived backref column; omitted fields are generated only when a backref is created.",
            "nullable": true,
            "type": "string"
          },
          "corresponding_column_name": {
            "default": null,
            "description": "The API name of the corresponding column. Providing either corresponding column field opts into creating an archived backref column; omitted fields are generated only when a backref is created.",
            "nullable": true,
            "type": "string"
          },
          "foreign_table": {
            "description": "The table that this column references.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomTableReferenceRequestBody"
              },
              {
                "$ref": "#/components/schemas/NativeTableReferenceRequestBody"
              }
            ]
          }
        },
        "required": [
          "cardinality",
          "foreign_table"
        ],
        "type": "object"
      },
      "DeveloperAPICountedPage": {
        "description": "Pagination details for a Developer API response, with an optional total count.",
        "example": {
          "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>",
          "total_count": 2412,
          "total_count_capped": false
        },
        "properties": {
          "next": {
            "description": "the query to get to the next page; it is in the format of <BASE_URL>?<new_params>",
            "nullable": true,
            "type": "string"
          },
          "total_count": {
            "description": "Total number of results matching the query, at most 10,000. Null when include_count is not set, or when the count could not be computed in time.",
            "nullable": true,
            "type": "integer"
          },
          "total_count_capped": {
            "description": "Whether more than 10,000 results match, in which case total_count is 10,000. Null whenever total_count is null.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "required": [
          "next",
          "total_count",
          "total_count_capped"
        ],
        "type": "object"
      },
      "DeveloperAPINestedPage": {
        "description": "Pagination details for a Developer API response.",
        "example": {
          "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
        },
        "properties": {
          "next": {
            "description": "the query to get to the next page; it is in the format of <BASE_URL>?<new_params>",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "next"
        ],
        "type": "object"
      },
      "DeveloperApiAddResultColumnResponse": {
        "description": "Response for adding a result column to a Matrix table.",
        "example": {
          "column_id": "<UUID>"
        },
        "properties": {
          "column_id": {
            "description": "ID of the created result column",
            "title": "Column Id",
            "type": "string"
          }
        },
        "required": [
          "column_id"
        ],
        "title": "DeveloperApiAddResultColumnResponse",
        "type": "object"
      },
      "DeveloperApiCreateCustomRecordColumnRequestBody": {
        "discriminator": {
          "mapping": {
            "boolean": "#/components/schemas/DeveloperApiCreatePrimitiveColumnRequestBody",
            "custom_reference": "#/components/schemas/DeveloperApiCreateReferenceColumnRequestBody",
            "native_reference": "#/components/schemas/DeveloperApiCreateReferenceColumnRequestBody",
            "number": "#/components/schemas/DeveloperApiCreatePrimitiveColumnRequestBody",
            "text": "#/components/schemas/DeveloperApiCreatePrimitiveColumnRequestBody"
          },
          "propertyName": "column_type_name"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/DeveloperApiCreatePrimitiveColumnRequestBody"
          },
          {
            "$ref": "#/components/schemas/DeveloperApiCreateReferenceColumnRequestBody"
          }
        ]
      },
      "DeveloperApiCreateMatrixTableRequestBody": {
        "description": "Schema for creating a Matrix table (Developer API).",
        "example": {
          "input_columns": [
            {
              "column_type": {
                "table_name": "departments",
                "type": "native_table"
              },
              "label": "Department",
              "name": "department"
            }
          ],
          "label": "Approval Matrix",
          "name": "approval_matrix",
          "result_columns": [
            {
              "cardinality": "many_to_one",
              "label": "Approver",
              "name": "approver",
              "native_table": {
                "table_name": "users",
                "type": "native_table"
              }
            }
          ]
        },
        "properties": {
          "input_columns": {
            "description": "Input columns that define the Matrix dimensions (references or number)",
            "items": {
              "$ref": "#/components/schemas/DeveloperApiMatrixInputColumnDefRequestBody"
            },
            "title": "Input Columns",
            "type": "array"
          },
          "label": {
            "description": "Display name for the Matrix table",
            "title": "Label",
            "type": "string"
          },
          "name": {
            "default": null,
            "description": "API name for the table",
            "nullable": true,
            "title": "Name",
            "type": "string"
          },
          "result_columns": {
            "description": "Result columns that store Matrix outputs",
            "items": {
              "$ref": "#/components/schemas/DeveloperApiMatrixResultColumnDefRequestBody"
            },
            "title": "Result Columns",
            "type": "array"
          }
        },
        "required": [
          "input_columns",
          "label",
          "result_columns"
        ],
        "title": "DeveloperApiCreateMatrixTable",
        "type": "object"
      },
      "DeveloperApiCreateMatrixTableResponse": {
        "description": "Response for creating a Matrix table.",
        "example": {
          "table_id": "<UUID>"
        },
        "properties": {
          "table_id": {
            "description": "ID of the created Matrix table",
            "title": "Table Id",
            "type": "string"
          }
        },
        "required": [
          "table_id"
        ],
        "title": "DeveloperApiCreateMatrixTableResponse",
        "type": "object"
      },
      "DeveloperApiCreatePrimitiveColumnRequestBody": {
        "example": {
          "column_type_name": "text",
          "label": "Project Name",
          "name": "project_name"
        },
        "properties": {
          "column_type_name": {
            "description": "The type of the primitive column.",
            "enum": [
              "boolean",
              "number",
              "text"
            ],
            "type": "string"
          },
          "label": {
            "description": "The display name of the column",
            "type": "string"
          },
          "name": {
            "description": "The API name of the column, to be used when writing to this column",
            "type": "string"
          }
        },
        "required": [
          "column_type_name",
          "label",
          "name"
        ],
        "type": "object"
      },
      "DeveloperApiCreateReferenceColumnRequestBody": {
        "example": {
          "column_type_name": "custom_reference",
          "label": "Cost Center",
          "name": "cost_center",
          "reference_args": {
            "cardinality": "many_to_one",
            "corresponding_column_label": "Members",
            "corresponding_column_name": "members",
            "foreign_table": {
              "table_name": "cost_center",
              "type": "custom_table"
            }
          }
        },
        "properties": {
          "column_type_name": {
            "description": "The type of the reference column.",
            "enum": [
              "custom_reference",
              "native_reference"
            ],
            "type": "string"
          },
          "label": {
            "description": "The display name of the column",
            "type": "string"
          },
          "name": {
            "description": "The API name of the column, to be used when writing to this column",
            "type": "string"
          },
          "reference_args": {
            "$ref": "#/components/schemas/DevApiCreateReferenceColumnArgsRequestBody",
            "description": "Arguments for creating a reference column."
          }
        },
        "required": [
          "column_type_name",
          "label",
          "name",
          "reference_args"
        ],
        "type": "object"
      },
      "DeveloperApiCustomRecordColumn": {
        "example": {
          "allows_writes": true,
          "display_name": "Country",
          "id": "<column_id>",
          "name": "country",
          "type": "custom_reference"
        },
        "properties": {
          "allows_writes": {
            "description": "Whether the column can be directly written to. Columns not directly written to have values derived from columns that reference them.",
            "type": "boolean"
          },
          "display_name": {
            "description": "The display name of the column",
            "type": "string"
          },
          "id": {
            "description": "The unique identifier for the column",
            "type": "string"
          },
          "name": {
            "description": "The name of the column, to be used when writing to this column",
            "type": "string"
          },
          "type": {
            "description": "The type of the column",
            "oneOf": [
              {
                "$ref": "#/components/schemas/CustomRecordBooleanColumnType"
              },
              {
                "$ref": "#/components/schemas/CustomRecordCustomReferenceColumnType"
              },
              {
                "$ref": "#/components/schemas/CustomRecordDatetimeColumnType"
              },
              {
                "$ref": "#/components/schemas/CustomRecordNativeReferenceColumnType"
              },
              {
                "$ref": "#/components/schemas/CustomRecordNumberColumnType"
              },
              {
                "$ref": "#/components/schemas/CustomRecordTextColumnType"
              }
            ]
          }
        },
        "required": [
          "allows_writes",
          "display_name",
          "id",
          "name",
          "type"
        ],
        "type": "object"
      },
      "DeveloperApiError": {
        "properties": {
          "additional_info": {
            "additionalProperties": true,
            "description": "Structured details specific to this error.",
            "type": "object"
          },
          "error_code": {
            "description": "Stable machine-readable error code.",
            "type": "string"
          },
          "error_id": {
            "description": "8 hex digit error identifier",
            "type": "string"
          },
          "message": {
            "description": "Human-readable explanation of the error.",
            "type": "string"
          },
          "notes": {
            "description": "Optional additional context about the error.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "additional_info",
          "error_code",
          "error_id",
          "message",
          "notes"
        ],
        "type": "object"
      },
      "DeveloperApiErrorResponse": {
        "additionalProperties": true,
        "properties": {
          "error_v2": {
            "$ref": "#/components/schemas/DeveloperApiError",
            "description": "Structured Developer API error payload."
          }
        },
        "required": [
          "error_v2"
        ],
        "type": "object"
      },
      "DeveloperApiListMatrixTablesResponse": {
        "description": "Response for listing Matrix tables.",
        "example": {
          "data": [
            {
              "id": "<UUID>",
              "input_columns": [
                {
                  "display_name": "Department",
                  "id": "<UUID>",
                  "name": "department",
                  "type": {
                    "column_type": "native_reference",
                    "native_table": {
                      "accounting_field_ramp_id": null,
                      "table_name": "departments",
                      "type": "native_table"
                    }
                  }
                }
              ],
              "label": "Approval Matrix",
              "name": "approval_matrix",
              "result_columns": [
                {
                  "display_name": "Approver",
                  "id": "<UUID>",
                  "name": "approver",
                  "type": {
                    "cardinality": "many_to_one",
                    "column_type": "native_reference",
                    "native_table": {
                      "accounting_field_ramp_id": null,
                      "table_name": "users",
                      "type": "native_table"
                    }
                  }
                }
              ]
            }
          ]
        },
        "properties": {
          "data": {
            "description": "List of Matrix tables",
            "items": {
              "$ref": "#/components/schemas/DeveloperApiMatrixTableInfo"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "DeveloperApiListMatrixTablesResponse",
        "type": "object"
      },
      "DeveloperApiMatrixAppendMetadata": {
        "example": {
          "cells_appended": 1
        },
        "properties": {
          "cells_appended": {
            "description": "Number of cells appended",
            "title": "Cells Appended",
            "type": "integer"
          }
        },
        "required": [
          "cells_appended"
        ],
        "title": "DeveloperApiMatrixAppendMetadata",
        "type": "object"
      },
      "DeveloperApiMatrixColumnFilterRequestBody": {
        "description": "Filter for a specific Matrix input column.",
        "example": {
          "column_name": "department",
          "one_of": [
            "<UUID>",
            "<UUID>"
          ]
        },
        "properties": {
          "column_name": {
            "description": "API name of the input column to filter on",
            "title": "Column Name",
            "type": "string"
          },
          "one_of": {
            "description": "List of ramp object UUIDs to filter by (matches any)",
            "items": {
              "type": "string"
            },
            "title": "One Of",
            "type": "array"
          }
        },
        "required": [
          "column_name",
          "one_of"
        ],
        "title": "DeveloperApiMatrixColumnFilter",
        "type": "object"
      },
      "DeveloperApiMatrixInputColumnDefRequestBody": {
        "description": "Schema for defining a Matrix input column (Developer API).",
        "example": {
          "column_type": {
            "table_name": "departments",
            "type": "native_table"
          },
          "label": "Department",
          "name": "department"
        },
        "properties": {
          "column_type": {
            "description": "Defines the type of input field used by the matrix",
            "oneOf": [
              {
                "$ref": "#/components/schemas/DeveloperApiNativeTableReferenceRequestBody"
              },
              {
                "$ref": "#/components/schemas/DeveloperApiNumberColumnTypeRequestBody"
              }
            ],
            "title": "Column Type"
          },
          "label": {
            "description": "Display name for the input column",
            "title": "Label",
            "type": "string"
          },
          "name": {
            "default": null,
            "description": "API name for the column",
            "nullable": true,
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "column_type",
          "label"
        ],
        "title": "DeveloperApiMatrixInputColumnDef",
        "type": "object"
      },
      "DeveloperApiMatrixInputColumnInfo": {
        "description": "Info about a Matrix input column for Developer API (uses UUIDs).",
        "example": {
          "display_name": "Department",
          "id": "<UUID>",
          "name": "department",
          "type": {
            "column_type": "native_reference",
            "native_table": {
              "accounting_field_ramp_id": null,
              "table_name": "departments",
              "type": "native_table"
            }
          }
        },
        "properties": {
          "display_name": {
            "description": "Display name",
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "description": "Column ID",
            "title": "Id",
            "type": "string"
          },
          "name": {
            "description": "API name",
            "title": "Name",
            "type": "string"
          },
          "type": {
            "description": "Column type details (native_reference or number)",
            "oneOf": [
              {
                "$ref": "#/components/schemas/DeveloperApiMatrixInputColumnTypeNativeReference"
              },
              {
                "$ref": "#/components/schemas/DeveloperApiMatrixInputColumnTypeNumber"
              }
            ],
            "title": "Type"
          }
        },
        "required": [
          "display_name",
          "id",
          "name",
          "type"
        ],
        "title": "DeveloperApiMatrixInputColumnInfo",
        "type": "object"
      },
      "DeveloperApiMatrixInputColumnTypeNativeReference": {
        "description": "Type info for native reference Matrix input columns (Developer API).",
        "example": {
          "column_type": "native_reference",
          "native_table": {
            "accounting_field_ramp_id": null,
            "table_name": "departments",
            "type": "native_table"
          }
        },
        "properties": {
          "column_type": {
            "default": "native_reference",
            "description": "Column type discriminator",
            "enum": [
              "native_reference"
            ],
            "title": "Column Type",
            "type": "string"
          },
          "native_table": {
            "$ref": "#/components/schemas/DeveloperApiNativeTableReference"
          }
        },
        "required": [
          "native_table"
        ],
        "title": "DeveloperApiMatrixInputColumnTypeNativeReference",
        "type": "object"
      },
      "DeveloperApiMatrixInputColumnTypeNumber": {
        "description": "Type info for number Matrix input columns (Developer API).",
        "example": {
          "column_type": "number"
        },
        "properties": {
          "column_type": {
            "default": "number",
            "description": "Column type discriminator",
            "enum": [
              "number"
            ],
            "title": "Column Type",
            "type": "string"
          }
        },
        "title": "DeveloperApiMatrixInputColumnTypeNumber",
        "type": "object"
      },
      "DeveloperApiMatrixPageInfo": {
        "example": {
          "next": "<UUID>"
        },
        "properties": {
          "next": {
            "description": "Cursor for next page (row ID to pass as start parameter)",
            "nullable": true,
            "title": "Next",
            "type": "string"
          }
        },
        "required": [
          "next"
        ],
        "title": "DeveloperApiMatrixPageInfo",
        "type": "object"
      },
      "DeveloperApiMatrixRemoveMetadata": {
        "example": {
          "cells_removed": 1
        },
        "properties": {
          "cells_removed": {
            "description": "Number of cells removed",
            "title": "Cells Removed",
            "type": "integer"
          }
        },
        "required": [
          "cells_removed"
        ],
        "title": "DeveloperApiMatrixRemoveMetadata",
        "type": "object"
      },
      "DeveloperApiMatrixResultColumnDefRequestBody": {
        "description": "Schema for defining a Matrix result column (Developer API).",
        "example": {
          "cardinality": "many_to_one",
          "label": "Approver",
          "name": "approver",
          "native_table": {
            "table_name": "users",
            "type": "native_table"
          }
        },
        "properties": {
          "cardinality": {
            "$ref": "#/components/schemas/PydanticCardinalityEnumRequestBody",
            "description": "many_to_one or many_to_many for the result column"
          },
          "label": {
            "description": "Display name for the result column",
            "title": "Label",
            "type": "string"
          },
          "name": {
            "default": null,
            "description": "API name for the column",
            "nullable": true,
            "title": "Name",
            "type": "string"
          },
          "native_table": {
            "$ref": "#/components/schemas/DeveloperApiResultNativeTableReferenceRequestBody",
            "description": "The native table this result references (only users, approver_groups, and accounting_field_options supported)"
          }
        },
        "required": [
          "cardinality",
          "label",
          "native_table"
        ],
        "title": "DeveloperApiMatrixResultColumnDef",
        "type": "object"
      },
      "DeveloperApiMatrixResultColumnInfo": {
        "description": "Info about a Matrix result column for Developer API (uses UUIDs).",
        "example": {
          "display_name": "Approver",
          "id": "<UUID>",
          "name": "approver",
          "type": {
            "cardinality": "many_to_one",
            "column_type": "native_reference",
            "native_table": {
              "accounting_field_ramp_id": null,
              "table_name": "users",
              "type": "native_table"
            }
          }
        },
        "properties": {
          "display_name": {
            "description": "Display name",
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "description": "Column ID",
            "title": "Id",
            "type": "string"
          },
          "name": {
            "description": "API name",
            "title": "Name",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/DeveloperApiMatrixResultColumnTypeNativeReference",
            "description": "Column type details (currently only native_reference)"
          }
        },
        "required": [
          "display_name",
          "id",
          "name",
          "type"
        ],
        "title": "DeveloperApiMatrixResultColumnInfo",
        "type": "object"
      },
      "DeveloperApiMatrixResultColumnTypeNativeReference": {
        "description": "Type info for native reference Matrix result columns (Developer API).",
        "example": {
          "cardinality": "many_to_one",
          "column_type": "native_reference",
          "native_table": {
            "accounting_field_ramp_id": null,
            "table_name": "users",
            "type": "native_table"
          }
        },
        "properties": {
          "cardinality": {
            "$ref": "#/components/schemas/PydanticCardinalityEnum"
          },
          "column_type": {
            "default": "native_reference",
            "description": "Column type discriminator",
            "enum": [
              "native_reference"
            ],
            "title": "Column Type",
            "type": "string"
          },
          "native_table": {
            "$ref": "#/components/schemas/DeveloperApiResultNativeTableReference"
          }
        },
        "required": [
          "cardinality",
          "native_table"
        ],
        "title": "DeveloperApiMatrixResultColumnTypeNativeReference",
        "type": "object"
      },
      "DeveloperApiMatrixTableInfo": {
        "description": "Info about a Matrix table for Developer API (uses UUIDs).",
        "example": {
          "id": "<UUID>",
          "input_columns": [
            {
              "display_name": "Department",
              "id": "<UUID>",
              "name": "department",
              "type": {
                "column_type": "native_reference",
                "native_table": {
                  "accounting_field_ramp_id": null,
                  "table_name": "departments",
                  "type": "native_table"
                }
              }
            }
          ],
          "label": "Approval Matrix",
          "name": "approval_matrix",
          "result_columns": [
            {
              "display_name": "Approver",
              "id": "<UUID>",
              "name": "approver",
              "type": {
                "cardinality": "many_to_one",
                "column_type": "native_reference",
                "native_table": {
                  "accounting_field_ramp_id": null,
                  "table_name": "users",
                  "type": "native_table"
                }
              }
            }
          ]
        },
        "properties": {
          "id": {
            "description": "Table ID",
            "title": "Id",
            "type": "string"
          },
          "input_columns": {
            "description": "Input columns",
            "items": {
              "$ref": "#/components/schemas/DeveloperApiMatrixInputColumnInfo"
            },
            "title": "Input Columns",
            "type": "array"
          },
          "label": {
            "description": "Display name",
            "title": "Label",
            "type": "string"
          },
          "name": {
            "description": "API name",
            "title": "Name",
            "type": "string"
          },
          "result_columns": {
            "description": "Result columns",
            "items": {
              "$ref": "#/components/schemas/DeveloperApiMatrixResultColumnInfo"
            },
            "title": "Result Columns",
            "type": "array"
          }
        },
        "required": [
          "id",
          "input_columns",
          "label",
          "name",
          "result_columns"
        ],
        "title": "DeveloperApiMatrixTableInfo",
        "type": "object"
      },
      "DeveloperApiNativeRowIdentifier": {
        "description": "Identifier for a native Ramp object (e.g., user, department).",
        "example": {
          "column_name": "id",
          "value": "<UUID>"
        },
        "properties": {
          "column_name": {
            "description": "Column name to identify by (e.g., 'id', 'email')",
            "title": "Column Name",
            "type": "string"
          },
          "value": {
            "description": "Value for identification",
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "column_name",
          "value"
        ],
        "title": "DeveloperApiNativeRowIdentifier",
        "type": "object"
      },
      "DeveloperApiNativeRowIdentifierRequestBody": {
        "description": "Identifier for a native Ramp object (e.g., user, department).",
        "example": {
          "column_name": "id",
          "value": "<UUID>"
        },
        "properties": {
          "column_name": {
            "description": "Column name to identify by (e.g., 'id', 'email')",
            "title": "Column Name",
            "type": "string"
          },
          "value": {
            "description": "Value for identification",
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "column_name",
          "value"
        ],
        "title": "DeveloperApiNativeRowIdentifier",
        "type": "object"
      },
      "DeveloperApiNativeTableReference": {
        "description": "Native table reference for Developer API input columns.\n\nAllows: users, locations, departments, business_entities, accounting_field_options, vendors,\nand merchant_categories.",
        "example": {
          "accounting_field_ramp_id": null,
          "table_name": "departments",
          "type": "native_table"
        },
        "properties": {
          "accounting_field_ramp_id": {
            "default": null,
            "description": "The accounting field's ramp_id (UUID), only set for accounting_field_options",
            "nullable": true,
            "title": "Accounting Field Ramp Id",
            "type": "string"
          },
          "table_name": {
            "description": "The native table name for input columns: users, locations, departments, business_entities, accounting_field_options, vendors, merchant_categories.",
            "enum": [
              "accounting_field_options",
              "business_entities",
              "departments",
              "locations",
              "merchant_categories",
              "users",
              "vendors"
            ],
            "title": "Table Name",
            "type": "string",
            "x-enum-descriptions": {
              "merchant_categories": "A merchant category, such as Airlines or Restaurants. Identify rows by category name or by Ramp category code.",
              "vendors": "A vendor (payee) that can be paid."
            }
          },
          "type": {
            "default": "native_table",
            "enum": [
              "native_table"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "table_name"
        ],
        "title": "DeveloperApiNativeTableReference",
        "type": "object"
      },
      "DeveloperApiNativeTableReferenceRequestBody": {
        "description": "Native table reference for Developer API input columns.\n\nAllows: users, locations, departments, business_entities, accounting_field_options, vendors,\nand merchant_categories.",
        "example": {
          "accounting_field_ramp_id": null,
          "table_name": "departments",
          "type": "native_table"
        },
        "properties": {
          "accounting_field_ramp_id": {
            "default": null,
            "description": "The accounting field's ramp_id (UUID), only set for accounting_field_options",
            "nullable": true,
            "title": "Accounting Field Ramp Id",
            "type": "string"
          },
          "table_name": {
            "description": "The native table name for input columns: users, locations, departments, business_entities, accounting_field_options, vendors, merchant_categories.",
            "enum": [
              "accounting_field_options",
              "business_entities",
              "departments",
              "locations",
              "merchant_categories",
              "users",
              "vendors"
            ],
            "title": "Table Name",
            "type": "string",
            "x-enum-descriptions": {
              "merchant_categories": "A merchant category, such as Airlines or Restaurants. Identify rows by category name or by Ramp category code.",
              "vendors": "A vendor (payee) that can be paid."
            }
          },
          "type": {
            "default": "native_table",
            "enum": [
              "native_table"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "table_name"
        ],
        "title": "DeveloperApiNativeTableReference",
        "type": "object"
      },
      "DeveloperApiNumberColumnTypeRequestBody": {
        "description": "Number column type for Developer API input columns.",
        "example": {
          "type": "number"
        },
        "properties": {
          "type": {
            "default": "number",
            "description": "Column type discriminator",
            "enum": [
              "number"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "title": "DeveloperApiNumberColumnType",
        "type": "object"
      },
      "DeveloperApiNumberIdentifier": {
        "description": "Identifier for a number value in Matrix input columns.",
        "example": {
          "value": 1000
        },
        "properties": {
          "value": {
            "description": "Numeric value (e.g., amount threshold)",
            "title": "Value",
            "type": "number"
          }
        },
        "required": [
          "value"
        ],
        "title": "DeveloperApiNumberIdentifier",
        "type": "object"
      },
      "DeveloperApiResultNativeTableReference": {
        "description": "Native table reference for Developer API result columns.\n\nOnly allows: users, approver_groups, and accounting_field_options.",
        "example": {
          "accounting_field_ramp_id": null,
          "table_name": "users",
          "type": "native_table"
        },
        "properties": {
          "accounting_field_ramp_id": {
            "default": null,
            "description": "The accounting field's ramp_id (UUID), only set for accounting_field_options",
            "nullable": true,
            "title": "Accounting Field Ramp Id",
            "type": "string"
          },
          "table_name": {
            "description": "The native table name for result columns: users, approver_groups, or accounting_field_options only.",
            "enum": [
              "accounting_field_options",
              "approver_groups",
              "users"
            ],
            "title": "Table Name",
            "type": "string",
            "x-enum-descriptions": {
              "accounting_field_options": "Accounting field options for use in filtering or coding rules",
              "approver_groups": "A user group whose members will be allowed to approve a request.",
              "users": "A group of users that can collectively approve a request."
            }
          },
          "type": {
            "default": "native_table",
            "enum": [
              "native_table"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "table_name"
        ],
        "title": "DeveloperApiResultNativeTableReference",
        "type": "object"
      },
      "DeveloperApiResultNativeTableReferenceRequestBody": {
        "description": "Native table reference for Developer API result columns.\n\nOnly allows: users, approver_groups, and accounting_field_options.",
        "example": {
          "accounting_field_ramp_id": null,
          "table_name": "users",
          "type": "native_table"
        },
        "properties": {
          "accounting_field_ramp_id": {
            "default": null,
            "description": "The accounting field's ramp_id (UUID), only set for accounting_field_options",
            "nullable": true,
            "title": "Accounting Field Ramp Id",
            "type": "string"
          },
          "table_name": {
            "description": "The native table name for result columns: users, approver_groups, or accounting_field_options only.",
            "enum": [
              "accounting_field_options",
              "approver_groups",
              "users"
            ],
            "title": "Table Name",
            "type": "string",
            "x-enum-descriptions": {
              "accounting_field_options": "Accounting field options for use in filtering or coding rules",
              "approver_groups": "A user group whose members will be allowed to approve a request.",
              "users": "A group of users that can collectively approve a request."
            }
          },
          "type": {
            "default": "native_table",
            "enum": [
              "native_table"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "table_name"
        ],
        "title": "DeveloperApiResultNativeTableReference",
        "type": "object"
      },
      "DraftBill": {
        "properties": {
          "accounting_date": {
            "description": "The date for the bill for accounting purposes. If not specified, falls back to the bill issue date.",
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the bill.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the bill, represented in the lowest denomination of the currency (e.g., cents for USD).",
            "nullable": true,
            "readOnly": true
          },
          "bill_owner": {
            "$ref": "#/components/schemas/ApiBillOwner",
            "description": "Information about the bill owner.",
            "nullable": true
          },
          "created_at": {
            "description": "The date the bill was created.",
            "format": "date-time",
            "type": "string"
          },
          "due_at": {
            "description": "The date the bill is due.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "entity_id": {
            "description": "Associated business entity.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "inventory_line_items": {
            "description": "List of inventory line items related to the bill.",
            "items": {
              "$ref": "#/components/schemas/ApiDraftBillInventoryLineItem"
            },
            "type": "array"
          },
          "invoice_number": {
            "description": "The invoice number on the bill.",
            "nullable": true,
            "type": "string"
          },
          "invoice_urls": {
            "description": "Pre-signed urls to download invoice files.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "issued_at": {
            "description": "The date the bill was issued on invoice.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "line_items": {
            "description": "List of line items related to the bill.",
            "items": {
              "$ref": "#/components/schemas/ApiDraftBillLineItem"
            },
            "type": "array"
          },
          "memo": {
            "description": "Memo of the bill.",
            "nullable": true,
            "type": "string"
          },
          "posting_date": {
            "description": "The date the bill was posted to the ERP. Alternatively known as accounting date, accounting sync date.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "remote_id": {
            "description": "The external ID that identifies the bill on the client's side.",
            "nullable": true,
            "type": "string"
          },
          "status": {
            "default": "DRAFT",
            "description": "Payment status of the bill. Always DRAFT for provisional bills."
          },
          "sync_status": {
            "default": "NOT_SYNCED",
            "description": "Sync status of the bill. Always NOT_SYNCED for drafts."
          },
          "vendor": {
            "$ref": "#/components/schemas/ApiBillVendor",
            "description": "Vendor information of the bill.",
            "nullable": true
          },
          "vendor_memo": {
            "description": "Memo to the vendor.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "accounting_date",
          "accounting_field_selections",
          "amount",
          "bill_owner",
          "created_at",
          "due_at",
          "entity_id",
          "id",
          "inventory_line_items",
          "invoice_number",
          "invoice_urls",
          "issued_at",
          "line_items",
          "memo",
          "posting_date",
          "remote_id",
          "status",
          "sync_status",
          "vendor",
          "vendor_memo"
        ],
        "type": "object",
        "x-resource-name": "draft_bills"
      },
      "ESignAPIError": {
        "properties": {
          "error_message": {
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "API_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "ESignAPIError",
        "type": "object"
      },
      "ESignAuthenticationError": {
        "properties": {
          "error_message": {
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "AUTHENTICATION_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "ESignAuthenticationError",
        "type": "object"
      },
      "ESignEnvelopeStatus": {
        "enum": [
          "completed",
          "created",
          "declined",
          "delivered",
          "sent",
          "signed",
          "voided"
        ],
        "title": "ESignEnvelopeStatus",
        "type": "string"
      },
      "ESignNodeTask": {
        "properties": {
          "esign_envelope_id": {
            "nullable": true,
            "title": "Esign Envelope Id",
            "type": "string"
          },
          "esign_task_id": {
            "title": "Esign Task Id",
            "type": "string"
          },
          "node_title": {
            "nullable": true,
            "title": "Node Title",
            "type": "string"
          },
          "provider_type": {
            "$ref": "#/components/schemas/ESignProvider"
          },
          "sla_due_date": {
            "default": null,
            "format": "date-time",
            "nullable": true,
            "title": "Sla Due Date",
            "type": "string"
          },
          "sla_duration_in_seconds": {
            "default": null,
            "nullable": true,
            "title": "Sla Duration In Seconds",
            "type": "integer"
          },
          "submitted_at": {
            "format": "date-time",
            "title": "Submitted At",
            "type": "string"
          },
          "task_type": {
            "enum": [
              "LAUNCH_ESIGN_WORKFLOW"
            ],
            "title": "Task Type",
            "type": "string"
          }
        },
        "required": [
          "esign_envelope_id",
          "esign_task_id",
          "node_title",
          "provider_type",
          "submitted_at",
          "task_type"
        ],
        "title": "ESignNodeTask",
        "type": "object"
      },
      "ESignProvider": {
        "enum": [
          "docusign",
          "dropbox_sign"
        ],
        "title": "ESignProvider",
        "type": "string"
      },
      "ESignProviderNotConfiguredError": {
        "properties": {
          "error_type": {
            "enum": [
              "PROVIDER_NOT_CONFIGURED"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "error_type",
          "provider_type"
        ],
        "title": "ESignProviderNotConfiguredError",
        "type": "object"
      },
      "ESignRateLimitError": {
        "properties": {
          "error_message": {
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "RATE_LIMIT_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "ESignRateLimitError",
        "type": "object"
      },
      "ESignSignerStatus": {
        "enum": [
          "completed",
          "created",
          "declined",
          "delivered",
          "sent"
        ],
        "title": "ESignSignerStatus",
        "type": "string"
      },
      "ESignSigners": {
        "properties": {
          "email": {
            "title": "Email",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "recipient_type": {
            "$ref": "#/components/schemas/RecipientType",
            "default": "signer"
          },
          "routing_order": {
            "nullable": true,
            "title": "Routing Order",
            "type": "integer"
          },
          "signed_datetime": {
            "format": "date-time",
            "nullable": true,
            "title": "Signed Datetime",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/ESignSignerStatus"
          }
        },
        "required": [
          "email",
          "name",
          "routing_order",
          "signed_datetime",
          "status"
        ],
        "title": "ESignSigners",
        "type": "object"
      },
      "ESignTriggerEntityMetadata": {
        "properties": {
          "envelope_launcher_user_id": {
            "default": null,
            "nullable": true,
            "title": "Envelope Launcher User Id",
            "type": "integer"
          },
          "envelope_status": {
            "$ref": "#/components/schemas/ESignEnvelopeStatus",
            "default": null,
            "nullable": true
          },
          "error": {
            "$ref": "#/components/schemas/ESignTriggerEntityMetadataError",
            "default": null,
            "nullable": true
          },
          "provider_type": {
            "default": null,
            "nullable": true,
            "title": "Provider Type",
            "type": "string"
          },
          "signers": {
            "items": {
              "$ref": "#/components/schemas/ESignSigners"
            },
            "title": "Signers",
            "type": "array"
          },
          "spend_request_uuid": {
            "default": null,
            "nullable": true,
            "title": "Spend Request Uuid",
            "type": "string"
          },
          "trigger_type": {
            "enum": [
              "LAUNCH_ESIGN_WORKFLOW"
            ],
            "title": "Trigger Type",
            "type": "string"
          }
        },
        "title": "ESignTriggerEntityMetadata",
        "type": "object"
      },
      "ESignTriggerEntityMetadataError": {
        "properties": {
          "error": {
            "discriminator": {
              "mapping": {
                "API_ERROR": "#/components/schemas/ESignAPIError",
                "AUTHENTICATION_ERROR": "#/components/schemas/ESignAuthenticationError",
                "FALLBACK_ERROR": "#/components/schemas/FallbackESignTriggerEntityError",
                "PROVIDER_NOT_CONFIGURED": "#/components/schemas/ESignProviderNotConfiguredError",
                "RATE_LIMIT_ERROR": "#/components/schemas/ESignRateLimitError",
                "VALIDATION_ERROR": "#/components/schemas/ESignValidationError"
              },
              "propertyName": "error_type"
            },
            "oneOf": [
              {
                "$ref": "#/components/schemas/ESignAPIError"
              },
              {
                "$ref": "#/components/schemas/ESignAuthenticationError"
              },
              {
                "$ref": "#/components/schemas/ESignProviderNotConfiguredError"
              },
              {
                "$ref": "#/components/schemas/ESignRateLimitError"
              },
              {
                "$ref": "#/components/schemas/ESignValidationError"
              },
              {
                "$ref": "#/components/schemas/FallbackESignTriggerEntityError"
              }
            ],
            "title": "Error"
          },
          "trigger_type": {
            "default": "LAUNCH_ESIGN_WORKFLOW",
            "enum": [
              "LAUNCH_ESIGN_WORKFLOW"
            ],
            "title": "Trigger Type",
            "type": "string"
          }
        },
        "required": [
          "error",
          "trigger_type"
        ],
        "title": "ESignTriggerEntityMetadataError",
        "type": "object"
      },
      "ESignValidationError": {
        "properties": {
          "error_message": {
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "VALIDATION_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "ESignValidationError",
        "type": "object"
      },
      "EditAccountingMerchantDenialReason": {
        "enum": [
          "archived",
          "matches_payee_vendor",
          "no_payee",
          "no_permission"
        ],
        "title": "EditAccountingMerchantDenialReason",
        "type": "string"
      },
      "EditAgreementDenialReason": {
        "enum": [
          "NOT_CONTRACT_OWNER",
          "NOT_VENDOR_OWNER",
          "NO_PERMISSION"
        ],
        "title": "EditAgreementDenialReason",
        "type": "string"
      },
      "EditLineItemsDenialReason": {
        "enum": [
          "approval_generation_incomplete",
          "archived",
          "no_permission",
          "punchout_order"
        ],
        "title": "EditLineItemsDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "approval_generation_incomplete": "Line items cannot be edited until approval generation succeeds.",
          "archived": "The purchase order has been archived.",
          "no_permission": "The user does not have permission to edit line items for the purchase order.",
          "punchout_order": "Line items on punchout purchase orders cannot be edited in Ramp."
        }
      },
      "EditPrimaryFieldsDenialReason": {
        "enum": [
          "approval_generation_incomplete",
          "archived",
          "fund_request_not_pending",
          "no_permission"
        ],
        "title": "EditPrimaryFieldsDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "approval_generation_incomplete": "The request cannot be edited until approval generation succeeds.",
          "fund_request_not_pending": "Only pending fund requests support editing; finalized fund requests are audit records."
        }
      },
      "EditRequestCoordinatorDenialReason": {
        "enum": [
          "approval_generation_incomplete",
          "archived",
          "no_permission",
          "request_coordinator_disabled"
        ],
        "title": "EditRequestCoordinatorDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "approval_generation_incomplete": "The request coordinator cannot be edited until approval generation succeeds."
        }
      },
      "EditRequestOwnerDenialReason": {
        "enum": [
          "approval_generation_incomplete",
          "archived",
          "is_change_request",
          "no_permission",
          "not_pre_approval",
          "unsupported_request_type"
        ],
        "title": "EditRequestOwnerDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "approval_generation_incomplete": "The owner cannot be changed until approval generation succeeds.",
          "archived": "The request or its purchase order has been archived.",
          "is_change_request": "The owner of a change request cannot be changed.",
          "no_permission": "The user does not have permission to edit this request's owner.",
          "not_pre_approval": "Only draft or submitted requests support owner changes through request PATCH.",
          "unsupported_request_type": "This request type does not support owner changes through request PATCH."
        }
      },
      "EditSecondaryFieldsDenialReason": {
        "enum": [
          "approval_generation_incomplete",
          "archived",
          "no_permission"
        ],
        "title": "EditSecondaryFieldsDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "approval_generation_incomplete": "The request cannot be edited until approval generation succeeds."
        }
      },
      "EmptyObject": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "Entity": {
        "example": {
          "accounting_connection_id": "7de1fa6c-1fe9-432e-83d8-80971a91f903",
          "country": "US",
          "currency": "USD",
          "federal_id_number": "12-3456789",
          "id": "sub-001",
          "is_active": true,
          "name": "US Operations",
          "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the subsidiary/entity is uploaded to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "one-to-many"
            }
          },
          "country": {
            "description": "ISO 3166 alpha-2 country code, if provided on upload.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "currency": {
            "description": "ISO 4217 currency code, if provided on upload.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "federal_id_number": {
            "description": "Tax identification number, if provided on upload.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "description": "Remote/external ID of the subsidiary in the ERP.",
            "type": "string"
          },
          "is_active": {
            "description": "Whether the subsidiary/entity is active.",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the subsidiary/entity.",
            "type": "string"
          },
          "ramp_id": {
            "description": "id to uniquely identify a subsidiary/entity within Ramp system",
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "accounting_connection_id",
          "country",
          "currency",
          "federal_id_number",
          "is_active",
          "name",
          "ramp_id"
        ],
        "type": "object"
      },
      "EntityConnectedSubsidiary": {
        "properties": {
          "external_id": {
            "description": "External ID of the subsidiary in the ERP system",
            "type": "string"
          },
          "id": {
            "description": "ID that uniquely identifies the subsidiary within Ramp",
            "type": "string"
          },
          "name": {
            "description": "Name of the subsidiary in the ERP system",
            "type": "string"
          }
        },
        "required": [
          "external_id",
          "id",
          "name"
        ],
        "type": "object"
      },
      "EntityPaymentAccount": {
        "properties": {
          "account_name": {
            "description": "Display name of the bank account",
            "type": "string"
          },
          "account_number_last_four": {
            "description": "Last four digits of the account number",
            "type": "string"
          },
          "currency": {
            "description": "ISO 4217 currency code of the bank account (e.g. USD, CAD)",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the bank account.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "bank_accounts",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "account_name",
          "account_number_last_four",
          "currency",
          "id"
        ],
        "type": "object"
      },
      "EntityProviderAccount": {
        "properties": {
          "bank_account_id": {
            "description": "Unique identifier of the associated bank account, if exists",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "bank_accounts",
              "type": "many-to-one"
            }
          },
          "classification": {
            "description": "Classification type of the account (Asset, Liability, Equity, etc.).",
            "enum": [
              "ANY",
              "ASSET",
              "CREDCARD",
              "EQUITY",
              "EXPENSE",
              "LIABILITY",
              "REVENUE",
              "UNKNOWN"
            ],
            "type": "string"
          },
          "created_at": {
            "description": "When the account was created.",
            "format": "date-time",
            "type": "string"
          },
          "external_id": {
            "description": "External ID of the account. If connected to a direct integration, this value is sourced from the remote ERP system.",
            "type": "string"
          },
          "external_name": {
            "description": "External name of the account. If connected to a direct integration, this value is sourced from the remote ERP system.",
            "type": "string"
          },
          "internal_id": {
            "description": "Internal ID of the account. This value is entered as the Account ID in Ramp as the unique ID or number assigned by your accounting provider.",
            "type": "string"
          },
          "usage_type": {
            "description": "How the account is used within the system (Cash Account, Expense Account, etc.).",
            "enum": [
              "ACCRUAL_AP_ACCOUNT",
              "ACCRUAL_LIABILITY_ACCOUNT",
              "AR_ACCOUNTS_RECEIVABLE_ACCOUNT",
              "AR_ACH_CREDIT_BANK_ACCOUNT",
              "AR_BAD_DEBT_ACCOUNT",
              "AR_CARD_FEES_ACCOUNT",
              "AR_CASH_ACCOUNT_DEFAULT",
              "AR_CHARGEBACK_CLEARING_ACCOUNT",
              "AR_DEFERRED_REVENUE_ACCOUNT_DEFAULT",
              "AR_INCOME_ACCOUNT_DEFAULT",
              "AR_REFUNDS_CLEARING_ACCOUNT",
              "AR_SALES_TAX_PAYABLE_ACCOUNT",
              "AR_UNBILLED_ACCOUNTS_RECEIVABLE_ACCOUNT",
              "AR_UNDEPOSITED_FUNDS_ACCOUNT",
              "BILL_PAY_ACCOUNTS_PAYABLE_ACCOUNT",
              "BILL_PAY_BANK_ACCOUNT",
              "BILL_PAY_FX_GAIN_LOSS_ACCOUNT",
              "BILL_PAY_RETAINAGE_PAYABLE_ACCOUNT",
              "BOOKKEEPING_AUTOMATION_BANK_ACCOUNT",
              "BOOKKEEPING_AUTOMATION_CLEARING_ACCOUNT",
              "BROKERAGE_ACCOUNT",
              "BROKERAGE_DIVIDEND_ACCOUNT",
              "CARD_LIABILITY_ACCOUNT",
              "CARD_TRANSACTION_BILLS_ACCOUNTS_PAYABLE_ACCOUNT",
              "CASHBACK_ACCOUNT",
              "CASH_ACCOUNT",
              "FIXED_ASSET_ACCUMULATED_IMPAIRMENT_ACCOUNT",
              "FIXED_ASSET_GAIN_ACCOUNT",
              "FIXED_ASSET_IMPAIRMENT_LOSS_ACCOUNT",
              "FIXED_ASSET_LOSS_ACCOUNT",
              "FIXED_ASSET_PROCEEDS_ON_DISPOSAL_ACCOUNT",
              "INTERCOMPANY_ACCOUNTS_PAYABLE_ACCOUNT",
              "INTERCOMPANY_ACCOUNTS_RECEIVABLE_ACCOUNT",
              "INTERCOMPANY_TRANSFER_CLEARING_ACCOUNT",
              "MANAGED_PORTFOLIO_CASH_ACCOUNT",
              "MANAGED_PORTFOLIO_FEE_EXPENSE_ACCOUNT",
              "MANAGED_PORTFOLIO_INTEREST_INCOME_ACCOUNT",
              "MANAGED_PORTFOLIO_POSITION_ASSET_ACCOUNT",
              "MANAGED_PORTFOLIO_REALIZED_GAIN_LOSS_ACCOUNT",
              "MANAGED_PORTFOLIO_UNREALIZED_GAIN_LOSS_ACCOUNT",
              "REIMBURSEMENT_ACCOUNTS_PAYABLE_ACCOUNT",
              "REIMBURSEMENT_BANK_ACCOUNT",
              "TRANSFER_BANK_ACCOUNT",
              "UNDEPOSITED_FUNDS",
              "WALLET_ACCOUNT",
              "WALLET_BANK_ACCOUNT",
              "WALLET_YIELD_ACCOUNT"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "AR_ACH_CREDIT_BANK_ACCOUNT": "Cash account representing the linked bank account that receives ACH credit invoice payments collected through Ramp Accounts Receivable.",
              "AR_DEFERRED_REVENUE_ACCOUNT_DEFAULT": "Default account that holds billed but not yet earned revenue when a product has no deferred revenue account.",
              "AR_SALES_TAX_PAYABLE_ACCOUNT": "Account that tracks AR sales tax collected for remittance.",
              "AR_UNBILLED_ACCOUNTS_RECEIVABLE_ACCOUNT": "Account that holds earned but not yet billed revenue.",
              "BILL_PAY_RETAINAGE_PAYABLE_ACCOUNT": "Liability account holding retainage withheld from bills paid through Ramp Bill Pay until it is released to the vendor.",
              "FIXED_ASSET_ACCUMULATED_IMPAIRMENT_ACCOUNT": "Contra-asset account that tracks accumulated fixed asset impairment.",
              "FIXED_ASSET_IMPAIRMENT_LOSS_ACCOUNT": "Expense account that records fixed asset impairment losses.",
              "FIXED_ASSET_PROCEEDS_ON_DISPOSAL_ACCOUNT": "Account that tracks proceeds received when fixed assets are disposed.",
              "MANAGED_PORTFOLIO_FEE_EXPENSE_ACCOUNT": "Expense account that records customer Managed Portfolio fees."
            }
          }
        },
        "required": [
          "bank_account_id",
          "classification",
          "created_at",
          "external_id",
          "external_name",
          "internal_id",
          "usage_type"
        ],
        "type": "object"
      },
      "EntityReferenceResource": {
        "properties": {
          "label": {
            "description": "Label of the entity reference",
            "type": "string"
          },
          "resource_name": {
            "enum": [
              "Accounting rule group",
              "Approvals",
              "Bill payment",
              "Bill template",
              "Card",
              "Cash Manager recommendation",
              "Fixed asset class",
              "Fixed asset",
              "Forecast custom input",
              "Fund request",
              "Investment account",
              "Legal entity",
              "Managed portfolio transfer",
              "Payment run",
              "Reimbursement",
              "SFTP Configurations",
              "Separation of duties",
              "Spend allocation",
              "Spend event",
              "Spend program",
              "Transaction",
              "Travel (Booking request)",
              "Travel (Trip)",
              "Treasury account",
              "User",
              "Vendor / Merchant",
              "WBX Policy",
              "WBX Request",
              "Wallet automation policy",
              "Wallet transfer",
              "Workflow (Base)",
              "Workflow"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "Accounting rule group": "An accounting rule group.",
              "Cash Manager recommendation": "Cash Manager recommendation",
              "Fixed asset": "Fixed asset",
              "Fixed asset class": "Fixed asset class",
              "Forecast custom input": "Forecast custom input",
              "Investment account": "Investment account",
              "Legal entity": "A business legal entity.",
              "Managed portfolio transfer": "Managed portfolio transfer",
              "Payment run": "Payment run",
              "Spend program": "A spend program.",
              "Wallet automation policy": "A treasury automation policy."
            }
          },
          "url": {
            "description": "URL of the entity reference",
            "type": "string"
          }
        },
        "required": [
          "label",
          "resource_name",
          "url"
        ],
        "type": "object"
      },
      "EvaluatingActionUpdateRequestBody": {
        "properties": {
          "type": {
            "description": "Marks the agreement as evaluating renewal independently of a renewal draft.",
            "enum": [
              "EVALUATING"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "title": "EvaluatingActionUpdate",
        "type": "object"
      },
      "EventDetailsResource": {
        "properties": {
          "references": {
            "description": "Metadata of the objects referenced by the audit log event",
            "items": {
              "$ref": "#/components/schemas/EntityReferenceResource"
            },
            "type": "array"
          }
        },
        "required": [
          "references"
        ],
        "type": "object"
      },
      "ExternalApprovalTriggerEntityMetadata": {
        "properties": {
          "recipients": {
            "items": {
              "$ref": "#/components/schemas/UserResource"
            },
            "title": "Recipients",
            "type": "array"
          },
          "service_key": {
            "default": null,
            "nullable": true,
            "title": "Service Key",
            "type": "string"
          },
          "status": {
            "default": null,
            "nullable": true,
            "title": "Status",
            "type": "string"
          },
          "trigger_type": {
            "enum": [
              "LAUNCH_EXTERNAL_APPROVAL"
            ],
            "title": "Trigger Type",
            "type": "string"
          },
          "url": {
            "default": null,
            "nullable": true,
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "recipients"
        ],
        "title": "ExternalApprovalTriggerEntityMetadata",
        "type": "object"
      },
      "FallbackESignTriggerEntityError": {
        "properties": {
          "error_message": {
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "FALLBACK_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "default": null,
            "nullable": true,
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "FallbackESignTriggerEntityError",
        "type": "object"
      },
      "FallbackIroncladTriggerEntityError": {
        "properties": {
          "error_message": {
            "nullable": true,
            "title": "Error Message",
            "type": "string"
          },
          "error_redirect_url": {
            "nullable": true,
            "title": "Error Redirect Url",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "FALLBACK_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "error_message",
          "error_redirect_url",
          "error_type"
        ],
        "title": "FallbackIroncladTriggerEntityError",
        "type": "object"
      },
      "FallbackThirdPartyRiskManagementTriggerEntityError": {
        "properties": {
          "error_message": {
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "FALLBACK_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "default": null,
            "nullable": true,
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "FallbackThirdPartyRiskManagementTriggerEntityError",
        "type": "object"
      },
      "FallbackTicketingTriggerEntityError": {
        "properties": {
          "error_message": {
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "FALLBACK_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "default": null,
            "nullable": true,
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "FallbackTicketingTriggerEntityError",
        "type": "object"
      },
      "FieldOption": {
        "example": {
          "code": "400-100",
          "display_name": "Salaries & Wages",
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "id": "514",
          "value": "Employees:Salaries & Wages"
        },
        "properties": {
          "code": {
            "description": "Code of the custom accounting field option; e.g. 400-100.",
            "type": "string"
          },
          "display_name": {
            "description": "Set an optional user-facing display name of the custom field option.",
            "type": "string"
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities created through POST /developer/v1/accounting/entities that this custom field option should be available for. Omit this field to make the custom field option available for all connected entities on accounting connections with entity selection enabled.",
            "items": {
              "minLength": 1,
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "id": {
            "description": "Remote/external ID of custom accounting field option from ERP system.",
            "type": "string"
          },
          "value": {
            "description": "e.g. Employees:Salaries & Wages",
            "type": "string"
          }
        },
        "required": [
          "id",
          "value"
        ],
        "type": "object"
      },
      "FieldOptionFilterRuleIdentityParamsRequestBody": {
        "properties": {
          "required_selections": {
            "description": "The set of trigger field option selections that must all be met (AND logic) for the target option to be available. Multiple rules for the same target option use OR logic between them.",
            "items": {
              "$ref": "#/components/schemas/RequiredSelectionParamsRequestBody"
            },
            "minItems": 1,
            "type": "array"
          },
          "target_field_option_remote_id": {
            "description": "The remote ID of the target field option that is conditionally available.",
            "minLength": 1,
            "type": "string"
          },
          "target_field_remote_id": {
            "description": "The remote ID of the target accounting field whose options are filtered.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "required_selections",
          "target_field_option_remote_id",
          "target_field_remote_id"
        ],
        "type": "object"
      },
      "FieldOptionFilterRuleResource": {
        "properties": {
          "required_selections": {
            "description": "The set of trigger field option selections required for the target option to be available.",
            "items": {
              "type": "object"
            },
            "readOnly": true,
            "type": "array"
          },
          "target_field_option_remote_id": {
            "description": "The remote ID of the target field option that is conditionally available.",
            "readOnly": true,
            "type": "string"
          },
          "target_field_remote_id": {
            "description": "The remote ID of the target accounting field whose options are filtered.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "required_selections",
          "target_field_option_remote_id",
          "target_field_remote_id"
        ],
        "type": "object"
      },
      "FieldValueSourceType": {
        "description": "Where an agent-written value came from.",
        "enum": [
          "attachment",
          "email",
          "notion",
          "other",
          "slack",
          "web"
        ],
        "title": "FieldValueSourceType",
        "type": "string",
        "x-enum-descriptions": {
          "attachment": "Taken from an uploaded document or attachment.",
          "email": "Taken from an email.",
          "notion": "Taken from a Notion page.",
          "other": "Taken from a source not covered by the other types.",
          "slack": "Taken from a Slack message or thread.",
          "web": "Taken from a web page or web search result."
        }
      },
      "FileValueDumpSchema": {
        "properties": {
          "displayed_filename": {
            "title": "Displayed Filename",
            "type": "string"
          },
          "document_category": {
            "$ref": "#/components/schemas/PayeeDocumentCategory"
          },
          "file_url": {
            "title": "File Url",
            "type": "string"
          },
          "file_uuid": {
            "title": "File Uuid",
            "type": "string"
          },
          "spend_request_document_uuid": {
            "nullable": true,
            "title": "Spend Request Document Uuid",
            "type": "string"
          },
          "type": {
            "default": "FILE_VALUE",
            "enum": [
              "FILE_VALUE"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "displayed_filename",
          "document_category",
          "file_url",
          "file_uuid",
          "spend_request_document_uuid"
        ],
        "title": "FileValueDumpSchema",
        "type": "object"
      },
      "Filetype": {
        "enum": [
          "base64",
          "csv",
          "doc",
          "docx",
          "eml",
          "gif",
          "gz",
          "heic",
          "html",
          "ics",
          "iif",
          "jpeg",
          "json",
          "jsonl",
          "md",
          "msg",
          "npy",
          "ods",
          "parquet",
          "pdf",
          "pgp",
          "png",
          "ppt",
          "pptx",
          "py",
          "txt",
          "webp",
          "xls",
          "xlsm",
          "xlsx",
          "xml",
          "zip"
        ],
        "title": "Filetype",
        "type": "string",
        "x-enum-descriptions": {
          "ics": "An iCalendar calendar event file.",
          "ppt": "A Microsoft PowerPoint presentation file.",
          "pptx": "A Microsoft PowerPoint Open XML presentation file."
        }
      },
      "FormattedTextDataclass": {
        "properties": {
          "download": {
            "$ref": "#/components/schemas/FormattedTextDownloadDataclass",
            "default": null,
            "nullable": true
          },
          "format_type": {
            "enum": [
              "DOWNLOAD_LINK",
              "EMAIL",
              "ICON",
              "LINK",
              "PHONE",
              "PHONE_STRIKETHROUGH",
              "STRIKETHROUGH",
              "STRING"
            ],
            "type": "string"
          },
          "url": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "download",
          "format_type",
          "url",
          "value"
        ],
        "type": "object"
      },
      "FormattedTextDownloadDataclass": {
        "properties": {
          "request_params": {
            "additionalProperties": {
              "nullable": true
            },
            "type": "object"
          },
          "resource": {
            "enum": [
              "GET_PURCHASE_ORDER_SENT_PDF",
              "GET_REIMBURSEMENT_PAYMENT_RECEIPT"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "GET_PURCHASE_ORDER_SENT_PDF": "Downloads the PDF sent with a purchase order email event."
            }
          }
        },
        "required": [
          "request_params",
          "resource"
        ],
        "type": "object"
      },
      "Fund": {
        "example": {
          "balance": {
            "cleared": {
              "amount": 6500,
              "currency_code": "USD"
            },
            "pending": {
              "amount": 3500,
              "currency_code": "USD"
            },
            "total": {
              "amount": 10000,
              "currency_code": "USD"
            }
          },
          "cards": [
            {
              "card_id": "a40a6ce8-70d4-4d06-91e1-0728ad9bbe39",
              "created_at": "2024-05-12T01:37:27+00:00",
              "display_name": "T&E Card",
              "expiration": "0227",
              "last_four": "2543",
              "user_id": "2ba219ba-5867-453f-bec2-b8d0414b7f75"
            }
          ],
          "created_at": "2024-05-12T01:37:27+00:00",
          "display_name": "T&E",
          "entity_id": "c18d9d2e-964f-476d-8bb3-9ac078f00e11",
          "id": "d8135cfe-0396-4b2d-b2cf-ad809fb04731",
          "is_exempt_from_policy_agent": false,
          "is_shareable": true,
          "members": [
            {
              "suspension": null,
              "user_id": "2ba219ba-5867-453f-bec2-b8d0414b7f75"
            }
          ],
          "overrides_spend_program": false,
          "permitted_spend_types": {
            "physical_card_enabled": true,
            "reimbursements_enabled": false,
            "virtual_card_enabled": true
          },
          "spend_program_id": "3a5b1f62-988f-4190-bf31-b7ae87c5dfee",
          "spending_restrictions": {
            "allowed_category_codes": [
              35
            ],
            "allowed_vendor_ids": null,
            "auto_lock_date": null,
            "blocked_category_codes": null,
            "blocked_vendor_ids": null,
            "interval": "MONTHLY",
            "limit": {
              "amount": 500000,
              "currency_code": "USD"
            },
            "next_interval_resets_at": "2022-12-01T00:00:00+00:00",
            "start_of_interval": "2022-11-01T00:00:00+00:00",
            "temporary_limit": null,
            "transaction_amount_limit": {
              "amount": 10000,
              "currency_code": "USD"
            }
          },
          "state": "ACTIVE",
          "suspension": null
        },
        "properties": {
          "balance": {
            "$ref": "#/components/schemas/ApiFundBalance",
            "description": "Current balance of the fund.",
            "nullable": true,
            "readOnly": true
          },
          "cards": {
            "description": "Cards linked to this fund.",
            "items": {
              "$ref": "#/components/schemas/ApiFundCard"
            },
            "type": "array"
          },
          "created_at": {
            "description": "Time at which the fund was created, in ISO 8601 format.",
            "format": "date-time",
            "type": "string"
          },
          "display_name": {
            "description": "Display name of the fund.",
            "type": "string"
          },
          "entity_id": {
            "description": "Associated business entity of the fund.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "id": {
            "description": "Unique identifier of the fund.",
            "format": "uuid",
            "type": "string"
          },
          "is_exempt_from_policy_agent": {
            "description": "Whether this fund is exempt from policy agent review.",
            "type": "boolean"
          },
          "is_shareable": {
            "description": "Whether this fund is shareable among multiple users.",
            "type": "boolean"
          },
          "members": {
            "description": "Members who can spend from the fund.",
            "items": {
              "$ref": "#/components/schemas/ApiFundMember"
            },
            "type": "array"
          },
          "overrides_spend_program": {
            "description": "Whether the fund's settings override those of its spend program.",
            "type": "boolean"
          },
          "permitted_spend_types": {
            "$ref": "#/components/schemas/ApiFundPermittedSpendTypes",
            "description": "Permitted spend types for this fund."
          },
          "spend_program_id": {
            "description": "Unique identifier of the associated spend program.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "spend_programs",
              "type": "many-to-one"
            }
          },
          "spending_restrictions": {
            "$ref": "#/components/schemas/ApiFundSpendingRestrictionsDump",
            "description": "Spending restrictions on this fund.",
            "nullable": true,
            "readOnly": true
          },
          "state": {
            "description": "Current state of the fund: ACTIVE, SUSPENDED, or TERMINATED.",
            "enum": [
              "ACTIVE",
              "ARCHIVED",
              "SUSPENDED",
              "TERMINATED"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "ACTIVE": "The spend limit or fund is active.",
              "ARCHIVED": "The spend limit or fund is archived.",
              "SUSPENDED": "The spend limit or fund is suspended.",
              "TERMINATED": "The spend limit or fund is terminated."
            }
          },
          "suspension": {
            "$ref": "#/components/schemas/ApiFundSuspension",
            "description": "Suspension details at the fund level, or null if the fund is not suspended.",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "balance",
          "cards",
          "created_at",
          "display_name",
          "entity_id",
          "id",
          "is_exempt_from_policy_agent",
          "is_shareable",
          "members",
          "overrides_spend_program",
          "permitted_spend_types",
          "spend_program_id",
          "spending_restrictions",
          "state",
          "suspension"
        ],
        "type": "object",
        "x-resource-name": "funds"
      },
      "FundArchivalContext": {
        "properties": {
          "archive_actor": {
            "$ref": "#/components/schemas/UserDisplay",
            "description": "User responsible for archival, or null for system archival.",
            "nullable": true
          },
          "archive_reason": {
            "description": "Explanation recorded on the archival event, if available.",
            "nullable": true,
            "type": "string"
          },
          "archive_source": {
            "description": "Recorded source of the targeted archival event.",
            "type": "string"
          },
          "archived_at": {
            "description": "Timestamp of the archival event this request targets.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "archive_actor",
          "archive_reason",
          "archive_source",
          "archived_at"
        ],
        "type": "object"
      },
      "FundUnarchiveCurrentFundSettings": {
        "properties": {
          "accounting_auto_mark_ready_rule_enabled": {
            "description": "Whether fund transactions are automatically marked ready for accounting.",
            "type": "boolean"
          },
          "amount_details": {
            "$ref": "#/components/schemas/Money",
            "description": "Current funding amount and currency, not a proposed change.",
            "readOnly": true
          },
          "archive_date": {
            "description": "Date when the fund will be automatically archived, if configured.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "default_transaction_memo": {
            "description": "Default memo applied to transactions using the fund.",
            "nullable": true,
            "type": "string"
          },
          "members": {
            "description": "Users currently assigned to the fund.",
            "items": {
              "$ref": "#/components/schemas/UserDisplay"
            },
            "type": "array"
          },
          "owner": {
            "$ref": "#/components/schemas/ReducedUserForBaseUnifiedRequest",
            "description": "Current owner of the original fund.",
            "readOnly": true
          },
          "spend_allocation": {
            "$ref": "#/components/schemas/ReducedSpendAllocation",
            "description": "The original fund targeted for restoration.",
            "nullable": true
          },
          "spend_frequency": {
            "$ref": "#/components/schemas/SpendRequestFrequency",
            "description": "Current spending frequency configured for the fund.",
            "nullable": true
          },
          "spending_restrictions": {
            "$ref": "#/components/schemas/SpendRequestRequestDataSpendingRestrictions",
            "description": "Current transaction restrictions configured for the fund.",
            "readOnly": true
          },
          "submission_policy_id": {
            "description": "UUID of the fund's transaction submission policy, if configured.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "accounting_auto_mark_ready_rule_enabled",
          "amount_details",
          "archive_date",
          "default_transaction_memo",
          "members",
          "owner",
          "spend_allocation",
          "spend_frequency",
          "spending_restrictions",
          "submission_policy_id"
        ],
        "type": "object"
      },
      "FundUnarchiveRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseUnifiedSpendRequest"
          },
          {
            "properties": {
              "blank_canvas_execution_id": {
                "description": "Blank Canvas execution for this restoration request's approvals, or null.",
                "format": "uuid",
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "existing_spend_request": {
                "$ref": "#/components/schemas/BaseReducedExistingSpendRequest",
                "description": "The original fund request linked to this restoration request.",
                "nullable": true
              },
              "spend_request_type": {
                "default": "FUND_UNARCHIVE",
                "description": "Persisted request type for restoring an existing fund.",
                "enum": [
                  "FUND_UNARCHIVE"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "FUND_UNARCHIVE": "A request to restore an existing archived fund without issuing or changing funding."
                }
              },
              "unified_spend_request_type": {
                "default": "FUND_UNARCHIVE",
                "description": "Unified request classification for fund restoration, not new funding.",
                "enum": [
                  "FUND_UNARCHIVE"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "FUND_UNARCHIVE": "A request to restore an existing archived fund without issuing or changing funding."
                }
              }
            },
            "required": [
              "blank_canvas_execution_id",
              "existing_spend_request",
              "spend_request_type",
              "unified_spend_request_type"
            ],
            "type": "object"
          }
        ]
      },
      "FundUnarchiveRequestDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseUnifiedSpendRequestDetail"
          },
          {
            "$ref": "#/components/schemas/FundUnarchiveRequest"
          },
          {
            "properties": {
              "approval_chain_data": {
                "$ref": "#/components/schemas/ApprovalChainData",
                "description": "Traditional approval-chain state, or null when approvals use a Blank Canvas execution.",
                "nullable": true,
                "readOnly": true
              },
              "approval_events": {
                "description": "Approval-chain history belonging to this restoration request.",
                "items": {
                  "$ref": "#/components/schemas/ApprovalEvent"
                },
                "readOnly": true,
                "type": "array"
              },
              "archival_context": {
                "$ref": "#/components/schemas/FundArchivalContext",
                "description": "Provenance of the exact archival event targeted by this request.",
                "nullable": true,
                "readOnly": true
              },
              "current_fund_settings": {
                "$ref": "#/components/schemas/FundUnarchiveCurrentFundSettings",
                "description": "Current read-only settings of the original fund, not proposed changes.",
                "nullable": true,
                "readOnly": true
              },
              "original_spend_allocation_uuid": {
                "description": "Identity of the original fund targeted for restoration, not a newly issued fund.",
                "format": "uuid",
                "nullable": true,
                "readOnly": true,
                "type": "string"
              }
            },
            "required": [
              "approval_chain_data",
              "approval_events",
              "archival_context",
              "current_fund_settings",
              "original_spend_allocation_uuid"
            ],
            "type": "object"
          }
        ]
      },
      "GLAccount": {
        "example": {
          "classification": "EXPENSE",
          "code": "6410",
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "id": "514",
          "name": "Employees:Salaries & Wages"
        },
        "properties": {
          "classification": {
            "enum": [
              "ANY",
              "ASSET",
              "CREDCARD",
              "EQUITY",
              "EXPENSE",
              "LIABILITY",
              "REVENUE",
              "UNKNOWN"
            ],
            "type": "string"
          },
          "code": {
            "description": "e.g. 400-100.",
            "type": "string"
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities created through POST /developer/v1/accounting/entities that this GL account should be available for. Omit this field to make the GL account available for all connected entities on accounting connections with entity selection enabled.",
            "items": {
              "minLength": 1,
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "id": {
            "description": "Remote/external ID of GL account in ERP system.",
            "type": "string"
          },
          "name": {
            "description": "e.g. Travel : Travel - Lodging.",
            "type": "string"
          }
        },
        "required": [
          "classification",
          "id",
          "name"
        ],
        "type": "object"
      },
      "GeneralLedgerAccount": {
        "example": {
          "accounting_connection_id": "7de1fa6c-1fe9-432e-83d8-80971a91f903",
          "classification": "EXPENSE",
          "code": "6410",
          "created_at": "2019-08-28T14:15:22+00:00",
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "gl_account_category_info": {
            "id": "Category",
            "name": "Category",
            "ramp_id": "96bb7007-eec5-430f-8d09-e033cbc000c2"
          },
          "id": "514",
          "is_active": true,
          "name": "Employees:Salaries & Wages",
          "provider_name": "QuickBooks",
          "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
          "updated_at": "2020-08-28T14:40:12+00:00",
          "visibility": "VISIBLE"
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the GL account is uploaded to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "one-to-many"
            }
          },
          "classification": {
            "enum": [
              "ANY",
              "ASSET",
              "CREDCARD",
              "EQUITY",
              "EXPENSE",
              "LIABILITY",
              "REVENUE",
              "UNKNOWN"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "code": {
            "description": "e.g. 400-100.",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities that this GL account is available for. Null means the GL account is available for all connected entities.",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "readOnly": true,
            "type": "array"
          },
          "gl_account_category_info": {
            "$ref": "#/components/schemas/ApiAccountingCategoryInfo",
            "description": "Category info of the general ledger account."
          },
          "id": {
            "description": "Remote/external ID of GL account in ERP system.",
            "type": "string"
          },
          "is_active": {
            "type": "boolean"
          },
          "name": {
            "description": "e.g. Travel : Travel - Lodging.",
            "type": "string"
          },
          "provider_name": {
            "description": "Name of the accounting connection that the GL account is uploaded to.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "ramp_id": {
            "description": "id to uniquely identify a general ledger account within Ramp system",
            "format": "uuid",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "visibility": {
            "description": "Visibility of the general ledger account.",
            "enum": [
              "HIDDEN",
              "VISIBLE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "HIDDEN": "The option is hidden from selection in Ramp.",
              "VISIBLE": "The option is available for selection in Ramp."
            }
          }
        },
        "required": [
          "accounting_connection_id",
          "created_at",
          "entity_remote_ids",
          "is_active",
          "name",
          "provider_name",
          "ramp_id"
        ],
        "type": "object"
      },
      "GetCustomRowRequestBody": {
        "properties": {
          "external_key": {
            "default": null,
            "description": "External key of the custom row",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "title": "External Key",
            "type": "array"
          },
          "include_all_referenced_rows": {
            "default": false,
            "description": "Include all referenced rows in each cell rather than a subset of them.",
            "title": "Include All Referenced Rows",
            "type": "boolean"
          },
          "page_size": {
            "default": 50,
            "description": "Number of rows to include in the response. Max: 100",
            "title": "Page Size",
            "type": "integer"
          },
          "start": {
            "default": null,
            "description": "The value of the `next` field from the previous response, if any",
            "nullable": true,
            "title": "Start",
            "type": "string"
          }
        },
        "title": "GetCustomRow",
        "type": "object"
      },
      "GetNativeRowRequestBody": {
        "properties": {
          "include_all_referenced_rows": {
            "default": false,
            "description": "Include all referenced rows in each cell rather than a subset of them.",
            "title": "Include All Referenced Rows",
            "type": "boolean"
          },
          "page_size": {
            "default": 50,
            "description": "Number of rows to include in the response. Max: 100",
            "title": "Page Size",
            "type": "integer"
          },
          "ramp_id": {
            "default": null,
            "description": "id of the Ramp object",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "title": "Ramp Id",
            "type": "array"
          },
          "start": {
            "default": null,
            "description": "The value of the `next` field from the previous response, if any",
            "nullable": true,
            "title": "Start",
            "type": "string"
          }
        },
        "title": "GetNativeRow",
        "type": "object"
      },
      "GlobalFormApprovalInstanceEntity": {
        "properties": {
          "entity": {
            "discriminator": {
              "mapping": {
                "GROUP": "#/components/schemas/GroupEntity",
                "USER": "#/components/schemas/UserEntity"
              },
              "propertyName": "entity_type"
            },
            "oneOf": [
              {
                "$ref": "#/components/schemas/GroupEntity"
              },
              {
                "$ref": "#/components/schemas/UserEntity"
              }
            ],
            "title": "Entity"
          }
        },
        "required": [
          "entity"
        ],
        "title": "GlobalFormApprovalInstanceEntity",
        "type": "object"
      },
      "GlobalFormContext": {
        "enum": [
          "PROCUREMENT",
          "ROUTE_REQUEST"
        ],
        "title": "GlobalFormContext",
        "type": "string",
        "x-enum-descriptions": {
          "PROCUREMENT": "A form that collects information for a procurement request.",
          "ROUTE_REQUEST": "A form used to choose who will approve a request."
        }
      },
      "GlobalFormResponseNodeTask": {
        "properties": {
          "global_form_response_task_id": {
            "title": "Global Form Response Task Id",
            "type": "string"
          },
          "global_form_response_task_previews": {
            "items": {
              "$ref": "#/components/schemas/GlobalFormResponseTaskPreview"
            },
            "title": "Global Form Response Task Previews",
            "type": "array"
          },
          "node_title": {
            "nullable": true,
            "title": "Node Title",
            "type": "string"
          },
          "sla_due_date": {
            "default": null,
            "format": "date-time",
            "nullable": true,
            "title": "Sla Due Date",
            "type": "string"
          },
          "sla_duration_in_seconds": {
            "default": null,
            "nullable": true,
            "title": "Sla Duration In Seconds",
            "type": "integer"
          },
          "submitted_at": {
            "format": "date-time",
            "title": "Submitted At",
            "type": "string"
          },
          "task_type": {
            "enum": [
              "GLOBAL_FORM_RESPONSE"
            ],
            "title": "Task Type",
            "type": "string"
          }
        },
        "required": [
          "global_form_response_task_id",
          "global_form_response_task_previews",
          "node_title",
          "submitted_at",
          "task_type"
        ],
        "title": "GlobalFormResponseNodeTask",
        "type": "object"
      },
      "GlobalFormResponseStatus": {
        "enum": [
          "PENDING",
          "SUBMITTED"
        ],
        "title": "GlobalFormResponseStatus",
        "type": "string"
      },
      "GlobalFormResponseStatusDumpSchema": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "custom_form_collection_log_entry_label": {
            "nullable": true,
            "title": "Custom Form Collection Log Entry Label",
            "type": "string"
          },
          "custom_form_collection_log_entry_uuid": {
            "title": "Custom Form Collection Log Entry Uuid",
            "type": "string"
          },
          "custom_form_collection_response": {
            "$ref": "#/components/schemas/CustomFormCollectionApiResponseDumpSchemaV2",
            "nullable": true
          },
          "custom_form_collection_uuid": {
            "title": "Custom Form Collection Uuid",
            "type": "string"
          },
          "global_form_response_user_assignment_mapping_id": {
            "nullable": true,
            "title": "Global Form Response User Assignment Mapping Id",
            "type": "string"
          },
          "needs_current_user_action": {
            "title": "Needs Current User Action",
            "type": "boolean"
          },
          "node_id": {
            "nullable": true,
            "title": "Node Id",
            "type": "string"
          },
          "node_title": {
            "nullable": true,
            "title": "Node Title",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/GlobalFormResponseStatus"
          },
          "submitted_at": {
            "format": "date-time",
            "nullable": true,
            "title": "Submitted At",
            "type": "string"
          },
          "submitted_by_user": {
            "$ref": "#/components/schemas/ApprovalReducedUser",
            "nullable": true
          }
        },
        "required": [
          "created_at",
          "custom_form_collection_log_entry_label",
          "custom_form_collection_log_entry_uuid",
          "custom_form_collection_response",
          "custom_form_collection_uuid",
          "global_form_response_user_assignment_mapping_id",
          "needs_current_user_action",
          "node_id",
          "node_title",
          "status",
          "submitted_at",
          "submitted_by_user"
        ],
        "title": "GlobalFormResponseStatusDumpSchema",
        "type": "object"
      },
      "GlobalFormResponseTaskPreview": {
        "properties": {
          "custom_form_collection_log_entry_label": {
            "nullable": true,
            "title": "Custom Form Collection Log Entry Label",
            "type": "string"
          },
          "custom_form_collection_log_entry_uuid": {
            "title": "Custom Form Collection Log Entry Uuid",
            "type": "string"
          },
          "custom_form_collection_uuid": {
            "title": "Custom Form Collection Uuid",
            "type": "string"
          },
          "num_questions": {
            "title": "Num Questions",
            "type": "integer"
          },
          "num_questions_unconditional": {
            "title": "Num Questions Unconditional",
            "type": "integer"
          }
        },
        "required": [
          "custom_form_collection_log_entry_label",
          "custom_form_collection_log_entry_uuid",
          "custom_form_collection_uuid",
          "num_questions",
          "num_questions_unconditional"
        ],
        "title": "GlobalFormResponseTaskPreview",
        "type": "object"
      },
      "GlobalFormResponseTriggerEntityMetadata": {
        "properties": {
          "custom_form_collection_log_entry_label": {
            "nullable": true,
            "title": "Custom Form Collection Log Entry Label",
            "type": "string"
          },
          "custom_form_collection_log_entry_uuid": {
            "title": "Custom Form Collection Log Entry Uuid",
            "type": "string"
          },
          "custom_form_collection_response_uuid": {
            "nullable": true,
            "title": "Custom Form Collection Response Uuid",
            "type": "string"
          },
          "custom_form_collection_uuid": {
            "title": "Custom Form Collection Uuid",
            "type": "string"
          },
          "form_entities": {
            "items": {
              "$ref": "#/components/schemas/GlobalFormApprovalInstanceEntity"
            },
            "title": "Form Entities",
            "type": "array"
          },
          "global_form_context": {
            "$ref": "#/components/schemas/GlobalFormContext",
            "default": "PROCUREMENT",
            "description": "The purpose of the form in the approval workflow."
          },
          "global_form_response_mappings": {
            "items": {
              "$ref": "#/components/schemas/ReducedGlobalFormResponseBlankCanvasUserAssignmentMapping"
            },
            "title": "Global Form Response Mappings",
            "type": "array"
          },
          "trigger_type": {
            "enum": [
              "GLOBAL_FORM_RESPONSE"
            ],
            "title": "Trigger Type",
            "type": "string"
          }
        },
        "required": [
          "custom_form_collection_log_entry_label",
          "custom_form_collection_log_entry_uuid",
          "custom_form_collection_response_uuid",
          "custom_form_collection_uuid",
          "form_entities",
          "global_form_response_mappings"
        ],
        "title": "GlobalFormResponseTriggerEntityMetadata",
        "type": "object"
      },
      "GroupEntity": {
        "properties": {
          "assigned_user": {
            "$ref": "#/components/schemas/ApprovalReducedUser",
            "default": null,
            "description": "Chosen user.",
            "nullable": true
          },
          "assigned_user_source": {
            "$ref": "#/components/schemas/AssignedUserSource",
            "default": null,
            "description": "How the assigned user was selected; null when no user is assigned.",
            "nullable": true
          },
          "entity_type": {
            "enum": [
              "GROUP"
            ],
            "title": "Entity Type",
            "type": "string"
          },
          "group_name": {
            "title": "Group Name",
            "type": "string"
          },
          "group_status": {
            "$ref": "#/components/schemas/ApprovalGroupStatus"
          },
          "group_type": {
            "$ref": "#/components/schemas/ApprovalGroupType"
          },
          "group_uuid": {
            "title": "Group Uuid",
            "type": "string"
          },
          "reassignment_candidates": {
            "default": null,
            "description": "Eligible users for reassignment of the active round-robin approval.",
            "items": {
              "$ref": "#/components/schemas/ApprovalReducedUser"
            },
            "nullable": true,
            "title": "Reassignment Candidates",
            "type": "array"
          },
          "relative_group_type": {
            "default": null,
            "nullable": true,
            "title": "Relative Group Type",
            "type": "string"
          },
          "users": {
            "items": {
              "$ref": "#/components/schemas/ApprovalUser"
            },
            "title": "Users",
            "type": "array"
          }
        },
        "required": [
          "entity_type",
          "group_name",
          "group_status",
          "group_type",
          "group_uuid",
          "users"
        ],
        "title": "GroupEntity",
        "type": "object"
      },
      "InsertCellsResponse": {
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/NumInserted"
          }
        },
        "required": [
          "metadata"
        ],
        "title": "InsertCellsResponse",
        "type": "object"
      },
      "IntValue": {
        "properties": {
          "child_type": {
            "nullable": true,
            "type": "string"
          },
          "type": {
            "enum": [
              "INT"
            ],
            "type": "string"
          },
          "value": {
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "InventoryItemOption": {
        "example": {
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "gl_account_id": null,
          "id": "inventory_item_001",
          "name": "Widget A"
        },
        "properties": {
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities created through POST /developer/v1/accounting/entities that this inventory item option should be available for. Omit this field to make the inventory item option available for all connected entities on accounting connections with entity selection enabled.",
            "items": {
              "minLength": 1,
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "gl_account_id": {
            "description": "The Ramp ID (ramp_id) of the GL account to associate with this inventory item option. The GL account must already exist in Ramp. Use POST /developer/v1/accounting/accounts to upload GL accounts.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "gl_accounts",
              "type": "many-to-one"
            }
          },
          "id": {
            "description": "The external ID of the inventory item option. This is the ID in your ERP system.",
            "type": "string"
          },
          "name": {
            "description": "The name of the inventory item option.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "InventoryItemReceivingTypes": {
        "description": "How a PO line coded to an inventory item may be received.",
        "properties": {
          "available_types": {
            "description": "Receiving types a PO line coded to this inventory item may use.",
            "items": {
              "$ref": "#/components/schemas/ReceivingType"
            },
            "title": "Available Types",
            "type": "array"
          },
          "default_type": {
            "$ref": "#/components/schemas/ReceivingType",
            "default": "by_quantity",
            "description": "The item's default receiving type. Always one of available_types."
          }
        },
        "required": [
          "available_types",
          "default_type"
        ],
        "title": "InventoryItemReceivingTypes",
        "type": "object"
      },
      "IroncladArchiveWorkflowStep": {
        "properties": {
          "display_text": {
            "title": "Display Text",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/ApprovalEntityStatus"
          },
          "step": {
            "enum": [
              "Archive"
            ],
            "title": "Step",
            "type": "string"
          }
        },
        "required": [
          "display_text",
          "status",
          "step"
        ],
        "title": "IroncladArchiveWorkflowStep",
        "type": "object"
      },
      "IroncladCompletedWorkflowStep": {
        "properties": {
          "display_text": {
            "title": "Display Text",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/ApprovalEntityStatus"
          },
          "step": {
            "enum": [
              "completed"
            ],
            "title": "Step",
            "type": "string"
          }
        },
        "required": [
          "display_text",
          "status",
          "step"
        ],
        "title": "IroncladCompletedWorkflowStep",
        "type": "object"
      },
      "IroncladCreateWorkflowStep": {
        "properties": {
          "display_text": {
            "title": "Display Text",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/ApprovalEntityStatus"
          },
          "step": {
            "enum": [
              "Create"
            ],
            "title": "Step",
            "type": "string"
          }
        },
        "required": [
          "display_text",
          "status",
          "step"
        ],
        "title": "IroncladCreateWorkflowStep",
        "type": "object"
      },
      "IroncladMissingBusinessAccessError": {
        "properties": {
          "error_type": {
            "description": "Identifies a missing business-level Ironclad integration.",
            "enum": [
              "MISSING_BUSINESS_ACCESS"
            ],
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "error_type"
        ],
        "title": "IroncladMissingBusinessAccessError",
        "type": "object"
      },
      "IroncladMissingIndividualAccessError": {
        "properties": {
          "business_access_email": {
            "title": "Business Access Email",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "MISSING_INDIVIDUAL_ACCESS"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "requester_email": {
            "title": "Requester Email",
            "type": "string"
          }
        },
        "required": [
          "business_access_email",
          "error_type",
          "requester_email"
        ],
        "title": "IroncladMissingIndividualAccessError",
        "type": "object"
      },
      "IroncladMissingRampIdFieldError": {
        "properties": {
          "error_type": {
            "enum": [
              "MISSING_RAMP_ID_FIELD"
            ],
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "error_type"
        ],
        "title": "IroncladMissingRampIdFieldError",
        "type": "object"
      },
      "IroncladRequesterUserNotFoundError": {
        "properties": {
          "error_type": {
            "description": "Identifies a requester whose email does not match an Ironclad user.",
            "enum": [
              "REQUESTER_USER_NOT_FOUND"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "requester_email": {
            "description": "The Ramp requester's email that was not found in Ironclad.",
            "title": "Requester Email",
            "type": "string"
          }
        },
        "required": [
          "error_type",
          "requester_email"
        ],
        "title": "IroncladRequesterUserNotFoundError",
        "type": "object"
      },
      "IroncladReviewWorkflowStep": {
        "properties": {
          "display_text": {
            "title": "Display Text",
            "type": "string"
          },
          "reviewers": {
            "$ref": "#/components/schemas/IroncladWorkflowApprovals",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/ApprovalEntityStatus"
          },
          "step": {
            "enum": [
              "Review"
            ],
            "title": "Step",
            "type": "string"
          }
        },
        "required": [
          "display_text",
          "reviewers",
          "status",
          "step"
        ],
        "title": "IroncladReviewWorkflowStep",
        "type": "object"
      },
      "IroncladReviewerStatus": {
        "enum": [
          "approved",
          "pending"
        ],
        "title": "IroncladReviewerStatus",
        "type": "string"
      },
      "IroncladSignWorkflowStep": {
        "properties": {
          "display_text": {
            "title": "Display Text",
            "type": "string"
          },
          "signers": {
            "$ref": "#/components/schemas/IroncladWorkflowSigners",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/ApprovalEntityStatus"
          },
          "step": {
            "enum": [
              "Sign"
            ],
            "title": "Step",
            "type": "string"
          }
        },
        "required": [
          "display_text",
          "signers",
          "status",
          "step"
        ],
        "title": "IroncladSignWorkflowStep",
        "type": "object"
      },
      "IroncladSignerSignatureStatus": {
        "enum": [
          "declined",
          "pending",
          "sent",
          "signed",
          "viewed"
        ],
        "title": "IroncladSignerSignatureStatus",
        "type": "string"
      },
      "IroncladTriggerEntityMetadata": {
        "properties": {
          "error": {
            "$ref": "#/components/schemas/IroncladTriggerEntityMetadataError",
            "nullable": true
          },
          "ironclad_workflow_status": {
            "$ref": "#/components/schemas/IroncladWorkflowStatus",
            "default": null,
            "description": "Current status of the Ironclad workflow, independent of whether the Ramp step is complete. Null when the status is not available.",
            "nullable": true
          },
          "ironclad_workflow_url": {
            "default": null,
            "nullable": true,
            "title": "Ironclad Workflow Url",
            "type": "string"
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/IroncladTriggerEntityWorkflowStep"
            },
            "title": "Steps",
            "type": "array"
          },
          "trigger_type": {
            "enum": [
              "LAUNCH_IRONCLAD_WORKFLOW"
            ],
            "title": "Trigger Type",
            "type": "string"
          }
        },
        "required": [
          "error",
          "steps"
        ],
        "title": "IroncladTriggerEntityMetadata",
        "type": "object"
      },
      "IroncladTriggerEntityMetadataError": {
        "properties": {
          "error": {
            "discriminator": {
              "mapping": {
                "FALLBACK_ERROR": "#/components/schemas/FallbackIroncladTriggerEntityError",
                "MISSING_BUSINESS_ACCESS": "#/components/schemas/IroncladMissingBusinessAccessError",
                "MISSING_INDIVIDUAL_ACCESS": "#/components/schemas/IroncladMissingIndividualAccessError",
                "MISSING_PERMISSION": "#/components/schemas/IroncladWorkflowPermissionError",
                "MISSING_RAMP_ID_FIELD": "#/components/schemas/IroncladMissingRampIdFieldError",
                "REQUESTER_USER_NOT_FOUND": "#/components/schemas/IroncladRequesterUserNotFoundError"
              },
              "propertyName": "error_type"
            },
            "oneOf": [
              {
                "$ref": "#/components/schemas/FallbackIroncladTriggerEntityError"
              },
              {
                "$ref": "#/components/schemas/IroncladMissingBusinessAccessError"
              },
              {
                "$ref": "#/components/schemas/IroncladMissingIndividualAccessError"
              },
              {
                "$ref": "#/components/schemas/IroncladMissingRampIdFieldError"
              },
              {
                "$ref": "#/components/schemas/IroncladRequesterUserNotFoundError"
              },
              {
                "$ref": "#/components/schemas/IroncladWorkflowPermissionError"
              }
            ],
            "title": "Error"
          },
          "trigger_type": {
            "default": "LAUNCH_IRONCLAD_WORKFLOW",
            "enum": [
              "LAUNCH_IRONCLAD_WORKFLOW"
            ],
            "title": "Trigger Type",
            "type": "string"
          }
        },
        "required": [
          "error",
          "trigger_type"
        ],
        "title": "IroncladTriggerEntityMetadataError",
        "type": "object"
      },
      "IroncladTriggerEntityWorkflowStep": {
        "description": "Discriminated union of all Ironclad workflow step types.",
        "discriminator": {
          "mapping": {
            "Archive": "#/components/schemas/IroncladArchiveWorkflowStep",
            "Create": "#/components/schemas/IroncladCreateWorkflowStep",
            "Review": "#/components/schemas/IroncladReviewWorkflowStep",
            "Sign": "#/components/schemas/IroncladSignWorkflowStep",
            "completed": "#/components/schemas/IroncladCompletedWorkflowStep"
          },
          "propertyName": "step"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/IroncladArchiveWorkflowStep"
          },
          {
            "$ref": "#/components/schemas/IroncladCompletedWorkflowStep"
          },
          {
            "$ref": "#/components/schemas/IroncladCreateWorkflowStep"
          },
          {
            "$ref": "#/components/schemas/IroncladReviewWorkflowStep"
          },
          {
            "$ref": "#/components/schemas/IroncladSignWorkflowStep"
          }
        ],
        "title": "IroncladTriggerEntityWorkflowStep"
      },
      "IroncladWorkflowApprovalGroup": {
        "properties": {
          "reviewers": {
            "items": {
              "$ref": "#/components/schemas/IroncladWorkflowReviewer"
            },
            "title": "Reviewers",
            "type": "array"
          },
          "status": {
            "default": null,
            "description": "Ironclad approval group status; only active groups can be approved.",
            "nullable": true,
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "reviewers"
        ],
        "title": "IroncladWorkflowApprovalGroup",
        "type": "object"
      },
      "IroncladWorkflowApprovals": {
        "properties": {
          "approval_groups": {
            "items": {
              "$ref": "#/components/schemas/IroncladWorkflowApprovalGroup"
            },
            "title": "Approval Groups",
            "type": "array"
          },
          "roles": {
            "items": {
              "$ref": "#/components/schemas/IroncladWorkflowRole"
            },
            "title": "Roles",
            "type": "array"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "workflow_id": {
            "title": "Workflow Id",
            "type": "string"
          }
        },
        "required": [
          "approval_groups",
          "roles",
          "title",
          "workflow_id"
        ],
        "title": "IroncladWorkflowApprovals",
        "type": "object"
      },
      "IroncladWorkflowAssignee": {
        "properties": {
          "email": {
            "title": "Email",
            "type": "string"
          },
          "user_id": {
            "title": "User Id",
            "type": "string"
          },
          "user_name": {
            "title": "User Name",
            "type": "string"
          }
        },
        "required": [
          "email",
          "user_id",
          "user_name"
        ],
        "title": "IroncladWorkflowAssignee",
        "type": "object"
      },
      "IroncladWorkflowGateTriggerEntityMetadata": {
        "properties": {
          "dependent_launch_nodes": {
            "description": "Node IDs of the Ironclad launch nodes whose workflows this approval node waits on.",
            "items": {
              "type": "string"
            },
            "title": "Dependent Launch Nodes",
            "type": "array"
          },
          "error": {
            "$ref": "#/components/schemas/IroncladTriggerEntityMetadataError",
            "description": "The approval node's stored Ironclad error, or null when it has none.",
            "nullable": true
          },
          "trigger_type": {
            "description": "The trigger type for an Ironclad approval node.",
            "enum": [
              "IRONCLAD_WORKFLOW_GATE"
            ],
            "title": "Trigger Type",
            "type": "string"
          }
        },
        "required": [
          "error"
        ],
        "title": "IroncladWorkflowGateTriggerEntityMetadata",
        "type": "object"
      },
      "IroncladWorkflowPermissionError": {
        "properties": {
          "error_type": {
            "enum": [
              "MISSING_PERMISSION"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "requester_email": {
            "title": "Requester Email",
            "type": "string"
          },
          "workflow_name": {
            "title": "Workflow Name",
            "type": "string"
          }
        },
        "required": [
          "error_type",
          "requester_email",
          "workflow_name"
        ],
        "title": "IroncladWorkflowPermissionError",
        "type": "object"
      },
      "IroncladWorkflowReviewer": {
        "description": "Model for an Ironclad reviewer based on IroncladWorkflowReviewerSchema.",
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "reviewer_type": {
            "title": "Reviewer Type",
            "type": "string"
          },
          "role": {
            "title": "Role",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/IroncladReviewerStatus"
          }
        },
        "required": [
          "display_name",
          "reviewer_type",
          "role",
          "status"
        ],
        "title": "IroncladWorkflowReviewer",
        "type": "object"
      },
      "IroncladWorkflowRole": {
        "properties": {
          "assignees": {
            "items": {
              "$ref": "#/components/schemas/IroncladWorkflowAssignee"
            },
            "title": "Assignees",
            "type": "array"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          }
        },
        "required": [
          "assignees",
          "display_name",
          "id"
        ],
        "title": "IroncladWorkflowRole",
        "type": "object"
      },
      "IroncladWorkflowSigner": {
        "description": "Model for an Ironclad signer based on IroncladWorkflowSignerSchema.",
        "properties": {
          "email": {
            "title": "Email",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "role_name": {
            "title": "Role Name",
            "type": "string"
          },
          "routing_order": {
            "default": null,
            "nullable": true,
            "title": "Routing Order",
            "type": "integer"
          },
          "signature_status": {
            "$ref": "#/components/schemas/IroncladWorkflowSignerSignatureStatus"
          }
        },
        "required": [
          "email",
          "name",
          "role_name",
          "signature_status"
        ],
        "title": "IroncladWorkflowSigner",
        "type": "object"
      },
      "IroncladWorkflowSignerSignatureStatus": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/IroncladSignerSignatureStatus"
          }
        },
        "required": [
          "status"
        ],
        "title": "IroncladWorkflowSignerSignatureStatus",
        "type": "object"
      },
      "IroncladWorkflowSigners": {
        "properties": {
          "routing": {
            "title": "Routing",
            "type": "string"
          },
          "signers": {
            "items": {
              "$ref": "#/components/schemas/IroncladWorkflowSigner"
            },
            "title": "Signers",
            "type": "array"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "workflow_id": {
            "title": "Workflow Id",
            "type": "string"
          }
        },
        "required": [
          "routing",
          "signers",
          "title",
          "workflow_id"
        ],
        "title": "IroncladWorkflowSigners",
        "type": "object"
      },
      "IroncladWorkflowStatus": {
        "enum": [
          "active",
          "cancelled",
          "completed",
          "paused"
        ],
        "title": "IroncladWorkflowStatus",
        "type": "string",
        "x-enum-descriptions": {
          "active": "The Ironclad workflow is in progress.",
          "cancelled": "The Ironclad workflow was canceled.",
          "completed": "The Ironclad workflow is complete.",
          "paused": "The Ironclad workflow is paused."
        }
      },
      "IssuanceParameters": {
        "properties": {
          "is_physical": {
            "type": "boolean"
          },
          "is_temporary_edit_requested": {
            "type": "boolean"
          },
          "requesting_physical_card": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "IssuePurchaseOrderFundDenialReason": {
        "title": "IssuePurchaseOrderFundDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "archived": "The purchase order has been archived.",
          "fund_already_issued": "A fund has already been issued for the purchase order.",
          "is_change_request": "The spend request is a change request.",
          "no_permission": "The user does not have permission to issue a fund for the purchase order.",
          "not_approved": "The spend request has not been approved.",
          "not_purchase_order": "The spend request is not associated with a purchase order.",
          "parent_blanket_purchase_order": "Funds cannot be issued for blanket POs with child POs; issue them for a child PO instead.",
          "pending_fund_creation": "A fund creation job is already pending for the purchase order.",
          "punchout_order": "Funds cannot be issued for punchout purchase orders."
        },
        "x-extensible-enum": [
          "archived",
          "fund_already_issued",
          "is_change_request",
          "no_permission",
          "not_approved",
          "not_purchase_order",
          "parent_blanket_purchase_order",
          "pending_fund_creation",
          "punchout_order"
        ]
      },
      "JSONBValue": {
        "properties": {
          "child_type": {
            "nullable": true,
            "type": "string"
          },
          "type": {
            "enum": [
              "JSONB"
            ],
            "type": "string"
          },
          "value": {
            "nullable": true
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "KeyStateReference": {
        "properties": {
          "action_kwarg_type": {
            "enum": [
              "KEY_STATE_REFERENCE_TYPE"
            ],
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "variable_name": {
            "type": "string"
          }
        },
        "required": [
          "action_kwarg_type",
          "key",
          "variable_name"
        ],
        "type": "object"
      },
      "LightReceipt": {
        "example": {
          "id": "0a0ed428-0250-4993-96ad-94cd77bc86b6"
        },
        "properties": {
          "id": {
            "description": "Unique identifier for the receipt.",
            "format": "uuid",
            "type": "string"
          }
        },
        "type": "object"
      },
      "LineItemCustomFieldValueInput": {
        "additionalProperties": false,
        "properties": {
          "custom_field_id": {
            "description": "ID of the PO line-item custom field (the config's custom_field_id) this value is for.",
            "title": "Custom Field Id",
            "type": "string"
          },
          "value": {
            "description": "Value for the custom field. For a multi-select field, add one entry per selected value using the same custom_field_id. Omit the custom-field entry when the value is unknown; pass null only to clear an existing value.",
            "nullable": true,
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value"
          }
        },
        "required": [
          "custom_field_id",
          "value"
        ],
        "title": "LineItemCustomFieldValueInput",
        "type": "object"
      },
      "LineItemCustomFieldValueWithArchiveStatus": {
        "properties": {
          "column_display_name": {
            "description": "The display name of the column",
            "type": "string"
          },
          "column_id": {
            "description": "The id of the column",
            "type": "string"
          },
          "is_archived": {
            "default": false,
            "description": "Whether the custom field has been archived",
            "type": "boolean"
          },
          "value": {
            "description": "The contents of the cell",
            "discriminator": {
              "mapping": {
                "boolean": "#/components/schemas/BooleanCellContentsForDisplay",
                "custom_table": "#/components/schemas/CustomTableReferenceCellContentsForDisplay",
                "date": "#/components/schemas/DatetimeCellContentsForDisplay",
                "native_table": "#/components/schemas/NativeTableReferenceCellContentsForDisplay",
                "number": "#/components/schemas/NumberCellContentsForDisplay",
                "text": "#/components/schemas/TextCellContentsForDisplay"
              },
              "propertyName": "type"
            },
            "oneOf": [
              {
                "$ref": "#/components/schemas/BooleanCellContentsForDisplay"
              },
              {
                "$ref": "#/components/schemas/CustomTableReferenceCellContentsForDisplay"
              },
              {
                "$ref": "#/components/schemas/DatetimeCellContentsForDisplay"
              },
              {
                "$ref": "#/components/schemas/NativeTableReferenceCellContentsForDisplay"
              },
              {
                "$ref": "#/components/schemas/NumberCellContentsForDisplay"
              },
              {
                "$ref": "#/components/schemas/TextCellContentsForDisplay"
              }
            ]
          }
        },
        "required": [
          "column_display_name",
          "column_id",
          "is_archived",
          "value"
        ],
        "type": "object"
      },
      "LinkablePayeeAgreementSchema": {
        "properties": {
          "auto_renewal": {
            "nullable": true,
            "title": "Auto Renewal",
            "type": "boolean"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency",
            "default": null,
            "nullable": true
          },
          "description": {
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "end_date": {
            "format": "date",
            "nullable": true,
            "title": "End Date",
            "type": "string"
          },
          "last_date_to_terminate": {
            "default": null,
            "format": "date",
            "nullable": true,
            "title": "Last Date To Terminate",
            "type": "string"
          },
          "name": {
            "nullable": true,
            "title": "Name",
            "type": "string"
          },
          "payee_agreement_id": {
            "title": "Payee Agreement Id",
            "type": "string"
          },
          "payee_logo": {
            "default": null,
            "nullable": true,
            "title": "Payee Logo",
            "type": "string"
          },
          "payee_name": {
            "default": null,
            "nullable": true,
            "title": "Payee Name",
            "type": "string"
          },
          "start_date": {
            "format": "date",
            "nullable": true,
            "title": "Start Date",
            "type": "string"
          },
          "total_value": {
            "nullable": true,
            "title": "Total Value",
            "type": "number"
          },
          "up_for_renewal": {
            "title": "Up For Renewal",
            "type": "boolean"
          }
        },
        "required": [
          "auto_renewal",
          "description",
          "end_date",
          "name",
          "payee_agreement_id",
          "start_date",
          "total_value",
          "up_for_renewal"
        ],
        "title": "LinkablePayeeAgreementSchema",
        "type": "object"
      },
      "ListMatrixRowsByNameRequestRequestBody": {
        "description": "Request for listing Matrix rows.",
        "example": {
          "filters": [
            {
              "column_name": "department",
              "one_of": [
                "<UUID>"
              ]
            }
          ],
          "page_size": 10
        },
        "properties": {
          "external_keys": {
            "default": null,
            "description": "Filter by specific external keys",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "title": "External Keys",
            "type": "array"
          },
          "filters": {
            "default": null,
            "description": "Filter rows by input column values. Only rows matching ALL filters are returned.",
            "items": {
              "$ref": "#/components/schemas/DeveloperApiMatrixColumnFilterRequestBody"
            },
            "nullable": true,
            "title": "Filters",
            "type": "array"
          },
          "page_size": {
            "default": 100,
            "description": "Number of rows per page",
            "title": "Page Size",
            "type": "integer"
          },
          "start": {
            "default": null,
            "description": "Pagination cursor (row ID from page.next)",
            "nullable": true,
            "title": "Start",
            "type": "string"
          }
        },
        "title": "ListMatrixRowsByNameRequest",
        "type": "object"
      },
      "ListMatrixRowsByNameResponse": {
        "description": "Response for listing Matrix rows.",
        "example": {
          "data": [
            {
              "id": "<UUID>",
              "inputs": [
                {
                  "column_name": "department",
                  "display_name": "Engineering",
                  "identifier": {
                    "column_name": "id",
                    "value": "<UUID>"
                  }
                }
              ],
              "results": [
                {
                  "column_name": "approver",
                  "display_name": "John Doe",
                  "identifier": {
                    "column_name": "id",
                    "value": "<UUID>"
                  }
                }
              ]
            }
          ],
          "page": {
            "next": null
          },
          "total_count": 1
        },
        "properties": {
          "data": {
            "description": "List of Matrix rows",
            "items": {
              "$ref": "#/components/schemas/MatrixRowByName"
            },
            "title": "Data",
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperApiMatrixPageInfo",
            "description": "Pagination information"
          },
          "total_count": {
            "description": "Total number of rows matching filters",
            "title": "Total Count",
            "type": "integer"
          }
        },
        "required": [
          "data",
          "page",
          "total_count"
        ],
        "title": "ListMatrixRowsByNameResponse",
        "type": "object"
      },
      "Location": {
        "example": {
          "entity_id": "bb25a7e8-cc2f-4ba7-9bf4-7730ffe152bb",
          "id": "f4efe11c-221f-4b49-a1e4-33eaf96a49ee",
          "name": "New York City, NY"
        },
        "properties": {
          "entity_id": {
            "description": "Identifier of the business entity this location belongs to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "id": {
            "description": "Unique identifier for the location.",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "Name of the location.",
            "type": "string"
          }
        },
        "required": [
          "entity_id",
          "id",
          "name"
        ],
        "type": "object",
        "x-resource-name": "locations"
      },
      "LocationDisplay": {
        "properties": {
          "id": {
            "format": "uuid",
            "readOnly": true,
            "type": "string"
          },
          "location_name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "location_name"
        ],
        "type": "object"
      },
      "MatchUnmatchTransactionsDenialReason": {
        "enum": [
          "no_permission",
          "not_purchase_order",
          "parent_blanket_purchase_order",
          "unsupported_purchase_order_source"
        ],
        "title": "MatchUnmatchTransactionsDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "no_permission": "The user does not have permission to match or unmatch transactions for the purchase order.",
          "not_purchase_order": "The spend request is not associated with a purchase order.",
          "parent_blanket_purchase_order": "The purchase order is a blanket PO with child POs; transactions are matched to its child POs instead.",
          "unsupported_purchase_order_source": "Transactions can only be matched to purchase orders created in Ramp or via the Developer API."
        }
      },
      "MatrixInputCellByNameRequestBody": {
        "description": "A Matrix input cell with column name and identifier.",
        "example": {
          "column_name": "department",
          "identifier": {
            "column_name": "id",
            "value": "<UUID>"
          }
        },
        "properties": {
          "column_name": {
            "description": "API name of the input column",
            "title": "Column Name",
            "type": "string"
          },
          "identifier": {
            "$ref": "#/components/schemas/DeveloperApiNativeRowIdentifierRequestBody",
            "default": null,
            "description": "Identifier for the referenced native object (use for native_table columns)",
            "nullable": true
          },
          "number_identifier": {
            "default": null,
            "description": "Number value identifier (use for number columns)",
            "nullable": true,
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Number Identifier"
          }
        },
        "required": [
          "column_name"
        ],
        "title": "MatrixInputCellByName",
        "type": "object"
      },
      "MatrixInputCellByNameWithDisplayName": {
        "description": "A Matrix input cell with column name, identifier, and display_name (for responses).",
        "example": {
          "column_name": "department",
          "display_name": "Engineering",
          "identifier": {
            "column_name": "id",
            "value": "<UUID>"
          }
        },
        "properties": {
          "column_name": {
            "description": "API name of the input column",
            "title": "Column Name",
            "type": "string"
          },
          "display_name": {
            "description": "Display name of the referenced object or number value (None for missing input)",
            "nullable": true,
            "title": "Display Name",
            "type": "string"
          },
          "identifier": {
            "default": null,
            "description": "Identifier for the referenced object or number value (includes type discriminator)",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/DeveloperApiNativeRowIdentifier"
              },
              {
                "$ref": "#/components/schemas/DeveloperApiNumberIdentifier"
              }
            ],
            "title": "Identifier"
          }
        },
        "required": [
          "column_name",
          "display_name"
        ],
        "title": "MatrixInputCellByNameWithDisplayName",
        "type": "object"
      },
      "MatrixPutMetadata": {
        "properties": {
          "inserted": {
            "description": "Number of rows inserted",
            "title": "Inserted",
            "type": "integer"
          },
          "updated": {
            "description": "Number of rows updated",
            "title": "Updated",
            "type": "integer"
          }
        },
        "required": [
          "inserted",
          "updated"
        ],
        "title": "MatrixPutMetadata",
        "type": "object"
      },
      "MatrixResultCellByNameRequestBody": {
        "description": "A Matrix result cell with column name and identifier (for input requests).",
        "example": {
          "column_name": "approver",
          "identifier": {
            "column_name": "id",
            "value": "<UUID>"
          }
        },
        "properties": {
          "column_name": {
            "description": "API name of the result column",
            "title": "Column Name",
            "type": "string"
          },
          "identifier": {
            "$ref": "#/components/schemas/DeveloperApiNativeRowIdentifierRequestBody",
            "description": "Identifier for the referenced object (None to clear)",
            "nullable": true
          }
        },
        "required": [
          "column_name",
          "identifier"
        ],
        "title": "MatrixResultCellByName",
        "type": "object"
      },
      "MatrixResultCellByNameWithDisplayName": {
        "description": "A Matrix result cell with column name, identifier, and display_name (for responses).",
        "example": {
          "column_name": "approver",
          "display_name": "John Doe",
          "identifier": {
            "column_name": "id",
            "value": "<UUID>"
          }
        },
        "properties": {
          "column_name": {
            "description": "API name of the result column",
            "title": "Column Name",
            "type": "string"
          },
          "display_name": {
            "description": "Display name of the referenced object (None to clear)",
            "nullable": true,
            "title": "Display Name",
            "type": "string"
          },
          "identifier": {
            "$ref": "#/components/schemas/DeveloperApiNativeRowIdentifier",
            "description": "Identifier for the referenced object (None to clear)",
            "nullable": true
          }
        },
        "required": [
          "column_name",
          "display_name",
          "identifier"
        ],
        "title": "MatrixResultCellByNameWithDisplayName",
        "type": "object"
      },
      "MatrixRowByName": {
        "description": "A Matrix row for reading (GET/list operations).",
        "example": {
          "id": "<UUID>",
          "inputs": [
            {
              "column_name": "department",
              "display_name": "Engineering",
              "identifier": {
                "column_name": "id",
                "value": "<UUID>"
              }
            }
          ],
          "results": [
            {
              "column_name": "approver",
              "display_name": "John Doe",
              "identifier": {
                "column_name": "id",
                "value": "<UUID>"
              }
            }
          ]
        },
        "properties": {
          "id": {
            "description": "Unique Identifier for this row of the Matrix",
            "title": "Id",
            "type": "string"
          },
          "inputs": {
            "description": "Input cells (ALL input columns included, even if None)",
            "items": {
              "$ref": "#/components/schemas/MatrixInputCellByNameWithDisplayName"
            },
            "title": "Inputs",
            "type": "array"
          },
          "results": {
            "description": "Result cells (only cells that exist)",
            "items": {
              "$ref": "#/components/schemas/MatrixResultCellByNameWithDisplayName"
            },
            "title": "Results",
            "type": "array"
          }
        },
        "required": [
          "id",
          "inputs",
          "results"
        ],
        "title": "MatrixRowByName",
        "type": "object"
      },
      "MatrixRowInputByNameRequestBody": {
        "description": "Input for writing a single Matrix row.",
        "example": {
          "inputs": [
            {
              "column_name": "department",
              "identifier": {
                "column_name": "id",
                "value": "<UUID>"
              }
            }
          ],
          "results": [
            {
              "column_name": "approver",
              "identifier": {
                "column_name": "id",
                "value": "<UUID>"
              }
            }
          ]
        },
        "properties": {
          "inputs": {
            "description": "Input column values (must include ALL input columns)",
            "items": {
              "$ref": "#/components/schemas/MatrixInputCellByNameRequestBody"
            },
            "title": "Inputs",
            "type": "array"
          },
          "results": {
            "description": "Result column values (can be partial subset)",
            "items": {
              "$ref": "#/components/schemas/MatrixResultCellByNameRequestBody"
            },
            "title": "Results",
            "type": "array"
          }
        },
        "required": [
          "inputs",
          "results"
        ],
        "title": "MatrixRowInputByName",
        "type": "object"
      },
      "Memo": {
        "properties": {
          "id": {
            "description": "Unique identifier for the transaction associated with this memo.",
            "format": "uuid",
            "type": "string"
          },
          "memo": {
            "description": "Text content of the memo.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "Merchant": {
        "example": {
          "id": "d38a988c-377a-421b-9017-0c8f40a4304e",
          "is_auto_approved": true,
          "merchant_name": "Google",
          "sk_category_name": "Advertising"
        },
        "properties": {
          "id": {
            "description": "Unique identifier for the merchant.",
            "format": "uuid",
            "type": "string"
          },
          "is_auto_approved": {
            "description": "Indicates if transactions from this merchant are exempt from receipt submission requirements.",
            "readOnly": true,
            "type": "boolean"
          },
          "merchant_name": {
            "description": "Display name of the merchant.",
            "type": "string"
          },
          "sk_category_name": {
            "description": "Category classification of the merchant.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "id",
          "is_auto_approved",
          "merchant_name",
          "sk_category_name"
        ],
        "type": "object",
        "x-resource-name": "merchants"
      },
      "MerchantCategoryValueDumpSchema": {
        "properties": {
          "category_id": {
            "title": "Category Id",
            "type": "integer"
          },
          "category_name": {
            "title": "Category Name",
            "type": "string"
          }
        },
        "required": [
          "category_id",
          "category_name"
        ],
        "title": "MerchantCategoryValueDumpSchema",
        "type": "object"
      },
      "MerchantValueDumpSchema": {
        "properties": {
          "merchant_id": {
            "title": "Merchant Id",
            "type": "integer"
          },
          "merchant_name": {
            "title": "Merchant Name",
            "type": "string"
          }
        },
        "required": [
          "merchant_id",
          "merchant_name"
        ],
        "title": "MerchantValueDumpSchema",
        "type": "object"
      },
      "MockOutboundWebhookEventPayload": {
        "properties": {
          "business_id": {
            "description": "UUID of the business associated with the event.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "businesses",
              "type": "many-to-one"
            }
          },
          "created_at": {
            "description": "Timestamp when the webhook event was created.",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier for the webhook event.",
            "type": "string"
          },
          "object": {
            "description": "Object associated with the event.",
            "type": "object"
          },
          "type": {
            "description": "Type of the webhook event.",
            "enum": [
              "applications.status_updated",
              "bills.approved",
              "bills.archived",
              "bills.created",
              "bills.paid",
              "bills.ready_to_sync",
              "bills.rejected",
              "bills.updated",
              "draft_bills.created",
              "entities.created",
              "item_receipts.created",
              "payments.updated",
              "purchase_orders.archived",
              "purchase_orders.created",
              "purchase_orders.updated",
              "reimbursements.batch_payment_reimbursed",
              "reimbursements.ready_for_review",
              "reimbursements.ready_to_sync",
              "reimbursements.sync_requested",
              "spend_requests.comment_created",
              "spend_requests.created",
              "tests.test_event",
              "transactions.all_requirements_met_and_approved_changed",
              "transactions.authorized",
              "transactions.body_coding_updated",
              "transactions.cleared",
              "transactions.declined",
              "transactions.ready_for_review",
              "transactions.ready_to_sync",
              "transactions.receipt_added",
              "transactions.sync_requested",
              "transactions.synced",
              "unified_requests.created",
              "unified_requests.external_approval_request",
              "unified_requests.external_approval_request_reset",
              "unified_requests.modified",
              "unified_requests.node_advanced",
              "unified_requests.override_approved",
              "unified_requests.updated",
              "users.invite_accepted",
              "vendor_agreements.archived",
              "vendor_agreements.created",
              "vendor_agreements.deleted",
              "vendor_agreements.document_added",
              "vendor_agreements.renewal_milestone",
              "vendor_agreements.updated",
              "vendors.activated",
              "vendors.approved",
              "vendors.updated",
              "webhooks.verification"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "applications.status_updated": "Application status has changed, such as approved or rejected.",
              "bills.approved": "Bill has been approved.",
              "bills.archived": "Bill has been archived.",
              "bills.created": "Bill has been created.",
              "bills.paid": "Bill payment has been completed.",
              "bills.ready_to_sync": "Bill is ready to sync to an accounting system.",
              "bills.rejected": "Bill has been rejected.",
              "bills.updated": "Bill has been edited. Fires for invoice number updates, PO matching, accounting field updates, and payment detail changes. Does not fire for bill approvals or payments; use bills.approved and bills.paid for those updates.",
              "draft_bills.created": "Draft bill has been created. Invoice processing may still be in progress and extracted fields may be incomplete.",
              "entities.created": "A business entity was created.",
              "item_receipts.created": "Item receipt has been created.",
              "payments.updated": "Bill payment has been updated.",
              "purchase_orders.archived": "Purchase order has been archived.",
              "purchase_orders.created": "Purchase order has been created.",
              "purchase_orders.updated": "Purchase order has been modified.",
              "reimbursements.batch_payment_reimbursed": "Reimbursement batch payment has been reimbursed.",
              "reimbursements.ready_for_review": "Reimbursement needs review.",
              "reimbursements.ready_to_sync": "Reimbursement is ready to sync to an accounting system.",
              "reimbursements.sync_requested": "Reimbursement sync has been requested.",
              "spend_requests.comment_created": "Comment has been added to a spend request.",
              "spend_requests.created": "Spend request has been created.",
              "tests.test_event": "Test event used to exercise webhook delivery; not a business event.",
              "transactions.all_requirements_met_and_approved_changed": "A transaction's all_requirements_met_and_approved value changed. Fires in either direction, including when it flips back to false after a prior approval.",
              "transactions.authorized": "Transaction has been authorized.",
              "transactions.body_coding_updated": "A transaction's body-level accounting coding (GL account / tracking categories) was created or changed.",
              "transactions.cleared": "Transaction has settled. This also fires for refunds and reversals.",
              "transactions.declined": "Transaction has been declined.",
              "transactions.ready_for_review": "Transaction needs review or coding.",
              "transactions.ready_to_sync": "Transaction is ready to sync to an accounting system.",
              "transactions.receipt_added": "Receipt has been added to a transaction.",
              "transactions.sync_requested": "Transaction sync has been requested.",
              "transactions.synced": "Transaction has been marked as synced.",
              "unified_requests.created": "Unified request has been created.",
              "unified_requests.external_approval_request": "Unified request is ready for external approval.",
              "unified_requests.external_approval_request_reset": "External approval request on a unified request has been reset.",
              "unified_requests.modified": "Unified request has been modified.",
              "unified_requests.node_advanced": "Unified request advanced to another workflow node.",
              "unified_requests.override_approved": "Unified request override has been approved.",
              "unified_requests.updated": "Unified request has been updated.",
              "users.invite_accepted": "User has accepted an invitation.",
              "vendor_agreements.archived": "Vendor agreement has been archived.",
              "vendor_agreements.created": "Vendor agreement has been created.",
              "vendor_agreements.deleted": "Vendor agreement has been deleted.",
              "vendor_agreements.document_added": "Document has been added to a vendor agreement.",
              "vendor_agreements.renewal_milestone": "Vendor agreement has reached the fixed 90-day renewal milestone.",
              "vendor_agreements.updated": "Vendor agreement has been updated.",
              "vendors.activated": "Vendor has been activated.",
              "vendors.approved": "Vendor has been approved.",
              "vendors.updated": "Vendor has been updated.",
              "webhooks.verification": "Verification event sent when confirming ownership of an endpoint."
            }
          }
        },
        "required": [
          "business_id",
          "created_at",
          "id",
          "object",
          "type"
        ],
        "type": "object"
      },
      "MockOutboundWebhookEventRequestBody": {
        "properties": {
          "event_type": {
            "description": "Type of the webhook event.",
            "enum": [
              "applications.status_updated",
              "bills.approved",
              "bills.archived",
              "bills.created",
              "bills.paid",
              "bills.ready_to_sync",
              "bills.rejected",
              "bills.updated",
              "draft_bills.created",
              "entities.created",
              "item_receipts.created",
              "payments.updated",
              "purchase_orders.archived",
              "purchase_orders.created",
              "purchase_orders.updated",
              "reimbursements.batch_payment_reimbursed",
              "reimbursements.ready_for_review",
              "reimbursements.ready_to_sync",
              "reimbursements.sync_requested",
              "spend_requests.comment_created",
              "spend_requests.created",
              "tests.test_event",
              "transactions.all_requirements_met_and_approved_changed",
              "transactions.authorized",
              "transactions.body_coding_updated",
              "transactions.cleared",
              "transactions.declined",
              "transactions.ready_for_review",
              "transactions.ready_to_sync",
              "transactions.receipt_added",
              "transactions.sync_requested",
              "transactions.synced",
              "unified_requests.created",
              "unified_requests.external_approval_request",
              "unified_requests.external_approval_request_reset",
              "unified_requests.modified",
              "unified_requests.node_advanced",
              "unified_requests.override_approved",
              "unified_requests.updated",
              "users.invite_accepted",
              "vendor_agreements.archived",
              "vendor_agreements.created",
              "vendor_agreements.deleted",
              "vendor_agreements.document_added",
              "vendor_agreements.renewal_milestone",
              "vendor_agreements.updated",
              "vendors.activated",
              "vendors.approved",
              "vendors.updated",
              "webhooks.verification"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "applications.status_updated": "Application status has changed, such as approved or rejected.",
              "bills.approved": "Bill has been approved.",
              "bills.archived": "Bill has been archived.",
              "bills.created": "Bill has been created.",
              "bills.paid": "Bill payment has been completed.",
              "bills.ready_to_sync": "Bill is ready to sync to an accounting system.",
              "bills.rejected": "Bill has been rejected.",
              "bills.updated": "Bill has been edited. Fires for invoice number updates, PO matching, accounting field updates, and payment detail changes. Does not fire for bill approvals or payments; use bills.approved and bills.paid for those updates.",
              "draft_bills.created": "Draft bill has been created. Invoice processing may still be in progress and extracted fields may be incomplete.",
              "entities.created": "A business entity was created.",
              "item_receipts.created": "Item receipt has been created.",
              "payments.updated": "Bill payment has been updated.",
              "purchase_orders.archived": "Purchase order has been archived.",
              "purchase_orders.created": "Purchase order has been created.",
              "purchase_orders.updated": "Purchase order has been modified.",
              "reimbursements.batch_payment_reimbursed": "Reimbursement batch payment has been reimbursed.",
              "reimbursements.ready_for_review": "Reimbursement needs review.",
              "reimbursements.ready_to_sync": "Reimbursement is ready to sync to an accounting system.",
              "reimbursements.sync_requested": "Reimbursement sync has been requested.",
              "spend_requests.comment_created": "Comment has been added to a spend request.",
              "spend_requests.created": "Spend request has been created.",
              "tests.test_event": "Test event used to exercise webhook delivery; not a business event.",
              "transactions.all_requirements_met_and_approved_changed": "A transaction's all_requirements_met_and_approved value changed. Fires in either direction, including when it flips back to false after a prior approval.",
              "transactions.authorized": "Transaction has been authorized.",
              "transactions.body_coding_updated": "A transaction's body-level accounting coding (GL account / tracking categories) was created or changed.",
              "transactions.cleared": "Transaction has settled. This also fires for refunds and reversals.",
              "transactions.declined": "Transaction has been declined.",
              "transactions.ready_for_review": "Transaction needs review or coding.",
              "transactions.ready_to_sync": "Transaction is ready to sync to an accounting system.",
              "transactions.receipt_added": "Receipt has been added to a transaction.",
              "transactions.sync_requested": "Transaction sync has been requested.",
              "transactions.synced": "Transaction has been marked as synced.",
              "unified_requests.created": "Unified request has been created.",
              "unified_requests.external_approval_request": "Unified request is ready for external approval.",
              "unified_requests.external_approval_request_reset": "External approval request on a unified request has been reset.",
              "unified_requests.modified": "Unified request has been modified.",
              "unified_requests.node_advanced": "Unified request advanced to another workflow node.",
              "unified_requests.override_approved": "Unified request override has been approved.",
              "unified_requests.updated": "Unified request has been updated.",
              "users.invite_accepted": "User has accepted an invitation.",
              "vendor_agreements.archived": "Vendor agreement has been archived.",
              "vendor_agreements.created": "Vendor agreement has been created.",
              "vendor_agreements.deleted": "Vendor agreement has been deleted.",
              "vendor_agreements.document_added": "Document has been added to a vendor agreement.",
              "vendor_agreements.renewal_milestone": "Vendor agreement has reached the fixed 90-day renewal milestone.",
              "vendor_agreements.updated": "Vendor agreement has been updated.",
              "vendors.activated": "Vendor has been activated.",
              "vendors.approved": "Vendor has been approved.",
              "vendors.updated": "Vendor has been updated.",
              "webhooks.verification": "Verification event sent when confirming ownership of an endpoint."
            }
          },
          "object_id": {
            "description": "UUID of the object associated with the event.",
            "format": "uuid",
            "type": "string"
          },
          "object_metadata": {
            "description": "Additional metadata associated with the event.",
            "type": "object"
          }
        },
        "required": [
          "event_type",
          "object_id",
          "object_metadata"
        ],
        "type": "object"
      },
      "MonetaryAmountValueSchema": {
        "properties": {
          "amount": {
            "description": "Monetary amount in currency units (e.g. dollars, euros, etc.)",
            "title": "Amount",
            "type": "number"
          },
          "currency": {
            "description": "Currency code",
            "title": "Currency",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "title": "MonetaryAmountValueSchema",
        "type": "object"
      },
      "Money": {
        "properties": {
          "amount": {
            "description": "Money amount in representative currency",
            "readOnly": true,
            "type": "number"
          },
          "currency": {
            "description": "3-char currency code (e.g. 'USD', 'CAD')",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "currency_sign": {
            "description": "Currency sign (e.g. '$', '€')",
            "readOnly": true,
            "type": "string"
          },
          "formatted_amount": {
            "deprecated": true,
            "description": "Deprecated - use useIntl()'s formatMoney() instead. Human-readable amount with money context",
            "readOnly": true,
            "type": "string"
          },
          "formatted_explicit_amount": {
            "deprecated": true,
            "description": "Deprecated - use useIntl()'s formatMoney() instead. Displays foreign in currencies in extended form. Used primarily for admins i.e $100 CAD",
            "readOnly": true,
            "type": "string"
          },
          "formatted_short_amount": {
            "deprecated": true,
            "description": "Deprecated - use useIntl()'s formatMoney() instead. Displays foreign currencies in short form. i.e $CA100",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "Display name (e.g. 'US Dollar')",
            "readOnly": true,
            "type": "string"
          },
          "num_decimal_places": {
            "description": "Number of decimal places to render.",
            "readOnly": true,
            "type": "integer"
          }
        },
        "required": [
          "amount",
          "currency",
          "currency_sign",
          "formatted_amount",
          "formatted_explicit_amount",
          "formatted_short_amount",
          "name",
          "num_decimal_places"
        ],
        "type": "object"
      },
      "NativeRowColumnContentsByColumnNameRequestBody": {
        "properties": {
          "cells": {
            "description": "The contents of the cells in the row. The column name should be the name of the column, and the contents should be the value to insert into the cell. When setting a cell to reference many rows, each reference must be a separate entry in the list.",
            "items": {
              "$ref": "#/components/schemas/ColumnNameAndContentsRequestBody"
            },
            "title": "Cells",
            "type": "array"
          },
          "row": {
            "$ref": "#/components/schemas/NativeRowIdentifierRequestBody",
            "description": "An identifier for the Ramp object"
          }
        },
        "required": [
          "cells",
          "row"
        ],
        "title": "NativeRowColumnContentsByColumnName",
        "type": "object"
      },
      "NativeRowIdentifierRequestBody": {
        "properties": {
          "column_name": {
            "title": "Column Name",
            "type": "string"
          },
          "value": {
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "column_name",
          "value"
        ],
        "title": "NativeRowIdentifier",
        "type": "object"
      },
      "NativeTableReference": {
        "example": {
          "table_name": "users",
          "type": "native_table"
        },
        "properties": {
          "table_name": {
            "description": "The name of the native Ramp table",
            "enum": [
              "accounting_field_options",
              "approver_groups",
              "bills",
              "business_entities",
              "cards",
              "contracts",
              "departments",
              "external_attendees",
              "limits",
              "locations",
              "merchant_categories",
              "purchase_order_line_items",
              "purchase_orders",
              "reimbursements",
              "transactions",
              "users",
              "vendors"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "accounting_field_options": "An accounting field value, such as a GL account or class.",
              "approver_groups": "A group of users that can collectively approve a request.",
              "bills": "A vendor bill.",
              "business_entities": "A legal entity of the business.",
              "cards": "A physical or virtual card.",
              "contracts": "A vendor contract.",
              "departments": "A business department.",
              "external_attendees": "An expense attendee who is not a user in the business.",
              "limits": "A spend limit, also known as a fund.",
              "locations": "A business location.",
              "merchant_categories": "A merchant category, such as Airlines or Restaurants.",
              "purchase_order_line_items": "A purchase order line item.",
              "purchase_orders": "A purchase order.",
              "reimbursements": "An expense reimbursement.",
              "transactions": "A card transaction.",
              "users": "A user in the business.",
              "vendors": "A vendor."
            }
          },
          "type": {
            "default": "native_table",
            "enum": [
              "native_table"
            ],
            "type": "string"
          }
        },
        "required": [
          "table_name",
          "type"
        ],
        "type": "object"
      },
      "NativeTableReferenceCellContentsForDisplay": {
        "properties": {
          "has_more": {
            "description": "Indicates if there are more rows in the table than are included in this response",
            "type": "boolean"
          },
          "rows": {
            "description": "The rows referenced by this cell",
            "items": {
              "$ref": "#/components/schemas/NativeTableRowForDisplay"
            },
            "type": "array"
          },
          "table_name": {
            "description": "The native table that referenced rows are part of",
            "enum": [
              "accounting_field_options",
              "approver_groups",
              "bills",
              "business_entities",
              "cards",
              "contracts",
              "departments",
              "external_attendees",
              "limits",
              "locations",
              "merchant_categories",
              "purchase_order_line_items",
              "purchase_orders",
              "reimbursements",
              "transactions",
              "users",
              "vendors"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "accounting_field_options": "An accounting field value, such as a GL account or class.",
              "approver_groups": "A group of users that can collectively approve a request.",
              "bills": "A vendor bill.",
              "business_entities": "A legal entity of the business.",
              "cards": "A physical or virtual card.",
              "contracts": "A vendor contract.",
              "departments": "A business department.",
              "external_attendees": "An expense attendee who is not a user in the business.",
              "limits": "A spend limit, also known as a fund.",
              "locations": "A business location.",
              "merchant_categories": "A merchant category, such as Airlines or Restaurants.",
              "purchase_order_line_items": "A purchase order line item.",
              "purchase_orders": "A purchase order.",
              "reimbursements": "An expense reimbursement.",
              "transactions": "A card transaction.",
              "users": "A user in the business.",
              "vendors": "A vendor."
            }
          },
          "type": {
            "enum": [
              "native_table"
            ],
            "type": "string"
          }
        },
        "required": [
          "has_more",
          "rows",
          "table_name",
          "type"
        ],
        "type": "object"
      },
      "NativeTableReferenceRequestBody": {
        "example": {
          "table_name": "users",
          "type": "native_table"
        },
        "properties": {
          "table_name": {
            "description": "The name of the native Ramp table",
            "enum": [
              "accounting_field_options",
              "approver_groups",
              "bills",
              "business_entities",
              "cards",
              "contracts",
              "departments",
              "external_attendees",
              "limits",
              "locations",
              "merchant_categories",
              "purchase_order_line_items",
              "purchase_orders",
              "reimbursements",
              "transactions",
              "users",
              "vendors"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "accounting_field_options": "An accounting field value, such as a GL account or class.",
              "approver_groups": "A group of users that can collectively approve a request.",
              "bills": "A vendor bill.",
              "business_entities": "A legal entity of the business.",
              "cards": "A physical or virtual card.",
              "contracts": "A vendor contract.",
              "departments": "A business department.",
              "external_attendees": "An expense attendee who is not a user in the business.",
              "limits": "A spend limit, also known as a fund.",
              "locations": "A business location.",
              "merchant_categories": "A merchant category, such as Airlines or Restaurants.",
              "purchase_order_line_items": "A purchase order line item.",
              "purchase_orders": "A purchase order.",
              "reimbursements": "An expense reimbursement.",
              "transactions": "A card transaction.",
              "users": "A user in the business.",
              "vendors": "A vendor."
            }
          },
          "type": {
            "default": "native_table",
            "enum": [
              "native_table"
            ],
            "type": "string"
          }
        },
        "required": [
          "table_name"
        ],
        "type": "object"
      },
      "NativeTableRowForDisplay": {
        "properties": {
          "display_name": {
            "type": "string"
          },
          "external_key": {
            "description": "The id of the Ramp object",
            "type": "string"
          },
          "type": {
            "default": "native_table",
            "enum": [
              "native_table"
            ],
            "type": "string"
          }
        },
        "required": [
          "display_name",
          "external_key",
          "type"
        ],
        "type": "object"
      },
      "NestedConditionGroup": {
        "properties": {
          "condition_item_type": {
            "enum": [
              "CONDITION_GROUP"
            ],
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/ConditionItem"
            },
            "type": "array"
          },
          "operator": {
            "enum": [
              "ALL",
              "ANY",
              "NOT"
            ],
            "type": "string"
          }
        },
        "required": [
          "condition_item_type",
          "items",
          "operator"
        ],
        "type": "object"
      },
      "NestedPage": {
        "properties": {
          "next": {
            "format": "uuid",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "next"
        ],
        "type": "object"
      },
      "NextApprover": {
        "description": "A user responsible for the next approval action.",
        "properties": {
          "user_email": {
            "description": "Email address of the next approver.",
            "format": "email",
            "type": "string"
          },
          "user_id": {
            "description": "Unique identifier of the next approver.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "user_email",
          "user_id"
        ],
        "type": "object"
      },
      "NumDeleted": {
        "properties": {
          "deleted": {
            "title": "Deleted",
            "type": "integer"
          }
        },
        "required": [
          "deleted"
        ],
        "title": "NumDeleted",
        "type": "object"
      },
      "NumInserted": {
        "properties": {
          "inserted": {
            "title": "Inserted",
            "type": "integer"
          }
        },
        "required": [
          "inserted"
        ],
        "title": "NumInserted",
        "type": "object"
      },
      "NumInsertedNumUpdated": {
        "properties": {
          "inserted": {
            "description": "The number of rows inserted.",
            "title": "Inserted",
            "type": "integer"
          },
          "updated": {
            "description": "The number of rows updated.",
            "title": "Updated",
            "type": "integer"
          }
        },
        "required": [
          "inserted",
          "updated"
        ],
        "title": "NumInsertedNumUpdated",
        "type": "object"
      },
      "NumberCellContentsForDisplay": {
        "properties": {
          "display_name": {
            "type": "string"
          },
          "type": {
            "enum": [
              "number"
            ],
            "type": "string"
          },
          "value": {
            "type": "number"
          }
        },
        "required": [
          "display_name",
          "type",
          "value"
        ],
        "type": "object"
      },
      "NumericValue": {
        "properties": {
          "child_type": {
            "nullable": true,
            "type": "string"
          },
          "type": {
            "enum": [
              "NUMERIC"
            ],
            "type": "string"
          },
          "value": {
            "nullable": true,
            "type": "number"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "ObjectValuePoly": {
        "properties": {
          "object": {
            "$ref": "#/components/schemas/SingleObject"
          },
          "object_type": {
            "type": "string"
          },
          "operand_type": {
            "enum": [
              "OBJECT"
            ],
            "type": "string"
          }
        },
        "required": [
          "object",
          "object_type",
          "operand_type"
        ],
        "type": "object"
      },
      "Operand": {
        "discriminator": {
          "mapping": {
            "OBJECT": "#/components/schemas/ObjectValuePoly",
            "OBJECT_LIST": "#/components/schemas/PolyObjectValuePoly",
            "STATE_OBJECT_LIST_REFERENCE": "#/components/schemas/StateObjectListReference",
            "STATE_OBJECT_REFERENCE": "#/components/schemas/StateObjectReference",
            "STATE_REFERENCE": "#/components/schemas/StateReference",
            "STATIC_VALUE": "#/components/schemas/StaticValue"
          },
          "propertyName": "operand_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ObjectValuePoly"
          },
          {
            "$ref": "#/components/schemas/PolyObjectValuePoly"
          },
          {
            "$ref": "#/components/schemas/StateObjectListReference"
          },
          {
            "$ref": "#/components/schemas/StateObjectReference"
          },
          {
            "$ref": "#/components/schemas/StateReference"
          },
          {
            "$ref": "#/components/schemas/StaticValue"
          }
        ]
      },
      "Operator": {
        "properties": {
          "operator": {
            "type": "string"
          },
          "operator_display": {
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "operator",
          "operator_display"
        ],
        "type": "object"
      },
      "OutboundWebhookSubscriptionCreateRequestBody": {
        "example": {
          "additional_headers": {
            "Authorization": "Bearer token123",
            "X-Custom-Header": "value"
          },
          "endpoint_url": "https://example.com/webhook",
          "event_types": [
            "TRANSACTION_REFUNDED",
            "USER_INVITED"
          ]
        },
        "properties": {
          "additional_headers": {
            "additionalProperties": {
              "maxLength": 1000,
              "minLength": 1,
              "type": "string"
            },
            "description": "Optional headers to include with webhook requests. Max 5 headers, header names max 100 chars, values max 1000 chars.",
            "maxLength": 5,
            "type": "object"
          },
          "endpoint_url": {
            "description": "URL where webhook events will be sent",
            "format": "url",
            "type": "string"
          },
          "event_types": {
            "description": "Events that this subscription will receive",
            "items": {
              "enum": [
                "applications.status_updated",
                "bills.approved",
                "bills.archived",
                "bills.created",
                "bills.paid",
                "bills.ready_to_sync",
                "bills.rejected",
                "bills.updated",
                "draft_bills.created",
                "entities.created",
                "item_receipts.created",
                "payments.updated",
                "purchase_orders.archived",
                "purchase_orders.created",
                "purchase_orders.updated",
                "reimbursements.batch_payment_reimbursed",
                "reimbursements.ready_for_review",
                "reimbursements.ready_to_sync",
                "reimbursements.sync_requested",
                "spend_requests.comment_created",
                "spend_requests.created",
                "tests.test_event",
                "transactions.all_requirements_met_and_approved_changed",
                "transactions.authorized",
                "transactions.body_coding_updated",
                "transactions.cleared",
                "transactions.declined",
                "transactions.ready_for_review",
                "transactions.ready_to_sync",
                "transactions.receipt_added",
                "transactions.sync_requested",
                "transactions.synced",
                "unified_requests.created",
                "unified_requests.external_approval_request",
                "unified_requests.external_approval_request_reset",
                "unified_requests.modified",
                "unified_requests.node_advanced",
                "unified_requests.override_approved",
                "unified_requests.updated",
                "users.invite_accepted",
                "vendor_agreements.archived",
                "vendor_agreements.created",
                "vendor_agreements.deleted",
                "vendor_agreements.document_added",
                "vendor_agreements.renewal_milestone",
                "vendor_agreements.updated",
                "vendors.activated",
                "vendors.approved",
                "vendors.updated",
                "webhooks.verification"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "applications.status_updated": "Application status has changed, such as approved or rejected.",
                "bills.approved": "Bill has been approved.",
                "bills.archived": "Bill has been archived.",
                "bills.created": "Bill has been created.",
                "bills.paid": "Bill payment has been completed.",
                "bills.ready_to_sync": "Bill is ready to sync to an accounting system.",
                "bills.rejected": "Bill has been rejected.",
                "bills.updated": "Bill has been edited. Fires for invoice number updates, PO matching, accounting field updates, and payment detail changes. Does not fire for bill approvals or payments; use bills.approved and bills.paid for those updates.",
                "draft_bills.created": "Draft bill has been created. Invoice processing may still be in progress and extracted fields may be incomplete.",
                "entities.created": "A business entity was created.",
                "item_receipts.created": "Item receipt has been created.",
                "payments.updated": "Bill payment has been updated.",
                "purchase_orders.archived": "Purchase order has been archived.",
                "purchase_orders.created": "Purchase order has been created.",
                "purchase_orders.updated": "Purchase order has been modified.",
                "reimbursements.batch_payment_reimbursed": "Reimbursement batch payment has been reimbursed.",
                "reimbursements.ready_for_review": "Reimbursement needs review.",
                "reimbursements.ready_to_sync": "Reimbursement is ready to sync to an accounting system.",
                "reimbursements.sync_requested": "Reimbursement sync has been requested.",
                "spend_requests.comment_created": "Comment has been added to a spend request.",
                "spend_requests.created": "Spend request has been created.",
                "tests.test_event": "Test event used to exercise webhook delivery; not a business event.",
                "transactions.all_requirements_met_and_approved_changed": "A transaction's all_requirements_met_and_approved value changed. Fires in either direction, including when it flips back to false after a prior approval.",
                "transactions.authorized": "Transaction has been authorized.",
                "transactions.body_coding_updated": "A transaction's body-level accounting coding (GL account / tracking categories) was created or changed.",
                "transactions.cleared": "Transaction has settled. This also fires for refunds and reversals.",
                "transactions.declined": "Transaction has been declined.",
                "transactions.ready_for_review": "Transaction needs review or coding.",
                "transactions.ready_to_sync": "Transaction is ready to sync to an accounting system.",
                "transactions.receipt_added": "Receipt has been added to a transaction.",
                "transactions.sync_requested": "Transaction sync has been requested.",
                "transactions.synced": "Transaction has been marked as synced.",
                "unified_requests.created": "Unified request has been created.",
                "unified_requests.external_approval_request": "Unified request is ready for external approval.",
                "unified_requests.external_approval_request_reset": "External approval request on a unified request has been reset.",
                "unified_requests.modified": "Unified request has been modified.",
                "unified_requests.node_advanced": "Unified request advanced to another workflow node.",
                "unified_requests.override_approved": "Unified request override has been approved.",
                "unified_requests.updated": "Unified request has been updated.",
                "users.invite_accepted": "User has accepted an invitation.",
                "vendor_agreements.archived": "Vendor agreement has been archived.",
                "vendor_agreements.created": "Vendor agreement has been created.",
                "vendor_agreements.deleted": "Vendor agreement has been deleted.",
                "vendor_agreements.document_added": "Document has been added to a vendor agreement.",
                "vendor_agreements.renewal_milestone": "Vendor agreement has reached the fixed 90-day renewal milestone.",
                "vendor_agreements.updated": "Vendor agreement has been updated.",
                "vendors.activated": "Vendor has been activated.",
                "vendors.approved": "Vendor has been approved.",
                "vendors.updated": "Vendor has been updated.",
                "webhooks.verification": "Verification event sent when confirming ownership of an endpoint."
              }
            },
            "type": "array"
          }
        },
        "required": [
          "endpoint_url",
          "event_types"
        ],
        "type": "object"
      },
      "OutboundWebhookSubscriptionResource": {
        "example": {
          "business_id": "b12a3456-7890-1234-5678-901234567890",
          "created_at": "2023-01-01T00:00:00Z",
          "endpoint_url": "https://example.com/webhook",
          "event_types": [
            "transactions.ready_for_review"
          ],
          "id": "c16b6ee1-2f5d-45e9-9fb4-c1c541a9ea70",
          "status": "ACTIVE",
          "updated_at": "2023-01-02T00:00:00Z"
        },
        "properties": {
          "business_id": {
            "description": "UUID of the business that this webhook subscription is for",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "businesses",
              "type": "many-to-one"
            }
          },
          "created_at": {
            "description": "ISO-8601 timestamp when the subscription was created",
            "format": "date-time",
            "type": "string"
          },
          "endpoint_url": {
            "description": "URL where webhook events will be sent",
            "type": "string"
          },
          "event_types": {
            "description": "Types of events this subscription will receive",
            "items": {
              "enum": [
                "applications.status_updated",
                "bills.approved",
                "bills.archived",
                "bills.created",
                "bills.paid",
                "bills.ready_to_sync",
                "bills.rejected",
                "bills.updated",
                "draft_bills.created",
                "entities.created",
                "item_receipts.created",
                "payments.updated",
                "purchase_orders.archived",
                "purchase_orders.created",
                "purchase_orders.updated",
                "reimbursements.batch_payment_reimbursed",
                "reimbursements.ready_for_review",
                "reimbursements.ready_to_sync",
                "reimbursements.sync_requested",
                "spend_requests.comment_created",
                "spend_requests.created",
                "tests.test_event",
                "transactions.all_requirements_met_and_approved_changed",
                "transactions.authorized",
                "transactions.body_coding_updated",
                "transactions.cleared",
                "transactions.declined",
                "transactions.ready_for_review",
                "transactions.ready_to_sync",
                "transactions.receipt_added",
                "transactions.sync_requested",
                "transactions.synced",
                "unified_requests.created",
                "unified_requests.external_approval_request",
                "unified_requests.external_approval_request_reset",
                "unified_requests.modified",
                "unified_requests.node_advanced",
                "unified_requests.override_approved",
                "unified_requests.updated",
                "users.invite_accepted",
                "vendor_agreements.archived",
                "vendor_agreements.created",
                "vendor_agreements.deleted",
                "vendor_agreements.document_added",
                "vendor_agreements.renewal_milestone",
                "vendor_agreements.updated",
                "vendors.activated",
                "vendors.approved",
                "vendors.updated",
                "webhooks.verification"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "applications.status_updated": "Application status has changed, such as approved or rejected.",
                "bills.approved": "Bill has been approved.",
                "bills.archived": "Bill has been archived.",
                "bills.created": "Bill has been created.",
                "bills.paid": "Bill payment has been completed.",
                "bills.ready_to_sync": "Bill is ready to sync to an accounting system.",
                "bills.rejected": "Bill has been rejected.",
                "bills.updated": "Bill has been edited. Fires for invoice number updates, PO matching, accounting field updates, and payment detail changes. Does not fire for bill approvals or payments; use bills.approved and bills.paid for those updates.",
                "draft_bills.created": "Draft bill has been created. Invoice processing may still be in progress and extracted fields may be incomplete.",
                "entities.created": "A business entity was created.",
                "item_receipts.created": "Item receipt has been created.",
                "payments.updated": "Bill payment has been updated.",
                "purchase_orders.archived": "Purchase order has been archived.",
                "purchase_orders.created": "Purchase order has been created.",
                "purchase_orders.updated": "Purchase order has been modified.",
                "reimbursements.batch_payment_reimbursed": "Reimbursement batch payment has been reimbursed.",
                "reimbursements.ready_for_review": "Reimbursement needs review.",
                "reimbursements.ready_to_sync": "Reimbursement is ready to sync to an accounting system.",
                "reimbursements.sync_requested": "Reimbursement sync has been requested.",
                "spend_requests.comment_created": "Comment has been added to a spend request.",
                "spend_requests.created": "Spend request has been created.",
                "tests.test_event": "Test event used to exercise webhook delivery; not a business event.",
                "transactions.all_requirements_met_and_approved_changed": "A transaction's all_requirements_met_and_approved value changed. Fires in either direction, including when it flips back to false after a prior approval.",
                "transactions.authorized": "Transaction has been authorized.",
                "transactions.body_coding_updated": "A transaction's body-level accounting coding (GL account / tracking categories) was created or changed.",
                "transactions.cleared": "Transaction has settled. This also fires for refunds and reversals.",
                "transactions.declined": "Transaction has been declined.",
                "transactions.ready_for_review": "Transaction needs review or coding.",
                "transactions.ready_to_sync": "Transaction is ready to sync to an accounting system.",
                "transactions.receipt_added": "Receipt has been added to a transaction.",
                "transactions.sync_requested": "Transaction sync has been requested.",
                "transactions.synced": "Transaction has been marked as synced.",
                "unified_requests.created": "Unified request has been created.",
                "unified_requests.external_approval_request": "Unified request is ready for external approval.",
                "unified_requests.external_approval_request_reset": "External approval request on a unified request has been reset.",
                "unified_requests.modified": "Unified request has been modified.",
                "unified_requests.node_advanced": "Unified request advanced to another workflow node.",
                "unified_requests.override_approved": "Unified request override has been approved.",
                "unified_requests.updated": "Unified request has been updated.",
                "users.invite_accepted": "User has accepted an invitation.",
                "vendor_agreements.archived": "Vendor agreement has been archived.",
                "vendor_agreements.created": "Vendor agreement has been created.",
                "vendor_agreements.deleted": "Vendor agreement has been deleted.",
                "vendor_agreements.document_added": "Document has been added to a vendor agreement.",
                "vendor_agreements.renewal_milestone": "Vendor agreement has reached the fixed 90-day renewal milestone.",
                "vendor_agreements.updated": "Vendor agreement has been updated.",
                "vendors.activated": "Vendor has been activated.",
                "vendors.approved": "Vendor has been approved.",
                "vendors.updated": "Vendor has been updated.",
                "webhooks.verification": "Verification event sent when confirming ownership of an endpoint."
              }
            },
            "type": "array"
          },
          "id": {
            "description": "Unique identifier for the webhook subscription",
            "type": "string"
          },
          "status": {
            "description": "Current status of the webhook subscription",
            "enum": [
              "active",
              "inactive",
              "pending_verification"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "ISO-8601 timestamp when the subscription was last updated",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "created_at",
          "endpoint_url",
          "event_types",
          "id",
          "status",
          "updated_at"
        ],
        "type": "object",
        "x-resource-name": "outbound_webhook_subscription"
      },
      "OutboundWebhookSubscriptionVerifyRequestBody": {
        "example": {
          "challenge": "ramp_challenge_a8f5f167f44f4964e6c998dee827110c"
        },
        "properties": {
          "challenge": {
            "description": "Challenge to verify webhook endpoint",
            "type": "string"
          }
        },
        "required": [
          "challenge"
        ],
        "type": "object"
      },
      "OutboundWebhookSubscriptionWithSecretResource": {
        "example": {
          "additional_headers": {
            "Authorization": "Bearer token123",
            "X-Custom-Header": "value"
          },
          "business_id": "b12a3456-7890-1234-5678-901234567890",
          "created_at": "2023-01-01T00:00:00Z",
          "endpoint_url": "https://example.com/webhook",
          "event_types": [
            "transactions.ready_for_review"
          ],
          "id": "c16b6ee1-2f5d-45e9-9fb4-c1c541a9ea70",
          "secret": "ramp_sec_aXbKpLmNqRsTuVwXyZaBcDeFgHiJkLmN",
          "status": "ACTIVE",
          "updated_at": "2023-01-02T00:00:00Z"
        },
        "properties": {
          "additional_headers": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Headers to include with webhook requests",
            "type": "object"
          },
          "business_id": {
            "description": "UUID of the business that this webhook subscription is for",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "businesses",
              "type": "many-to-one"
            }
          },
          "created_at": {
            "description": "ISO-8601 timestamp when the subscription was created",
            "format": "date-time",
            "type": "string"
          },
          "endpoint_url": {
            "description": "URL where webhook events will be sent",
            "type": "string"
          },
          "event_types": {
            "description": "Types of events this subscription will receive",
            "items": {
              "enum": [
                "applications.status_updated",
                "bills.approved",
                "bills.archived",
                "bills.created",
                "bills.paid",
                "bills.ready_to_sync",
                "bills.rejected",
                "bills.updated",
                "draft_bills.created",
                "entities.created",
                "item_receipts.created",
                "payments.updated",
                "purchase_orders.archived",
                "purchase_orders.created",
                "purchase_orders.updated",
                "reimbursements.batch_payment_reimbursed",
                "reimbursements.ready_for_review",
                "reimbursements.ready_to_sync",
                "reimbursements.sync_requested",
                "spend_requests.comment_created",
                "spend_requests.created",
                "tests.test_event",
                "transactions.all_requirements_met_and_approved_changed",
                "transactions.authorized",
                "transactions.body_coding_updated",
                "transactions.cleared",
                "transactions.declined",
                "transactions.ready_for_review",
                "transactions.ready_to_sync",
                "transactions.receipt_added",
                "transactions.sync_requested",
                "transactions.synced",
                "unified_requests.created",
                "unified_requests.external_approval_request",
                "unified_requests.external_approval_request_reset",
                "unified_requests.modified",
                "unified_requests.node_advanced",
                "unified_requests.override_approved",
                "unified_requests.updated",
                "users.invite_accepted",
                "vendor_agreements.archived",
                "vendor_agreements.created",
                "vendor_agreements.deleted",
                "vendor_agreements.document_added",
                "vendor_agreements.renewal_milestone",
                "vendor_agreements.updated",
                "vendors.activated",
                "vendors.approved",
                "vendors.updated",
                "webhooks.verification"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "applications.status_updated": "Application status has changed, such as approved or rejected.",
                "bills.approved": "Bill has been approved.",
                "bills.archived": "Bill has been archived.",
                "bills.created": "Bill has been created.",
                "bills.paid": "Bill payment has been completed.",
                "bills.ready_to_sync": "Bill is ready to sync to an accounting system.",
                "bills.rejected": "Bill has been rejected.",
                "bills.updated": "Bill has been edited. Fires for invoice number updates, PO matching, accounting field updates, and payment detail changes. Does not fire for bill approvals or payments; use bills.approved and bills.paid for those updates.",
                "draft_bills.created": "Draft bill has been created. Invoice processing may still be in progress and extracted fields may be incomplete.",
                "entities.created": "A business entity was created.",
                "item_receipts.created": "Item receipt has been created.",
                "payments.updated": "Bill payment has been updated.",
                "purchase_orders.archived": "Purchase order has been archived.",
                "purchase_orders.created": "Purchase order has been created.",
                "purchase_orders.updated": "Purchase order has been modified.",
                "reimbursements.batch_payment_reimbursed": "Reimbursement batch payment has been reimbursed.",
                "reimbursements.ready_for_review": "Reimbursement needs review.",
                "reimbursements.ready_to_sync": "Reimbursement is ready to sync to an accounting system.",
                "reimbursements.sync_requested": "Reimbursement sync has been requested.",
                "spend_requests.comment_created": "Comment has been added to a spend request.",
                "spend_requests.created": "Spend request has been created.",
                "tests.test_event": "Test event used to exercise webhook delivery; not a business event.",
                "transactions.all_requirements_met_and_approved_changed": "A transaction's all_requirements_met_and_approved value changed. Fires in either direction, including when it flips back to false after a prior approval.",
                "transactions.authorized": "Transaction has been authorized.",
                "transactions.body_coding_updated": "A transaction's body-level accounting coding (GL account / tracking categories) was created or changed.",
                "transactions.cleared": "Transaction has settled. This also fires for refunds and reversals.",
                "transactions.declined": "Transaction has been declined.",
                "transactions.ready_for_review": "Transaction needs review or coding.",
                "transactions.ready_to_sync": "Transaction is ready to sync to an accounting system.",
                "transactions.receipt_added": "Receipt has been added to a transaction.",
                "transactions.sync_requested": "Transaction sync has been requested.",
                "transactions.synced": "Transaction has been marked as synced.",
                "unified_requests.created": "Unified request has been created.",
                "unified_requests.external_approval_request": "Unified request is ready for external approval.",
                "unified_requests.external_approval_request_reset": "External approval request on a unified request has been reset.",
                "unified_requests.modified": "Unified request has been modified.",
                "unified_requests.node_advanced": "Unified request advanced to another workflow node.",
                "unified_requests.override_approved": "Unified request override has been approved.",
                "unified_requests.updated": "Unified request has been updated.",
                "users.invite_accepted": "User has accepted an invitation.",
                "vendor_agreements.archived": "Vendor agreement has been archived.",
                "vendor_agreements.created": "Vendor agreement has been created.",
                "vendor_agreements.deleted": "Vendor agreement has been deleted.",
                "vendor_agreements.document_added": "Document has been added to a vendor agreement.",
                "vendor_agreements.renewal_milestone": "Vendor agreement has reached the fixed 90-day renewal milestone.",
                "vendor_agreements.updated": "Vendor agreement has been updated.",
                "vendors.activated": "Vendor has been activated.",
                "vendors.approved": "Vendor has been approved.",
                "vendors.updated": "Vendor has been updated.",
                "webhooks.verification": "Verification event sent when confirming ownership of an endpoint."
              }
            },
            "type": "array"
          },
          "id": {
            "description": "Unique identifier for the webhook subscription",
            "type": "string"
          },
          "secret": {
            "description": "Secret key for the webhook subscription",
            "type": "string"
          },
          "status": {
            "description": "Current status of the webhook subscription",
            "enum": [
              "active",
              "inactive",
              "pending_verification"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "ISO-8601 timestamp when the subscription was last updated",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "additional_headers",
          "created_at",
          "endpoint_url",
          "event_types",
          "id",
          "secret",
          "status",
          "updated_at"
        ],
        "type": "object",
        "x-resource-name": "outbound_webhook_subscription"
      },
      "PCICardDetails": {
        "example": {
          "created_at": "2024-05-12T01:37:27Z",
          "cvv": "449",
          "expiration": "1226",
          "id": "a40a6ce8-70d4-4d06-91e1-0728ad9bbe39",
          "pan": "4403900918007455"
        },
        "properties": {
          "created_at": {
            "description": "Date time at which the card is created. It conforms to ISO8601 format",
            "format": "date-time",
            "type": "string"
          },
          "cvv": {
            "description": "Card Verification Value.",
            "type": "string"
          },
          "expiration": {
            "description": "Card expiration date in MMYY format.",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the card.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "cards",
              "type": "one-to-one"
            }
          },
          "pan": {
            "description": "Primary account number (PAN) of the card.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "PCILimit": {
        "example": {
          "allowed_overage_percent_override": null,
          "card": {
            "created_at": "2024-05-12T01:37:27Z",
            "cvv": "449",
            "expiration": "1226",
            "id": "a40a6ce8-70d4-4d06-91e1-0728ad9bbe39",
            "pan": "4403900918007455"
          },
          "created_at": "2024-05-12T01:37:27Z",
          "display_name": "Travel Hotel Booking Purchase",
          "restrictions": {
            "allowed_categories": [
              35
            ],
            "allowed_vendors": [],
            "auto_lock_date": "2026-12-01T00:00:00Z",
            "blocked_categories": [],
            "blocked_vendors": [],
            "interval": "TOTAL",
            "limit": {
              "amount": 50000,
              "currency_code": "USD"
            }
          },
          "spend_limit_id": "d8135cfe-0396-4b2d-b2cf-ad809fb04731",
          "spend_program_id": null,
          "user_id": "2ba219ba-5867-453f-bec2-b8d0414b7f75"
        },
        "properties": {
          "allowed_overage_percent_override": {
            "description": "Fund-level override for the allowed overage percent. This is a decimal value between 0 and 100, where `10` means 10%. If null, the limit inherits from the spend program or business default.",
            "format": "decimal",
            "nullable": true,
            "type": "string"
          },
          "card": {
            "$ref": "#/components/schemas/PCICardDetails",
            "description": "Card details.",
            "readOnly": true
          },
          "created_at": {
            "description": "Time at which the limit is created, presented in ISO8601 format.",
            "format": "date-time",
            "type": "string"
          },
          "display_name": {
            "description": "Display name of the limit.",
            "nullable": true,
            "type": "string"
          },
          "restrictions": {
            "$ref": "#/components/schemas/ApiSpendingRestrictionsDump",
            "description": "Restrictions imposed on this limit.",
            "readOnly": true
          },
          "spend_limit_id": {
            "description": "Unique identifier of the limit.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "limits",
              "type": "many-to-one"
            }
          },
          "spend_program_id": {
            "description": "Unique identifier of the associated Spend Program.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "spend_programs",
              "type": "many-to-one"
            }
          },
          "user_id": {
            "description": "Unique identifier of the user this limit is assigned to.",
            "format": "uuid",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "allowed_overage_percent_override",
          "card",
          "created_at",
          "display_name",
          "restrictions",
          "spend_limit_id",
          "spend_program_id",
          "user_id"
        ],
        "type": "object",
        "x-resource-name": "limits"
      },
      "POLineItemCustomFieldConfigSnapshot": {
        "description": "Snapshot of a PO line item custom field config at SpendRequest creation time.",
        "properties": {
          "custom_field_id": {
            "title": "Custom Field Id",
            "type": "string"
          },
          "is_enabled": {
            "title": "Is Enabled",
            "type": "boolean"
          },
          "is_required": {
            "title": "Is Required",
            "type": "boolean"
          }
        },
        "required": [
          "custom_field_id",
          "is_enabled",
          "is_required"
        ],
        "title": "POLineItemCustomFieldConfigSnapshot",
        "type": "object"
      },
      "PaginatedResponseAiSpendApiKeyResourceSchema": {
        "example": {
          "data": [
            {
              "active_spend_limit": {
                "amount": {
                  "currency": "USD",
                  "value": 500000
                },
                "interval": "monthly"
              },
              "estimated_cost": {
                "currency": "USD",
                "value": 184250
              },
              "external_id": "key_abc123",
              "id": "0198f3c4-ece8-7a41-968f-7f399e397ef6",
              "name": "Production coding",
              "owner": {
                "email": "jamie.chen@example.com",
                "first_name": "Jamie",
                "id": "0198f3bd-bcb7-76a0-a68c-f99fd15df941",
                "last_name": "Chen"
              },
              "provider": "OPENAI",
              "provider_created_at": "2026-03-12T15:30:00Z",
              "provider_key_hint": "...a1b2",
              "provider_last_used_at": "2026-08-31T23:54:12Z",
              "status": "active",
              "synced_at": "2026-09-01T01:10:04Z",
              "tags": [
                {
                  "key": "Cost center",
                  "value": "Engineering"
                }
              ]
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/AiSpendApiKey"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseAiSpendUsageResourceSchema": {
        "example": {
          "data": [
            {
              "cached_input_tokens": 20,
              "department_id": null,
              "estimated_cost": {
                "currency": "USD",
                "value": 124
              },
              "input_tokens": 150,
              "model": "claude-sonnet-4",
              "output_tokens": 30,
              "product": "claude_code",
              "provider": "ANTHROPIC",
              "usage_date": "2026-05-01",
              "user_email": null,
              "user_id": null,
              "web_search_requests": 3
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/AiSpendUsage"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiAccountingCustomFieldOptionResourceSchema": {
        "example": {
          "data": [
            {
              "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
              "code": "20001",
              "created_at": "2019-08-28T14:15:22+00:00",
              "entity_remote_ids": [
                "sub-001",
                "sub-002"
              ],
              "id": "123",
              "is_active": true,
              "provider_name": "Accounting",
              "ramp_id": "649b6731-33c6-4ff5-8a5d-2333fcc90ace",
              "updated_at": "2020-08-28T14:40:12+00:00",
              "value": "Office/Admin:Phone & Internet"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/CustomFieldOption"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiAccountingCustomFieldResourceSchema": {
        "example": {
          "data": [
            {
              "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
              "created_at": "2019-08-28T14:15:22+00:00",
              "display_name": "Dept",
              "id": "Department",
              "input_type": "SINGLE_CHOICE",
              "is_active": true,
              "is_splittable": true,
              "name": "Department",
              "provider_name": "QuickBooks",
              "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
              "updated_at": "2020-08-28T14:40:12+00:00"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingCustomFieldResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiAccountingGLAccountResourceSchema": {
        "example": {
          "data": [
            {
              "accounting_connection_id": "7de1fa6c-1fe9-432e-83d8-80971a91f903",
              "classification": "EXPENSE",
              "code": "6410",
              "created_at": "2019-08-28T14:15:22+00:00",
              "entity_remote_ids": [
                "sub-001",
                "sub-002"
              ],
              "gl_account_category_info": {
                "id": "Category",
                "name": "Category",
                "ramp_id": "96bb7007-eec5-430f-8d09-e033cbc000c2"
              },
              "id": "514",
              "is_active": true,
              "name": "Employees:Salaries & Wages",
              "provider_name": "QuickBooks",
              "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
              "updated_at": "2020-08-28T14:40:12+00:00",
              "visibility": "VISIBLE"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/GeneralLedgerAccount"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiAccountingInventoryItemOptionResourceSchema": {
        "example": {
          "data": [
            {
              "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
              "entity_remote_ids": [
                "sub-001",
                "sub-002"
              ],
              "gl_account_id": "b2f34c12-1234-5678-abcd-ef0123456789",
              "id": "inventory_item_001",
              "is_active": true,
              "name": "Widget A",
              "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingInventoryItemOptionResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiAccountingTaxCodeOptionResourceSchema": {
        "example": {
          "data": [
            {
              "accounting_connection_id": "e67fef58-33d2-4a16-90c7-6cc071507511",
              "entity_remote_ids": [
                "sub-001",
                "sub-002"
              ],
              "id": "tax_code_001",
              "is_active": true,
              "name": "Standard Tax",
              "ramp_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
              "tax_rate_ids": [
                "tax_rate_001",
                "tax_rate_002"
              ]
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingTaxCodeOptionResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiAccountingTaxRateResourceSchema": {
        "example": {
          "data": [
            {
              "accounting_connection_id": "7de1fa6c-1fe9-432e-83d8-80971a91f903",
              "accounting_gl_account_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
              "id": "tax_rate_gst_5",
              "name": "GST",
              "ramp_id": "649b6731-33c6-4ff5-8a5d-2333fcc90ace",
              "rate": "0.05"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingTaxRateResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiAccountingVendorResourceSchema": {
        "example": {
          "data": [
            {
              "accounting_connection_id": "85e1fa6c-1fe9-432e-83d8-80971a91f903",
              "code": "19566",
              "created_at": "2019-08-28T14:15:22+00:00",
              "entity_remote_ids": [
                "sub-001",
                "sub-002"
              ],
              "id": "123",
              "is_active": true,
              "is_synced": true,
              "name": "Amazon",
              "provider_name": "QuickBooks",
              "ramp_id": "649b6731-33c6-4ff5-8a5d-2333fcc90ace",
              "updated_at": "2020-08-28T14:40:12+00:00",
              "vendor_category_info": {
                "id": "Merchant",
                "name": "Merchant",
                "ramp_id": "96bb7007-eec5-430f-8d09-e033cbc000c2"
              }
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/VendorAccount"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiBankAccountResource": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiBankAccountResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiBillResourceSchema": {
        "example": {
          "data": [
            {
              "accounting_date": "2024-05-12T00:00:00+00:00",
              "accounting_field_selections": [],
              "accounting_sync_date": "2024-05-12T00:00:00+00:00",
              "amount": {
                "amount": 96993,
                "currency_code": "USD"
              },
              "bill_owner": {
                "first_name": "John",
                "id": "96bb7007-eec5-430f-8d09-e033cbc000c2",
                "last_name": "Doe"
              },
              "created_at": "2024-05-12T01:37:27+00:00",
              "deep_link_url": null,
              "due_at": "2022-12-31T00:00:00+00:00",
              "enable_accounting_sync": true,
              "entity_id": "5bcc3734-f03a-4756-bc4b-afeb52d738ad",
              "fx_conversion_rate": "1.0",
              "id": "6e3816e3-0e53-42ae-b075-bdb0adff10c4",
              "inventory_line_items": [
                {
                  "accounting_field_selections": [
                    {
                      "category_info": {
                        "external_id": "Category",
                        "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                        "name": "Category",
                        "type": "GL_ACCOUNT"
                      },
                      "display_name": "Ramp Category - Renamed",
                      "external_id": "426",
                      "id": "07b4ce4d-2750-412e-aef4-6b7815f1411a",
                      "name": "Ramp Category",
                      "type": "Subsidiary"
                    }
                  ],
                  "amount": {
                    "amount": 25000,
                    "currency_code": "USD"
                  },
                  "memo": "Staplers.",
                  "quantity": 5,
                  "unit_price": {
                    "amount": 5000,
                    "currency_code": "USD"
                  }
                }
              ],
              "invoice_number": "432",
              "invoice_urls": [
                "https://receipts.ramp.com/some-url"
              ],
              "issued_at": "2022-12-31T00:00:00+00:00",
              "line_items": [
                {
                  "accounting_field_selections": [],
                  "amount": {
                    "amount": 1998,
                    "currency_code": "USD"
                  },
                  "memo": "Telephone Headset"
                },
                {
                  "accounting_field_selections": [],
                  "amount": {
                    "amount": 94995,
                    "currency_code": "USD"
                  },
                  "memo": "2-Drawer Lateral File Cabinet Steel White"
                }
              ],
              "memo": "Office Supplies",
              "paid_at": "2024-05-15T14:02:28.298Z",
              "payment": {
                "amount": {
                  "amount": 96993,
                  "currency_code": "USD"
                },
                "bank_debit_trace_id": {
                  "descriptor": "Trace ID",
                  "trace_id": "076921900257225"
                },
                "customer_friendly_payment_id": "A6PMDVX628",
                "effective_date": "2024-05-13T00:00:00+00:00",
                "payment_date": "2024-05-13T00:00:00+00:00",
                "payment_method": "ACH",
                "trace_id": {
                  "descriptor": "ACH Trace ID",
                  "trace_id": "076921900257224"
                }
              },
              "posting_date": "2024-05-12T00:00:00+00:00",
              "remote_id": null,
              "status": "OPEN",
              "status_summary": "PAYMENT_SCHEDULED",
              "sync_status": "NOT_SYNCED",
              "vendor": {
                "remote_code": "AMZON12",
                "remote_id": "Amazon",
                "remote_name": "Amazon",
                "type": "BUSINESS"
              },
              "vendor_contact_id": "ef825336-820e-4dd5-9d7f-0fc508e978c9",
              "vendor_memo": "Invoice #432 - July 2020"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Bill"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiBillingStatementResourceSchema": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiBillingStatementResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiCashbackResourceSchema": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Cashback"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiCommentResourceSchema": {
        "example": {
          "data": [
            {
              "created_at": "2026-05-05T00:00:00Z",
              "id": "e123198c-1fd2-439c-a268-220c2f8fb115",
              "message": "Please review [line-item totals](https://example.com/totals).",
              "user_id": "506a7096-98c0-4ab5-86ef-20c884a78e74"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiCommentResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiDepartmentResourceSchema": {
        "example": {
          "data": [
            {
              "id": "c16b6ee1-2f5d-45e9-9fb4-c1c541a9ea70",
              "name": "Bookkeeping"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Department"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiDraftBillResourceSchema": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/DraftBill"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiEntityResourceSchema": {
        "example": {
          "data": [
            {
              "accounts": [
                {
                  "bank_account_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
                  "classification": "ASSET",
                  "created_at": "2020-01-12T01:30:00+00:00",
                  "external_id": "123456",
                  "external_name": "Checking Account",
                  "internal_id": "",
                  "usage_type": "BILL_PAY_BANK_ACCOUNT"
                }
              ],
              "connected_subsidiary": {
                "external_id": "426",
                "id": "07b4ce4d-2750-412e-aef4-6b7815f1411c",
                "name": "Ramp Canada Inc."
              },
              "currency": "CAD",
              "custom_record_fields": [
                {
                  "column_display_name": "Entity Region",
                  "column_id": "entity_region",
                  "value": {
                    "display_name": "West",
                    "type": "text",
                    "value": "West"
                  }
                }
              ],
              "default_bill_pay_payment_account_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
              "entity_name": "Jill's Art Shop Canada",
              "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
              "is_primary": true,
              "location_ids": [
                "cabfda32-91a9-41d7-9d24-5c9c6dd19419"
              ],
              "payment_accounts": [
                {
                  "account_name": "Business Checking",
                  "account_number_last_four": "1234",
                  "currency": "USD",
                  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
                }
              ]
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiEntityResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiFundResource": {
        "example": {
          "data": [
            {
              "balance": {
                "cleared": {
                  "amount": 6500,
                  "currency_code": "USD"
                },
                "pending": {
                  "amount": 3500,
                  "currency_code": "USD"
                },
                "total": {
                  "amount": 10000,
                  "currency_code": "USD"
                }
              },
              "cards": [
                {
                  "card_id": "a40a6ce8-70d4-4d06-91e1-0728ad9bbe39",
                  "created_at": "2024-05-12T01:37:27+00:00",
                  "display_name": "T&E Card",
                  "expiration": "0227",
                  "last_four": "2543",
                  "user_id": "2ba219ba-5867-453f-bec2-b8d0414b7f75"
                }
              ],
              "created_at": "2024-05-12T01:37:27+00:00",
              "display_name": "T&E",
              "entity_id": "c18d9d2e-964f-476d-8bb3-9ac078f00e11",
              "id": "d8135cfe-0396-4b2d-b2cf-ad809fb04731",
              "is_exempt_from_policy_agent": false,
              "is_shareable": true,
              "members": [
                {
                  "suspension": null,
                  "user_id": "2ba219ba-5867-453f-bec2-b8d0414b7f75"
                }
              ],
              "overrides_spend_program": false,
              "permitted_spend_types": {
                "physical_card_enabled": true,
                "reimbursements_enabled": false,
                "virtual_card_enabled": true
              },
              "spend_program_id": "3a5b1f62-988f-4190-bf31-b7ae87c5dfee",
              "spending_restrictions": {
                "allowed_category_codes": [
                  35
                ],
                "allowed_vendor_ids": null,
                "auto_lock_date": null,
                "blocked_category_codes": null,
                "blocked_vendor_ids": null,
                "interval": "MONTHLY",
                "limit": {
                  "amount": 500000,
                  "currency_code": "USD"
                },
                "next_interval_resets_at": "2022-12-01T00:00:00+00:00",
                "start_of_interval": "2022-11-01T00:00:00+00:00",
                "temporary_limit": null,
                "transaction_amount_limit": {
                  "amount": 10000,
                  "currency_code": "USD"
                }
              },
              "state": "ACTIVE",
              "suspension": null
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Fund"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiItemReceiptResourceSchema": {
        "example": {
          "data": [
            {
              "archived_at": null,
              "created_at": "2022-05-10T00:00:00Z",
              "documents": [
                "https://someurl.com"
              ],
              "id": "123e4567-e89b-12d3-a456-426614174000",
              "item_receipt_number": "1234567890",
              "line_items": [
                {
                  "accounting_field_selections": [],
                  "amount": {
                    "amount": 100,
                    "currency_code": "USD"
                  },
                  "inventory_assignments": [],
                  "memo": null,
                  "purchase_order_line_item_id": "123e4567-e89b-12d3-a456-426614174000",
                  "quantity": 1,
                  "unit_price": {
                    "amount": 500,
                    "currency_code": "USD"
                  }
                }
              ],
              "memo": null,
              "purchase_order_id": "123e4567-e89b-12d3-a456-426614174000",
              "received_at": "2022-05-09T00:00:00Z",
              "remote_id": "1"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiItemReceiptResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiLocationResourceSchema": {
        "example": {
          "data": [
            {
              "entity_id": "bb25a7e8-cc2f-4ba7-9bf4-7730ffe152bb",
              "id": "f4efe11c-221f-4b49-a1e4-33eaf96a49ee",
              "name": "New York City, NY"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Location"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiMemoResourceSchema": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Memo"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiMerchantResourceSchema": {
        "example": {
          "data": [
            {
              "id": "d38a988c-377a-421b-9017-0c8f40a4304e",
              "is_auto_approved": true,
              "merchant_name": "Google",
              "sk_category_name": "Advertising"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Merchant"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiPaymentResourceSchema": {
        "example": {
          "data": [
            {
              "amount": {
                "currency": "USD",
                "value": 500000
              },
              "check_details": null,
              "customer_friendly_payment_id": "RAMP-PAY-1234",
              "entity_id": "0ef02ad1-824d-4e85-8a59-a78e428bd883",
              "external_invoice_number": "INV-12345",
              "external_ref": "ST_INV_12345",
              "failure_reason": null,
              "id": "4bcbba09-40a8-434f-9573-fa565c76fbcc",
              "is_cancelable": true,
              "payment_method": {
                "id": "87e601aa-1832-4879-b808-ba99a857f839",
                "type": "ACH"
              },
              "scheduled_date": "2026-02-10",
              "source_bank_account_id": "4bcbba09-40a8-434f-9573-fa565c76fbcc",
              "status": "SCHEDULED",
              "status_detail": "SCHEDULED",
              "vendor_id": "c99e6793-e2d3-4d26-8b0e-98ff4765726d"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Payment"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiPhysicalCardResource": {
        "example": {
          "data": [
            {
              "automatic_routing_enabled": false,
              "cardholder_id": "3a5b1f62-988f-4190-bf31-b7ae87c5df42",
              "cardholder_name": "Julie Phillip",
              "created_at": "2022-05-04T00:00:00+00:00",
              "display_name": "T&E",
              "expiration": "0227",
              "fulfillment": {
                "fulfillment_status": "ISSUED",
                "shipping": {
                  "recipient_address": {
                    "address1": "123 Main St",
                    "city": "New York City",
                    "country": "US",
                    "first_name": "Julie",
                    "last_name": "Phillip",
                    "postal_code": "10003",
                    "state": "NY"
                  }
                },
                "shipping_date": null,
                "shipping_eta": null,
                "shipping_tracking_url": null
              },
              "fund_id": "123e4567-e89b-12d3-a456-426614174000",
              "has_program_overridden": false,
              "id": "d8135cfe-0396-4b2d-b2cf-ad809fb04731",
              "is_physical": true,
              "is_primary": true,
              "is_suspended": false,
              "last_four": "3751",
              "state": "ACTIVE"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/PhysicalCard"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiPurchaseOrderResourceSchema": {
        "example": {
          "data": [
            {
              "accounting_field_selections": [],
              "amount": {
                "amount": 10000,
                "currency": "USD"
              },
              "archived_at": null,
              "bill_ids": [
                "ac6b4c79-9fcd-47d5-9c7e-55b6746903ef",
                "ea0a40d9-d7c4-4cf5-a8a8-e9230fb17459"
              ],
              "billing_status": "CLOSED",
              "created_at": "2022-05-10T00:00:00Z",
              "creation_source": "ACCOUNTING_PROVIDER",
              "entity_id": "7b96a1f2-4b86-45f8-943a-f1ca6b5194d4",
              "external_id": "PO-EXT-1234",
              "id": "54683adc-f49d-4163-b407-f231c62943ea",
              "item_receipt_ids": [
                "0c48b64a-51c2-4848-9dd9-3b30615f4911",
                "5fe9c5a6-791f-4fa8-9d64-5a1cad703710"
              ],
              "line_items": [
                {
                  "accounting_field_selections": [],
                  "amount": {
                    "amount": 100,
                    "currency_code": "USD"
                  },
                  "description": "my line item",
                  "end_date": "2024-05-31",
                  "external_id": "ext-line-123",
                  "id": "54683adc-f49d-4163-b407-f231c62943ea",
                  "quantity": 1,
                  "remote_id": null,
                  "start_date": "2024-05-01",
                  "unit_price": {
                    "amount": 100,
                    "currency_code": "USD"
                  }
                }
              ],
              "memo": "Purchase order for general software services",
              "name": "Purchase order for general software services",
              "net_payment_terms": 30,
              "owner_id": "54683adc-f49d-4163-b407-f231c62943ea",
              "promise_date": "2024-05-10T00:00:00Z",
              "purchase_order_number": "PO-0001",
              "ramp_url": "https://app.ramp.com/s/procurement/purchase-orders/54683adc-f49d-4163-b407-f231c62943ea",
              "receipt_status": "FULLY_RECEIVED",
              "ship_to_address": {
                "address1": "28 W 23rd St",
                "address2": "Floor 4",
                "city": "New York",
                "country": "USA",
                "postal_code": "10010",
                "state": "NY"
              },
              "ship_to_company_name": "Ramp",
              "shipping_contact_email": "alex.morgan@ramp.com",
              "shipping_contact_first_name": "Alex",
              "shipping_contact_last_name": "Morgan",
              "shipping_contact_phone_number": "+12125551234",
              "spend_end_date": "2024-05-31T00:00:00Z",
              "spend_program_id": "ac8b9c2e-1234-5678-9abc-def012345678",
              "spend_request_id": "fb718d18-5435-416b-940e-083fc637614",
              "spend_start_date": "2024-05-01T00:00:00Z",
              "spend_total_amount": {
                "amount": 10000,
                "currency_code": "USD"
              },
              "three_way_match_enabled": false,
              "transaction_ids": [
                "5a65cefc-5d59-40ec-9ae8-82fa657dc1b7"
              ],
              "user_id": "54683adc-f49d-4163-b407-f231c62943ea",
              "vendor_id": "b901afe8-46d7-4f30-b7b5-3c8af127e5a0"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiPurchaseOrderResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiReceiptResourceSchema": {
        "example": {
          "data": [
            {
              "created_at": "2022-08-20T20:33:46+00:00",
              "id": "0a0ed428-0250-4993-96ad-94cd77bc86b6",
              "receipt_url": "https://receipts.ramp.com/sales_demo_instance/amazon_business_receipt.png?Expires=1661130671",
              "reimbursement_id": "5f1ad288-d361-4027-9dd0-842f2df49272",
              "transaction_id": "065916d9-7bdf-4aae-a46a-9b82225f2a20",
              "user_id": "ea0d554a-78bb-4402-a3e9-2d4bc138502f"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Receipt"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiReimbursementResourceSchema": {
        "example": {
          "data": [
            {
              "accounting_field_selections": [
                {
                  "category_info": {
                    "external_id": "Category",
                    "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                    "name": "Category",
                    "type": "GL_ACCOUNT"
                  },
                  "display_name": "Ramp Category",
                  "external_id": "Category",
                  "id": "07b4ce4d-2750-412e-aef4-6b7815f1411c",
                  "name": "Category",
                  "type": "GL_ACCOUNT"
                }
              ],
              "attendees": [
                {
                  "name": "Jack Johnson",
                  "user_id": null
                },
                {
                  "name": "Joe Johnson",
                  "user_id": "7979392e-8d41-4f97-815b-ccd7584802bf"
                }
              ],
              "created_at": "2023-08-20T:00:00+00:00",
              "direction": "BUSINESS_TO_USER",
              "distance": 55,
              "end_location": "456 Business Ave, Philadelphia, PA 19103",
              "entity_amount": {
                "currency": "USD",
                "minor_unit_conversion_rate": 100,
                "value": 48446
              },
              "entity_id": "4bec9dc1-710e-4781-b254-fc606c76a241",
              "expense_group": {
                "id": "4bec9dc1-710e-4781-b254-fc606c76a241",
                "name": "New York offsite - Feb"
              },
              "fund_id": "92a68991-8374-4c0a-b5c0-5180c41b5148",
              "id": "d47ba06e-14ac-4a7b-89b4-4775412ba545",
              "line_items": [
                {
                  "accounting_field_selections": [
                    {
                      "category_info": {
                        "external_id": "Category",
                        "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                        "name": "Category",
                        "type": "GL_ACCOUNT"
                      },
                      "display_name": "Ramp BV - EMEA",
                      "external_id": "426",
                      "id": "07b4ce4d-2750-412e-aef4-6b7815f1411a",
                      "name": "Ramp BV",
                      "type": "Subsidiary"
                    }
                  ],
                  "amount": {
                    "amount": 5000,
                    "currency_code": "USD"
                  }
                },
                {
                  "accounting_field_selections": [
                    {
                      "category_info": {
                        "external_id": "Category",
                        "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                        "name": "Category",
                        "type": "GL_ACCOUNT"
                      },
                      "display_name": null,
                      "external_id": "425",
                      "id": "07b4ce4d-2750-412e-aef4-6b7815f1411b",
                      "name": "Ramp LP",
                      "type": "Subsidiary"
                    }
                  ],
                  "amount": {
                    "amount": 43446,
                    "currency_code": "USD"
                  }
                }
              ],
              "memo": "Airfare for business travel",
              "merchant": "Delta Airlines",
              "merchant_amount": {
                "currency": "USD",
                "minor_unit_conversion_rate": 100,
                "value": 48446
              },
              "merchant_id": "752ba160-72f0-4935-b405-7fc333b1e273",
              "payee_amount": {
                "amount": 48446,
                "currency_code": "USD"
              },
              "payment_batch_id": "ef025463-050a-460b-a62a-f242876e8ce0",
              "payment_id": "NDPHKHCN6G",
              "payment_processed_at": "2023-08-22T:00:00+00:00",
              "receipts": [],
              "spend_limit_id": "92a68991-8374-4c0a-b5c0-5180c41b5148",
              "start_location": "123 Main St, Scranton, PA 18503",
              "state": "REIMBURSED",
              "submitted_at": "2023-08-20T:00:00+00:00",
              "synced_at": "2023-08-21T:00:00+00:00",
              "trace_id": {
                "descriptor": "Trace ID",
                "trace_id": "123456789012345"
              },
              "transaction_date": "2022-08-19",
              "trip_id": "ec6aae2b-38c6-4eeb-adf0-80f25dbf9aad",
              "type": "OUT_OF_POCKET",
              "updated_at": "2023-08-22T:00:00+00:00",
              "user_email": "dwight@dundermilflin.com",
              "user_full_name": "Dwight Schrute",
              "user_id": "7979392e-8d41-4f97-815b-ccd7584802bf",
              "waypoints": [
                "789 Highway Stop, Allentown, PA 18101"
              ]
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Reimbursement"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiRepaymentResourceSchema": {
        "example": {
          "data": [
            {
              "entity_id": "4bec9dc1-710e-4781-b254-fc606c76a241",
              "funding_method": "ach",
              "id": "d47ba06e-14ac-4a7b-89b4-4775412ba545",
              "original_transaction_id": "ec6aae2b-38c6-4eeb-adf0-80f25dbf9aad",
              "repaid_at": "2023-08-21T00:00:00+0000",
              "repayment_amount": {
                "amount": 48446,
                "currency_code": "USD"
              },
              "status": "REPAID",
              "sync_status": "SYNC_SUCCESS",
              "user_id": "7979392e-8d41-4f97-815b-ccd7584802bf",
              "user_signature": "John Doe"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Repayment"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiSpendProgramResourceSchema": {
        "example": {
          "data": [
            {
              "description": "Offer a yearly stipend for conferences and courses.",
              "display_name": "Education Stipend",
              "icon": "EducationStipendIcon",
              "id": "796dab75-a23f-4e2a-984e-20da003c38ef",
              "is_shareable": true,
              "issue_physical_card_if_needed": false,
              "permitted_spend_types": {
                "primary_card_enabled": true,
                "reimbursements_enabled": true
              },
              "restrictions": {
                "allowed_categories": [
                  33
                ],
                "allowed_vendors": [],
                "auto_lock_date": "2025-10-28T00:00:00+00:00",
                "blocked_categories": [],
                "blocked_vendors": [],
                "interval": "YEARLY",
                "limit": {
                  "amount": 75000,
                  "currency_code": "USD"
                },
                "next_interval_reset": "2024-01-01T00:00:00+00:00",
                "start_of_interval": "2023-01-01T00:00:00+00:00",
                "temporary_limit": null,
                "transaction_amount_limit": null
              }
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiSpendProgramResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiStatementResourceSchema": {
        "example": {
          "data": [
            {
              "balance_sections": [
                {
                  "charges": {
                    "amount": 180061925,
                    "currency_code": "USD"
                  },
                  "credits": {
                    "amount": 0,
                    "currency_code": "USD"
                  },
                  "ending_balance": {
                    "amount": 178098867,
                    "currency_code": "USD"
                  },
                  "entity_id": "9d8abf0f-389c-4a18-816e-a6e1c5784624",
                  "id": "6ff695fd-b09b-4529-a622-545d6c059129",
                  "opening_balance": {
                    "amount": 0,
                    "currency_code": "USD"
                  },
                  "payments": {
                    "amount": 1963058,
                    "currency_code": "USD"
                  }
                }
              ],
              "charges": {
                "amount": 180061925,
                "currency_code": "USD"
              },
              "credits": {
                "amount": 0,
                "currency_code": "USD"
              },
              "end_date": "2023-05-08T08:39:37+00:00",
              "ending_balance": {
                "amount": 178098867,
                "currency_code": "USD"
              },
              "id": "df44006c-410b-420e-80a2-1522a2e5b722",
              "opening_balance": {
                "amount": 0,
                "currency_code": "USD"
              },
              "payments": {
                "amount": 1963058,
                "currency_code": "USD"
              },
              "start_date": "2023-05-06T08:51:57+00:00",
              "statement_lines": [
                {
                  "id": "06a09605-b0b8-4c89-b29f-d12c6aabac58",
                  "type": "CARD_TRANSACTION"
                },
                {
                  "id": "0f01bc2d-04cf-407a-8442-bcbdaf1c07f8",
                  "type": "CARD_TRANSACTION"
                },
                {
                  "id": "2682717d-8231-46f2-9e02-c0f4f7ef410a",
                  "type": "TRANSFER_PAYMENT"
                },
                {
                  "id": "415fe9fb-1608-4cd6-ac8b-d2fbb85bdc11",
                  "type": "CARD_TRANSACTION"
                },
                {
                  "id": "4c7700b6-1ff9-4228-9b13-73b38d5a7623",
                  "type": "CARD_TRANSACTION"
                },
                {
                  "id": "61b89311-f0b3-4689-91ee-8edb72054de4",
                  "type": "CARD_TRANSACTION"
                },
                {
                  "id": "78c9eac8-67ae-443d-998a-f416e959225c",
                  "type": "CASHBACK"
                },
                {
                  "id": "af87a6bd-929a-4de6-85f3-0105a046a608",
                  "type": "CARD_TRANSACTION"
                }
              ],
              "statement_url": "https://customer-documents.ramp.com/card_statement/business_00000000-0000-4000-8000-000000000000/20230508_11111111-1111-7111-8111-111111111111.pdf?response-content-disposition=attachment%3B+filename%3D%222023-05-06-my-widget-store-overview.pdf%22&Expires=1704717900&Signature=EXAMPLESIGNATURE__&Key-Pair-Id=K1EXAMPLEKEYID&Hash-Algorithm=SHA256"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Statement"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiTransferResourceSchema": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Transfer"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiUserResourceSchema": {
        "example": {
          "data": [
            {
              "business_id": "9abffcf0-dd7d-42f0-b806-ce0502ab6496",
              "custom_fields": [
                {
                  "name": "Cost Center",
                  "value": "R&D - Data"
                },
                {
                  "name": "Employee ID",
                  "value": "f4efe11c-337f-49a5-86b3-5df128233f2c"
                },
                {
                  "name": "Region",
                  "value": "EMEA"
                },
                {
                  "name": "Team",
                  "value": "Core Platform"
                }
              ],
              "department_id": "2d68eb67-f6eb-4284-8683-7d530c77a5a6",
              "email": "cardholder_7@company.com",
              "employee_id": "f4efe11c-337f-49a5-86b3-5df128233f2c",
              "entity_id": "0e90959a-28ba-4f7d-a75b-9c241f384b9a",
              "first_name": "Linda",
              "id": "bde8334e-042e-4f39-9a5d-355ae17342e6",
              "is_manager": false,
              "last_name": "Gu",
              "location_id": "f4efe11c-221f-4b49-a1e4-33eaf96a49ee",
              "manager_id": "ccc5d4cc-337f-49a5-86b3-5df128233f2c",
              "phone": 8004559999,
              "role": "BUSINESS_USER",
              "scheduled_deactivation_date": null,
              "scheduled_invitation_date": null,
              "status": "USER_ACTIVE"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/User"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiVendorAgreementListResource": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiVendorAgreementListResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiVendorBankAccountResource": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiVendorBankAccountResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiVendorContactResourceSchema": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiVendorContactResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiVendorPaymentMethodResourceSchema": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApiVendorPaymentMethodResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiVendorResourceSchema": {
        "example": {
          "data": [
            {
              "accounting_vendor_remote_id": "1234",
              "address": {
                "address_line_1": "442 Good St",
                "address_line_2": null,
                "city": "San Diego",
                "country": "US",
                "postal_code": "94105",
                "state": "CA"
              },
              "addresses": [
                {
                  "address_line_1": "442 Good St",
                  "address_line_2": null,
                  "city": "San Diego",
                  "country": "US",
                  "id": "0b1a0d92-3f07-4e02-9f2c-2b3b6f6e2a25",
                  "is_default": true,
                  "postal_code": "94105",
                  "state": "CA"
                }
              ],
              "billing_frequency": null,
              "contacts": [
                "315eb85a-3a60-45ba-8d1c-67385cd0281f",
                "5453d095-38ad-4656-8d73-df4e204a51b4"
              ],
              "country": "US",
              "created_at": "2024-05-12T02:23:00+00:00",
              "default_entity_id": "90b73fdf-e058-4cad-970d-0ed5a6949792",
              "default_payment_method": {
                "policy": {
                  "data": {
                    "account_nickname": "Primary",
                    "currency": "USD",
                    "id": "0b1a0d92-3f07-4e02-9f2c-2b3b6f6e2a25",
                    "is_default": true,
                    "payment_method": "ACH"
                  },
                  "kind": "BANK_ACCOUNT"
                },
                "update_source": "MANUAL"
              },
              "description": "Vendor for art supplies",
              "external_vendor_id": "EXT-12345",
              "federal_tax_classification": "C_CORPORATION",
              "id": "4f08baf7-e3f0-4271-aedd-4d2c2214ed9a",
              "is_active": true,
              "is_deletable": false,
              "merchant_id": null,
              "name": "Ali's Art shop",
              "name_legal": "Ali's Art shop LLC",
              "net_payment_terms": 30,
              "parent_vendor_id": null,
              "sk_category_id": 30,
              "sk_category_name": "General merchandise",
              "state": "CA",
              "subsidiary": [
                "USMF"
              ],
              "tax_address": {
                "address_line_1": "1234 Main St",
                "address_line_2": "Suite 200",
                "city": "San Diego",
                "country": "US",
                "postal_code": "94105",
                "state": "CA"
              },
              "total_spend_all_time": {
                "amount": 18500,
                "currency_code": "USD"
              },
              "total_spend_last_30_days": {
                "amount": 18500,
                "currency_code": "USD"
              },
              "total_spend_last_365_days": {
                "amount": 18500,
                "currency_code": "USD"
              },
              "total_spend_ytd": {
                "amount": 18500,
                "currency_code": "USD"
              },
              "updated_at": "2024-05-14T02:23:00+00:00",
              "vendor_owner_id": "8ca6cfe2-2bea-46f9-998b-56c1a8ac9454",
              "vendor_type": "BUSINESS"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/Vendor"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApiVirtualCardResource": {
        "example": {
          "data": [
            {
              "created_at": "2022-05-04T00:00:00+00:00",
              "fund_id": "506a7096-98c0-4ab5-86ef-20c884a78e74",
              "id": "d8135cfe-0396-4b2d-b2cf-ad809fb04731",
              "is_card_suspended": false,
              "user_id": "3a5b1f62-988f-4190-bf31-b7ae87c5df42"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/VirtualCard"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseApprovalsResourceSchema": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/ApprovalsResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseAuditLogEventResourceSchema": {
        "example": {
          "data": [
            {
              "actor_details": {
                "actor_type": "ramp"
              },
              "actor_id": "c4e416c9-9239-42ac-a4ca-81ccef8c8053",
              "actor_type": "ramp",
              "additional_details": "Removed vendor owner",
              "event_details": {
                "references": [
                  {
                    "label": "Payee - Big Mouth Coffee Roasters",
                    "resource_name": "Vendor / Merchant",
                    "url": "/vendors/profile/bcf5d623-0429-4676-8750-e52e1f2e2d60/overview"
                  }
                ]
              },
              "event_time": "2025-10-03T06:26:57+00:00",
              "event_type": "Edited vendor field",
              "id": "0199a8c0-b40a-7c1e-bb8e-e8f850c29947",
              "primary_reference": {
                "id": "bcf5d623-0429-4676-8750-e52e1f2e2d60",
                "label": "Payee - Big Mouth Coffee Roasters",
                "resource_name": "Vendor / Merchant",
                "url": "/vendors/profile/bcf5d623-0429-4676-8750-e52e1f2e2d60/overview"
              },
              "user_details": null
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/AuditLogEventResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseCustomRowDataWithLoadedReferences": {
        "example": {
          "data": [
            {
              "cells": [
                {
                  "column_display_name": "Country",
                  "column_id": "<column_id>",
                  "value": {
                    "has_more": false,
                    "rows": [
                      {
                        "display_name": "USA",
                        "external_key": "USA",
                        "row_id": "<row_id>",
                        "type": "custom_table"
                      }
                    ],
                    "table_name": "countries",
                    "type": "custom_table"
                  }
                },
                {
                  "column_display_name": "Regional Director",
                  "column_id": "<column_id>",
                  "value": {
                    "has_more": false,
                    "rows": [
                      {
                        "display_name": "John Doe",
                        "external_key": "<existing_ramp_user_uuid>",
                        "row_id": "<row_id>",
                        "type": "native_table"
                      }
                    ],
                    "table_name": "users",
                    "type": "native_table"
                  }
                },
                {
                  "column_display_name": "States",
                  "column_id": "<column_id>",
                  "value": {
                    "has_more": true,
                    "rows": [
                      {
                        "display_name": "Arizona",
                        "external_key": "Arizona",
                        "row_id": "<row_id>",
                        "type": "custom_table"
                      },
                      {
                        "display_name": "California",
                        "external_key": "California",
                        "row_id": "<row_id>",
                        "type": "custom_table"
                      },
                      {
                        "display_name": "New Jersey",
                        "external_key": "New Jersey",
                        "row_id": "<row_id>",
                        "type": "custom_table"
                      },
                      {
                        "display_name": "New York",
                        "external_key": "New York",
                        "row_id": "<row_id>",
                        "type": "custom_table"
                      },
                      {
                        "display_name": "Texas",
                        "external_key": "Texas",
                        "row_id": "<row_id>",
                        "type": "custom_table"
                      }
                    ],
                    "table_name": "states",
                    "type": "custom_table"
                  }
                }
              ],
              "external_key": "Northeast",
              "id": "<row_id>"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/CustomRowDataWithLoadedReferences"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseCustomTableReferenceUsingLabelAndName": {
        "example": {
          "data": [
            {
              "table_label": "Teams",
              "table_name": "teams",
              "type": "custom_table"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/CustomTableReferenceUsingLabelAndName"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseDeveloperApiCustomRecordColumn": {
        "example": {
          "data": [
            {
              "allows_writes": true,
              "display_name": "Country",
              "id": "<column_id>",
              "name": "country",
              "type": "custom_reference"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/DeveloperApiCustomRecordColumn"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseFieldOptionFilterRuleResourceSchema": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/FieldOptionFilterRuleResource"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseNativeTableReference": {
        "example": {
          "data": [
            {
              "table_name": "users",
              "type": "native_table"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/NativeTableReference"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseTreasuryAccountResponse": {
        "example": {
          "data": [
            {
              "account_type": "WALLET_ACCOUNT",
              "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "name": "Ramp Checking Account"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/TreasuryAccountResponse"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseTreasuryBalanceHistoryItemResponse": {
        "example": {
          "data": [
            {
              "amount": {
                "amount": 1250000,
                "currency_code": "USD",
                "minor_unit_conversion_rate": 100
              },
              "date": "2024-02-15"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/TreasuryBalanceHistoryItemResponse"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseTreasuryTransactionResponse": {
        "example": {
          "data": [
            {
              "amount": {
                "amount": 50000,
                "currency_code": "USD",
                "minor_unit_conversion_rate": 100
              },
              "date": "2024-02-15T14:30:00",
              "description": "Transfer to brokerage",
              "destination_account_name": "Apex Brokerage",
              "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa7",
              "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "source_account_name": "Ramp Checking Account",
              "sync_status": "SYNC_READY",
              "treasury_transfer_type": "WALLET_TRANSFER"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "$ref": "#/components/schemas/TreasuryTransactionResponse"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseTripResourceSchema": {
        "example": {
          "data": [
            {}
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "items": {
                "$ref": "#/components/schemas/TripResource"
              },
              "type": "array"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PaginatedResponseVendorCreditResourceSchema": {
        "example": {
          "data": [
            {
              "accounting_date": "2022-08-22",
              "accounting_field_selections": [
                {
                  "category_info": {
                    "external_id": "GL_ACCOUNT",
                    "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                    "name": "GL Account",
                    "type": "GL_ACCOUNT"
                  },
                  "display_name": "Office Expenses - Renamed",
                  "external_id": "601000",
                  "id": "07b4ce4d-2750-412e-aef4-6b7815f1411c",
                  "name": "Office Expenses",
                  "type": "GL_ACCOUNT"
                }
              ],
              "applied_bills": [
                {
                  "amount": {
                    "amount": 4000,
                    "currency_code": "USD",
                    "minor_unit_conversion_rate": 100
                  },
                  "bill_id": "b4ff2c24-9832-4e97-8035-ca22488d7b62"
                }
              ],
              "applied_draft_bills": [
                {
                  "amount": {
                    "amount": 3000,
                    "currency_code": "USD",
                    "minor_unit_conversion_rate": 100
                  },
                  "bill_id": "08256ee8-de1e-4ac7-8cf2-b413fcebc14a"
                }
              ],
              "archived_at": null,
              "created_at": "2022-08-22T10:30:00.000000+00:00",
              "entity_id": "0f1e2d3c-4b5a-6789-0123-4567890abcde",
              "expense_line_items": [
                {
                  "accounting_field_selections": [
                    {
                      "category_info": {
                        "external_id": "GL_ACCOUNT",
                        "id": "396d543c-cbc4-40e9-b39e-2f70904ca1fc",
                        "name": "GL Account",
                        "type": "GL_ACCOUNT"
                      },
                      "display_name": "Meals and Entertainment",
                      "external_id": "702000",
                      "id": "0ac28cc6-aff2-42c1-962f-e860511ecc92",
                      "name": "Food and Drink",
                      "type": "GL_ACCOUNT"
                    }
                  ],
                  "amount": {
                    "amount": 50000,
                    "currency_code": "USD",
                    "minor_unit_conversion_rate": 100
                  },
                  "memo": "Expense line item memo"
                }
              ],
              "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
              "inventory_line_items": [
                {
                  "accounting_field_selections": [
                    {
                      "category_info": {
                        "external_id": "GL_ACCOUNT",
                        "id": "966e61ca-f54e-4c62-813e-4f5b4050bb22",
                        "name": "GL Account",
                        "type": "GL_ACCOUNT"
                      },
                      "display_name": null,
                      "external_id": "601000",
                      "id": "3353e3e9-c6ed-4bcf-8349-0668cf351d97",
                      "name": "Office Supplies",
                      "type": "GL_ACCOUNT"
                    }
                  ],
                  "amount": {
                    "amount": 25000,
                    "currency_code": "USD",
                    "minor_unit_conversion_rate": 100
                  },
                  "memo": "Inventory line item memo",
                  "unit_price": {
                    "amount": 5000,
                    "currency_code": "USD",
                    "minor_unit_conversion_rate": 100
                  },
                  "unit_quantity": 5
                }
              ],
              "reference_bill_id": "b1a2c3d4-e5f6-7890-1234-567890abcdef",
              "reference_number": "VENDORCREDITREF_12345",
              "remaining_amount": {
                "amount": 100000,
                "currency_code": "USD",
                "minor_unit_conversion_rate": 100
              },
              "total_amount": {
                "amount": 200000,
                "currency_code": "USD",
                "minor_unit_conversion_rate": 100
              },
              "total_applied_amount": {
                "amount": 100000,
                "currency_code": "USD",
                "minor_unit_conversion_rate": 100
              },
              "vendor_id": "f1e2d3c4-b5a6-7890-1234-567890fedcba"
            }
          ],
          "page": {
            "next": "https://api.ramp.com/developer/v1/<resources>?<new_params>"
          }
        },
        "properties": {
          "data": {
            "description": "Resources returned in this page.",
            "items": {
              "items": {
                "$ref": "#/components/schemas/VendorCreditResource"
              },
              "type": "array"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/DeveloperAPINestedPage",
            "description": "Pagination details for this response."
          }
        },
        "required": [
          "data",
          "page"
        ],
        "type": "object"
      },
      "PartialApiCreateDraftBillParamsRequestBody": {
        "example": {
          "accounting_field_selections": [
            {
              "field_external_id": "b3B0aW9uX2lk",
              "field_option_external_id": "aln2l3B0aW9uX2lk"
            }
          ],
          "due_at": "2024-10-15",
          "entity_id": "1cc4b57c-fe4a-4425-90f1-9019d06376b3",
          "inventory_line_items": [
            {
              "accounting_field_selections": [
                {
                  "field_external_id": "aa73laMazi2",
                  "field_option_external_id": "abk3Rkfnls25"
                }
              ],
              "memo": "Pens",
              "quantity": 2.25,
              "unit_price": 55
            }
          ],
          "invoice_number": "123",
          "issued_at": "2024-08-15",
          "line_items": [
            {
              "accounting_field_selections": [],
              "amount": 100,
              "memo": "Printing services"
            }
          ],
          "memo": "Office supplies",
          "posting_date": null,
          "remote_id": "bo2f1lAnkf3llL",
          "vendor_contact_id": "12f55361-8c7f-42dc-8667-64926d330b80",
          "vendor_id": "c0c89fa8-976e-428d-938d-a5ec89838474"
        },
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the bill.",
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "due_at": {
            "description": "Due date of the bill.",
            "format": "date",
            "type": "string"
          },
          "enable_accounting_sync": {
            "description": "A flag you can set to False to prevent this bill from syncing to your ERP.",
            "type": "boolean"
          },
          "entity_id": {
            "description": "Associated business entity.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "inventory_line_items": {
            "description": "List of inventory line items associated with the bill. When provided, this will replace all existing inventory line items.",
            "items": {
              "$ref": "#/components/schemas/ApiUpdateBillInventoryLineItemParamsRequestBody"
            },
            "nullable": true,
            "type": "array"
          },
          "invoice_currency": {
            "description": "Currency of the invoice.",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "invoice_number": {
            "description": "The invoice number on the bill.",
            "maxLength": 84,
            "type": "string"
          },
          "issued_at": {
            "description": "Issued date of the bill.",
            "format": "date",
            "type": "string"
          },
          "line_items": {
            "description": "List of line items related to the bill. When provided, this will replace all existing line items.",
            "items": {
              "$ref": "#/components/schemas/ApiUpdateBillLineItemParamsRequestBody"
            },
            "nullable": true,
            "type": "array"
          },
          "memo": {
            "description": "Memo of the bill.",
            "maxLength": 1000,
            "nullable": true,
            "type": "string"
          },
          "payment_method": {
            "description": "Payment method of the bill.",
            "enum": [
              "ACH",
              "CARD",
              "CHECK",
              "CRYPTO_WALLET_TRANSFER",
              "DOMESTIC_WIRE",
              "INTERNATIONAL",
              "LOCAL_BANK_TRANSFER",
              "ONE_TIME_CARD",
              "ONE_TIME_CARD_DELIVERY",
              "PAID_MANUALLY",
              "SWIFT"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ACH": "A US ACH bank transfer.",
              "CARD": "A payment made with an existing Ramp card.",
              "CHECK": "A paper check payment mailed to the vendor.",
              "CRYPTO_WALLET_TRANSFER": "A transfer to a cryptocurrency wallet.",
              "DOMESTIC_WIRE": "A US domestic wire transfer.",
              "INTERNATIONAL": "An international bank transfer.",
              "LOCAL_BANK_TRANSFER": "A local bank transfer in a non-USD currency.",
              "ONE_TIME_CARD": "A single-use card payment where the business user pays the vendor directly.",
              "ONE_TIME_CARD_DELIVERY": "A single-use card payment where Ramp sends card details to the vendor contact.",
              "PAID_MANUALLY": "A payment recorded as paid outside of Ramp.",
              "SWIFT": "An international USD-denominated SWIFT bank transfer."
            }
          },
          "posting_date": {
            "description": "The date the bill is posted to the accounting system.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "purchase_order_ids": {
            "description": "Unique identifiers of the purchase orders to match this bill to. When provided, this will replace all existing linked purchase orders.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "purchase_orders",
                "type": "many-to-many"
              }
            },
            "type": "array"
          },
          "remote_id": {
            "description": "An ID that identifies the bill on client's side.",
            "nullable": true,
            "type": "string"
          },
          "use_default_payment_method": {
            "default": false,
            "description": "When set to true, create the draft bill using the default payment method configured for the vendor. If set to true, payment_method and payment_details should not be provided.",
            "type": "boolean"
          },
          "vendor_contact_id": {
            "description": "Unique identifier of vendor contact, must be associated with passed vendor.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendor_contacts",
              "type": "many-to-one"
            }
          },
          "vendor_id": {
            "description": "Unique identifier of bill vendor.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          },
          "vendor_memo": {
            "description": "Memo to the vendor.",
            "maxLength": 400,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "vendor_id"
        ],
        "type": "object"
      },
      "PartialApiUpdateDraftBillParamsRequestBody": {
        "example": {
          "accounting_field_selections": [
            {
              "field_external_id": "b3B0aW9uX2lk",
              "field_option_external_id": "aln2l3B0aW9uX2lk"
            }
          ],
          "due_at": "2024-10-15",
          "entity_id": "1cc4b57c-fe4a-4425-90f1-9019d06376b3",
          "inventory_line_items": [
            {
              "accounting_field_selections": [
                {
                  "field_external_id": "aa73laMazi2",
                  "field_option_external_id": "abk3Rkfnls25"
                }
              ],
              "memo": "Pens",
              "quantity": 2.25,
              "unit_price": 55
            }
          ],
          "invoice_number": "123",
          "issued_at": "2024-08-15",
          "line_items": [
            {
              "accounting_field_selections": [],
              "amount": 100,
              "memo": "Printing services"
            }
          ],
          "memo": "Office supplies",
          "posting_date": null,
          "remote_id": "bo2f1lAnkf3llL",
          "vendor_contact_id": "12f55361-8c7f-42dc-8667-64926d330b80",
          "vendor_id": "c0c89fa8-976e-428d-938d-a5ec89838474"
        },
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the bill.",
            "items": {
              "$ref": "#/components/schemas/ApiCreateAccountingFieldParamsRequestBody"
            },
            "type": "array"
          },
          "due_at": {
            "description": "Due date of the bill.",
            "format": "date",
            "type": "string"
          },
          "enable_accounting_sync": {
            "description": "A flag you can set to False to prevent this bill from syncing to your ERP.",
            "type": "boolean"
          },
          "entity_id": {
            "description": "Associated business entity.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "inventory_line_items": {
            "description": "List of inventory line items associated with the bill. When provided, this will replace all existing inventory line items.",
            "items": {
              "$ref": "#/components/schemas/ApiUpdateBillInventoryLineItemParamsRequestBody"
            },
            "nullable": true,
            "type": "array"
          },
          "invoice_currency": {
            "description": "Currency of the invoice.",
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "invoice_number": {
            "description": "The invoice number on the bill.",
            "maxLength": 84,
            "type": "string"
          },
          "issued_at": {
            "description": "Issued date of the bill.",
            "format": "date",
            "type": "string"
          },
          "line_items": {
            "description": "List of line items related to the bill. When provided, this will replace all existing line items.",
            "items": {
              "$ref": "#/components/schemas/ApiUpdateBillLineItemParamsRequestBody"
            },
            "nullable": true,
            "type": "array"
          },
          "memo": {
            "description": "Memo of the bill.",
            "maxLength": 1000,
            "nullable": true,
            "type": "string"
          },
          "payment_method": {
            "description": "Payment method of the bill.",
            "enum": [
              "ACH",
              "CARD",
              "CHECK",
              "CRYPTO_WALLET_TRANSFER",
              "DOMESTIC_WIRE",
              "INTERNATIONAL",
              "LOCAL_BANK_TRANSFER",
              "ONE_TIME_CARD",
              "ONE_TIME_CARD_DELIVERY",
              "PAID_MANUALLY",
              "SWIFT"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ACH": "A US ACH bank transfer.",
              "CARD": "A payment made with an existing Ramp card.",
              "CHECK": "A paper check payment mailed to the vendor.",
              "CRYPTO_WALLET_TRANSFER": "A transfer to a cryptocurrency wallet.",
              "DOMESTIC_WIRE": "A US domestic wire transfer.",
              "INTERNATIONAL": "An international bank transfer.",
              "LOCAL_BANK_TRANSFER": "A local bank transfer in a non-USD currency.",
              "ONE_TIME_CARD": "A single-use card payment where the business user pays the vendor directly.",
              "ONE_TIME_CARD_DELIVERY": "A single-use card payment where Ramp sends card details to the vendor contact.",
              "PAID_MANUALLY": "A payment recorded as paid outside of Ramp.",
              "SWIFT": "An international USD-denominated SWIFT bank transfer."
            }
          },
          "posting_date": {
            "description": "The date the bill is posted to the accounting system.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "purchase_order_ids": {
            "description": "Unique identifiers of the purchase orders to match this bill to. When provided, this will replace all existing linked purchase orders.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "purchase_orders",
                "type": "many-to-many"
              }
            },
            "type": "array"
          },
          "remote_id": {
            "description": "An ID that identifies the bill on client's side.",
            "nullable": true,
            "type": "string"
          },
          "use_default_payment_method": {
            "default": false,
            "description": "When set to true, create the draft bill using the default payment method configured for the vendor. If set to true, payment_method and payment_details should not be provided.",
            "type": "boolean"
          },
          "vendor_contact_id": {
            "description": "Unique identifier of vendor contact, must be associated with passed vendor.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendor_contacts",
              "type": "many-to-one"
            }
          },
          "vendor_id": {
            "description": "Unique identifier of bill vendor.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          },
          "vendor_memo": {
            "description": "Memo to the vendor.",
            "maxLength": 400,
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "PayeeAgreementAvailableActionsSchema": {
        "properties": {
          "can_action": {
            "$ref": "#/components/schemas/ActionDetailSchema_AgreementActionDenialReason_",
            "description": "Whether the user may perform lifecycle actions on the agreement."
          },
          "can_edit": {
            "$ref": "#/components/schemas/ActionDetailSchema_EditAgreementDenialReason_",
            "description": "Whether the agreement may be edited."
          },
          "delete": {
            "$ref": "#/components/schemas/ActionDetailSchema_DeleteRenewalDenialReason_",
            "description": "Whether the agreement may be deleted."
          },
          "request_expansion": {
            "$ref": "#/components/schemas/ActionDetailSchema_RequestExpansionDenialReason_",
            "description": "Whether an expansion may be requested for the agreement."
          },
          "request_renewal": {
            "$ref": "#/components/schemas/ActionDetailSchema_RequestRenewalDenialReason_",
            "description": "Whether a renewal may be requested for the agreement."
          },
          "send_reminder": {
            "description": "Whether a manual contract reminder may be sent.",
            "discriminator": {
              "mapping": {
                "allowed": "#/components/schemas/ActionAllowedSchema",
                "denied": "#/components/schemas/SendManualReminderDeniedSchema"
              },
              "propertyName": "status"
            },
            "oneOf": [
              {
                "$ref": "#/components/schemas/ActionAllowedSchema"
              },
              {
                "$ref": "#/components/schemas/SendManualReminderDeniedSchema"
              }
            ],
            "title": "Send Reminder"
          },
          "set_status": {
            "$ref": "#/components/schemas/ActionDetailSchema_SetRenewalStatusDenialReason_",
            "description": "Whether the agreement's renewal status may be changed."
          }
        },
        "required": [
          "can_action",
          "can_edit",
          "delete",
          "request_expansion",
          "request_renewal",
          "send_reminder",
          "set_status"
        ],
        "title": "PayeeAgreementAvailableActionsSchema",
        "type": "object"
      },
      "PayeeAgreementDaysRemainingPydanticSchema": {
        "description": "Schema representing the days remaining calculation for a PayeeAgreement.\n\nThis schema contains information about how many days remain until an agreement\nends and which date was used for the calculation.",
        "properties": {
          "end_date_used": {
            "$ref": "#/components/schemas/PayeeAgreementEndDateUsed",
            "nullable": true
          },
          "is_expired": {
            "nullable": true,
            "title": "Is Expired",
            "type": "boolean"
          },
          "is_overdue": {
            "nullable": true,
            "title": "Is Overdue",
            "type": "boolean"
          },
          "num_days_until_end": {
            "nullable": true,
            "title": "Num Days Until End",
            "type": "integer"
          }
        },
        "required": [
          "end_date_used",
          "is_expired",
          "is_overdue",
          "num_days_until_end"
        ],
        "title": "PayeeAgreementDaysRemainingPydanticSchema",
        "type": "object"
      },
      "PayeeAgreementEndDateUsed": {
        "description": "Enum to track which date was used for PayeeAgreement end date calculations.",
        "enum": [
          "END_DATE",
          "LAST_DATE_TO_TERMINATE"
        ],
        "title": "PayeeAgreementEndDateUsed",
        "type": "string"
      },
      "PayeeAgreementForUnifiedRequestDetailDumpAvailableActions": {
        "properties": {
          "view": {
            "$ref": "#/components/schemas/ActionDetailSchema_ViewAgreementDenialReason_"
          }
        },
        "required": [
          "view"
        ],
        "title": "PayeeAgreementForUnifiedRequestDetailDumpAvailableActions",
        "type": "object"
      },
      "PayeeAgreementForUnifiedRequestDetailDumpSchema": {
        "properties": {
          "auto_renewal": {
            "title": "Auto Renewal",
            "type": "boolean"
          },
          "available_actions": {
            "$ref": "#/components/schemas/PayeeAgreementForUnifiedRequestDetailDumpAvailableActions"
          },
          "currency": {
            "type": "string"
          },
          "days_remaining": {
            "$ref": "#/components/schemas/PayeeAgreementDaysRemainingPydanticSchema"
          },
          "description": {
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "end_date": {
            "format": "date",
            "nullable": true,
            "title": "End Date",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "last_date_to_terminate": {
            "format": "date",
            "nullable": true,
            "title": "Last Date To Terminate",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "payee": {
            "$ref": "#/components/schemas/ReducedPayeePydanticSchema"
          },
          "renewal_brief": {
            "$ref": "#/components/schemas/RenewalBriefForUnifiedRequestDetailSchema",
            "description": "Renewal brief metadata for the linked agreement, if available.",
            "nullable": true
          },
          "source": {
            "$ref": "#/components/schemas/PayeeAgreementSpendRequestMappingSource"
          },
          "start_date": {
            "format": "date",
            "nullable": true,
            "title": "Start Date",
            "type": "string"
          },
          "total_value": {
            "nullable": true,
            "title": "Total Value",
            "type": "number"
          }
        },
        "required": [
          "auto_renewal",
          "available_actions",
          "currency",
          "days_remaining",
          "description",
          "end_date",
          "id",
          "last_date_to_terminate",
          "name",
          "payee",
          "renewal_brief",
          "source",
          "start_date",
          "total_value"
        ],
        "title": "PayeeAgreementForUnifiedRequestDetailDumpSchema",
        "type": "object"
      },
      "PayeeAgreementRelativeDateRangeRequestBody": {
        "description": "Concrete relative date range for agreement date filters.",
        "properties": {
          "end": {
            "$ref": "#/components/schemas/RelativeDateOffsetRequestBody",
            "description": "End date offset, always snapped to end of period",
            "title": "End"
          },
          "start": {
            "$ref": "#/components/schemas/RelativeDateOffsetRequestBody",
            "description": "Start date offset, always snapped to beginning of period",
            "title": "Start"
          }
        },
        "title": "PayeeAgreementRelativeDateRange",
        "type": "object"
      },
      "PayeeAgreementSpendRequestMappingSource": {
        "description": "Enum for the source of the PayeeAgreementSpendRequestMapping model.\n\nThere are three cases where we map a SpendRequest to a PayeeAgreement:\n1. There is a document uploaded on a SpendRequest that ultimately creates a PayeeAgreement\n2. There is a renewal SpendRequest that is created for a particular PayeeAgreement\n3. A SpendRequest is manually linked to an existing PayeeAgreement",
        "enum": [
          "EXPANSION_REQUEST",
          "RENEWAL",
          "REQUEST_APPROVAL",
          "REQUEST_LINKED_TO_AGREEMENT"
        ],
        "title": "PayeeAgreementSpendRequestMappingSource",
        "type": "string"
      },
      "PayeeAgreementSpendRequestMappingStatus": {
        "description": "Enum for status of `PayeeAgreementSpendRequestMapping` model\n\nA `PayeeAgreementSpendRequestMapping` object is in a `PENDING` state\nif the SpendRequest is in a draft state. We will upgrade the mapping\nto an `ACTIVE` state once the request is in a submitted state",
        "enum": [
          "ACTIVE",
          "PENDING"
        ],
        "title": "PayeeAgreementSpendRequestMappingStatus",
        "type": "string"
      },
      "PayeeApprovalStatus": {
        "enum": [
          "APPROVED",
          "PENDING",
          "REJECTED"
        ],
        "title": "PayeeApprovalStatus",
        "type": "string",
        "x-enum-descriptions": {
          "APPROVED": "The vendor has been approved.",
          "PENDING": "The vendor is awaiting approval.",
          "REJECTED": "The vendor has been rejected."
        }
      },
      "PayeeCustomRecordMappedFieldSchema": {
        "properties": {
          "mapped_custom_column_id": {
            "default": null,
            "nullable": true,
            "title": "Mapped Custom Column Id",
            "type": "string"
          },
          "mapped_field": {
            "enum": [
              "PAYEE__CUSTOM_RECORDS"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PayeeCustomRecordMappedFieldSchema",
        "type": "object"
      },
      "PayeeDescriptionMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "PAYEE__DESCRIPTION"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PayeeDescriptionMappedFieldSchema",
        "type": "object"
      },
      "PayeeDocumentCategory": {
        "enum": [
          "ADDENDUM_OR_RIDER",
          "AMENDMENT",
          "BANK_LETTER",
          "CAIQ_LITE",
          "CERTIFICATE_OF_INSURANCE",
          "CONTRACT_OTHER",
          "DATA_PROTECTION_AGREEMENT",
          "ECOVADIS",
          "ENGAGEMENT_LETTER",
          "FAQ",
          "FORM_1099",
          "GDPR",
          "HIPAA",
          "INVOICE",
          "ISO_27001",
          "ISO_9001",
          "MSA",
          "NDA",
          "NMSDC_CERTIFICATION",
          "ORDER_FORM",
          "OTHER",
          "PAYMENT_INSTRUCTIONS",
          "PCI_DSS",
          "PEN_TEST_REPORT",
          "PRIVACY_POLICY",
          "PURCHASE_ORDER",
          "QUESTIONNAIRE",
          "QUOTE",
          "SECURITY_DOCUMENT",
          "SECURITY_EXHIBIT",
          "SIG",
          "SLA",
          "SOC_1_TYPE_1",
          "SOC_1_TYPE_2",
          "SOC_2",
          "SOW",
          "TAX_DOCUMENT",
          "TAX_DOCUMENT_INTL_COR",
          "TAX_DOCUMENT_INTL_GOV_FORM",
          "TAX_DOCUMENT_INTL_OTHER",
          "TAX_DOCUMENT_INTL_STATUTORY_FORM",
          "TOS",
          "VENDOR_CONTRACT",
          "VENDOR_CREDIT",
          "VOIDED_CHECK",
          "W8",
          "W9"
        ],
        "title": "PayeeDocumentCategory",
        "type": "string",
        "x-enum-descriptions": {
          "BANK_LETTER": "A bank letter used to verify bank account details.",
          "PURCHASE_ORDER": "A buyer-issued purchase order authorizing goods or services.",
          "QUESTIONNAIRE": "A vendor questionnaire document.",
          "TAX_DOCUMENT_INTL_COR": "A certificate establishing a vendor's tax residence.",
          "TAX_DOCUMENT_INTL_GOV_FORM": "A tax form issued by a government authority.",
          "TAX_DOCUMENT_INTL_OTHER": "An international tax document not covered by a more specific category.",
          "TAX_DOCUMENT_INTL_STATUTORY_FORM": "A tax form required by local law."
        }
      },
      "PayeeNetPaymentTermsMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "PAYEE__NET_PAYMENT_TERMS"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PayeeNetPaymentTermsMappedFieldSchema",
        "type": "object"
      },
      "PayeeOwner": {
        "properties": {
          "department": {
            "nullable": true,
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "full_name": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_inactive": {
            "type": "boolean"
          },
          "is_terminated": {
            "type": "boolean"
          },
          "location": {
            "nullable": true,
            "type": "string"
          },
          "profile_picture_url": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "department",
          "email",
          "full_name",
          "id",
          "is_inactive",
          "is_terminated",
          "location",
          "profile_picture_url"
        ],
        "type": "object"
      },
      "PayeeOwnerPydanticSchema": {
        "properties": {
          "department": {
            "nullable": true,
            "title": "Department",
            "type": "string"
          },
          "email": {
            "title": "Email",
            "type": "string"
          },
          "full_name": {
            "title": "Full Name",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "is_inactive": {
            "title": "Is Inactive",
            "type": "boolean"
          },
          "is_terminated": {
            "title": "Is Terminated",
            "type": "boolean"
          },
          "location": {
            "nullable": true,
            "title": "Location",
            "type": "string"
          },
          "profile_picture_url": {
            "nullable": true,
            "title": "Profile Picture Url",
            "type": "string"
          }
        },
        "required": [
          "department",
          "email",
          "full_name",
          "id",
          "is_inactive",
          "is_terminated",
          "location",
          "profile_picture_url"
        ],
        "title": "PayeeOwnerPydanticSchema",
        "type": "object"
      },
      "PayeeRenewalEventRequestBody": {
        "enum": [
          "CONTRACT_ENDS_OR_RENEWS",
          "CONTRACT_START_DATE",
          "LAST_DATE_TO_TERMINATE"
        ],
        "title": "PayeeRenewalEvent",
        "type": "string",
        "x-enum-descriptions": {
          "CONTRACT_ENDS_OR_RENEWS": "The contract end or renewal date.",
          "CONTRACT_START_DATE": "The contract start date, falling back to the contract creation date. Only valid as a recurring reminder start event on perpetual contracts, with a zero offset; the first reminder is sent one cadence after the start date.",
          "LAST_DATE_TO_TERMINATE": "The last date to terminate the contract."
        }
      },
      "PayeeRenewalNotificationSettingsCreateSchemaRequestBody": {
        "description": "Complete notification configuration used by create, merge, and the developer API.\n\nOmitted or null fields take their empty/false defaults; omitted or null\n``recurring_settings`` disables recurrence. Omitted or null\n``scheduled_enabled`` keeps the replaced group's value (true for new groups).",
        "properties": {
          "notification_triggers": {
            "default": null,
            "items": {
              "$ref": "#/components/schemas/PayeeRenewalNotificationTriggerParametersRequestBody"
            },
            "nullable": true,
            "title": "Notification Triggers",
            "type": "array"
          },
          "recipient_approval_group_uuids": {
            "default": null,
            "items": {
              "type": "string"
            },
            "nullable": true,
            "title": "Recipient Approval Group Uuids",
            "type": "array"
          },
          "recipient_dynamic_user_group_uuids": {
            "default": null,
            "items": {
              "type": "string"
            },
            "nullable": true,
            "title": "Recipient Dynamic User Group Uuids",
            "type": "array"
          },
          "recipient_user_uuids": {
            "default": null,
            "items": {
              "type": "string"
            },
            "nullable": true,
            "title": "Recipient User Uuids",
            "type": "array"
          },
          "recurring_settings": {
            "$ref": "#/components/schemas/PayeeRenewalRecurringSettingsRequestBody",
            "default": null,
            "description": "Complete recurring configuration; omission or null disables recurrence.",
            "nullable": true
          },
          "scheduled_enabled": {
            "default": null,
            "description": "Pauses scheduled reminders when false; null preserves the current value.",
            "nullable": true,
            "title": "Scheduled Enabled",
            "type": "boolean"
          },
          "should_notify_contract_owner_managers": {
            "default": false,
            "title": "Should Notify Contract Owner Managers",
            "type": "boolean"
          }
        },
        "title": "PayeeRenewalNotificationSettingsCreateSchema",
        "type": "object"
      },
      "PayeeRenewalNotificationTriggerParametersRequestBody": {
        "properties": {
          "contract_event": {
            "$ref": "#/components/schemas/PayeeRenewalEventRequestBody"
          },
          "days_before": {
            "title": "Days Before",
            "type": "integer"
          }
        },
        "required": [
          "contract_event",
          "days_before"
        ],
        "title": "PayeeRenewalNotificationTriggerParameters",
        "type": "object"
      },
      "PayeeRenewalRecurringCadenceRequestBody": {
        "enum": [
          "BIWEEKLY",
          "DAILY",
          "MONTHLY",
          "WEEKLY",
          "YEARLY"
        ],
        "title": "PayeeRenewalRecurringCadence",
        "type": "string",
        "x-enum-descriptions": {
          "BIWEEKLY": "Repeat reminders every two weeks.",
          "DAILY": "Repeat reminders every day.",
          "MONTHLY": "Repeat reminders every month.",
          "WEEKLY": "Repeat reminders every week.",
          "YEARLY": "Repeat reminders every year."
        }
      },
      "PayeeRenewalRecurringSettingsRequestBody": {
        "additionalProperties": false,
        "description": "Complete recurring reminder configuration.\n\n``recurring_enabled`` is the on/off switch; the five ``recurring_*`` fields\ndescribe the configuration. A configured but disabled object is paused (the\nconfiguration is retained), while all-null configuration is only valid when\ndisabled.",
        "properties": {
          "recurring_cadence": {
            "$ref": "#/components/schemas/PayeeRenewalRecurringCadenceRequestBody",
            "description": "Repeat frequency, required when recurrence is enabled. BIWEEKLY means every two weeks.",
            "nullable": true
          },
          "recurring_enabled": {
            "description": "On/off switch. False with a configured recurrence pauses it; must be false when recurring_start_type is null.",
            "title": "Recurring Enabled",
            "type": "boolean"
          },
          "recurring_max_occurrences": {
            "description": "Optional cap on the number of reminders in the series (occurrences 0..N-1 from the anchor). Null means unlimited.",
            "exclusiveMinimum": true,
            "minimum": 0,
            "nullable": true,
            "title": "Recurring Max Occurrences",
            "type": "integer"
          },
          "recurring_start_event": {
            "$ref": "#/components/schemas/PayeeRenewalEventRequestBody",
            "description": "Contract event anchoring recurrence; required when configured. CONTRACT_START_DATE is only valid on perpetual contracts.",
            "nullable": true
          },
          "recurring_start_offset_days": {
            "description": "Days relative to the contract event: negative before, zero on, positive after. Required when configured; must be 0 for CONTRACT_START_DATE.",
            "nullable": true,
            "title": "Recurring Start Offset Days",
            "type": "integer"
          },
          "recurring_start_type": {
            "$ref": "#/components/schemas/PayeeRenewalRecurringStartTypeRequestBody",
            "description": "Anchor for recurring reminders; CONTRACT_EVENT is the only value. When null, all companion fields must also be null.",
            "nullable": true
          }
        },
        "required": [
          "recurring_cadence",
          "recurring_enabled",
          "recurring_max_occurrences",
          "recurring_start_event",
          "recurring_start_offset_days",
          "recurring_start_type"
        ],
        "title": "PayeeRenewalRecurringSettings",
        "type": "object"
      },
      "PayeeRenewalRecurringStartTypeRequestBody": {
        "enum": [
          "CONTRACT_EVENT"
        ],
        "title": "PayeeRenewalRecurringStartType",
        "type": "string",
        "x-enum-descriptions": {
          "CONTRACT_EVENT": "Start recurring reminders at a day offset from a contract event."
        }
      },
      "Payment": {
        "additionalProperties": false,
        "example": {
          "amount": {
            "currency": "USD",
            "value": 500000
          },
          "check_details": null,
          "customer_friendly_payment_id": "RAMP-PAY-1234",
          "entity_id": "0ef02ad1-824d-4e85-8a59-a78e428bd883",
          "external_invoice_number": "INV-12345",
          "external_ref": "ST_INV_12345",
          "failure_reason": null,
          "id": "4bcbba09-40a8-434f-9573-fa565c76fbcc",
          "is_cancelable": true,
          "payment_method": {
            "id": "87e601aa-1832-4879-b808-ba99a857f839",
            "type": "ACH"
          },
          "scheduled_date": "2026-02-10",
          "source_bank_account_id": "4bcbba09-40a8-434f-9573-fa565c76fbcc",
          "status": "SCHEDULED",
          "status_detail": "SCHEDULED",
          "vendor_id": "c99e6793-e2d3-4d26-8b0e-98ff4765726d"
        },
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/ApiAmount",
            "description": "The payment amount and currency.",
            "readOnly": true
          },
          "check_details": {
            "$ref": "#/components/schemas/PaymentCheckDetails",
            "description": "Check-specific delivery tracking details. Populated only for check-funded payments.",
            "nullable": true,
            "readOnly": true
          },
          "customer_friendly_payment_id": {
            "description": "Customer-friendly payment identifier for non-card payment methods, if available. Payments sharing the same value belong to the same payment or batch payment.",
            "nullable": true,
            "type": "string"
          },
          "entity_id": {
            "description": "Unique identifier of the entity making the payment.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "external_invoice_number": {
            "description": "The invoice number associated with this payment.",
            "nullable": true,
            "type": "string"
          },
          "external_ref": {
            "description": "An external reference identifier for this payment.",
            "nullable": true,
            "type": "string"
          },
          "failure_reason": {
            "description": "The reason for the payment failure, if applicable.",
            "enum": [
              "ACCOUNT_HOLDER_DECEASED",
              "CARD_DECLINED",
              "CARD_DETAILS_INVALID",
              "CARD_INSUFFICIENT_FUNDS",
              "CARD_PROCESSING_ERROR",
              "CARD_REVERIFICATION_REQUIRED",
              "CHECK_ATTACHMENT_REJECTED",
              "CHECK_DELIVERY_FAILURE",
              "CHECK_DEPOSIT_REJECTED",
              "CHECK_DEPOSIT_RETURNED",
              "CHECK_EXPIRED",
              "CHECK_VOIDED",
              "CHECK_WITHDRAWAL_INSUFFICIENT_BALANCE",
              "CHECK_WITHDRAWAL_RECIPIENT_NAME_MISMATCH",
              "CHECK_WITHDRAWAL_RETURNED",
              "DEBIT_DISPUTED",
              "DUPLICATE_ACH_ENTRY",
              "FAILURE_NOT_RECOGNIZED",
              "INTERNATIONAL_DIRECT_DEBIT_INSTRUMENT_UNAVAILABLE",
              "INTERNATIONAL_PROVIDER_UNAVAILABLE",
              "INVALID_BANK_BRANCH",
              "INVALID_ROUTING_NUMBER",
              "MANDATE_DATA_MISMATCH",
              "MISSING_PAYEE_BANK_ACCOUNT",
              "MISSING_PAYER_BANK_ACCOUNT",
              "PAYEE_ACCOUNT_CLOSED",
              "PAYEE_ACCOUNT_FROZEN",
              "PAYEE_ACCOUNT_INVALID_BENEFICIARY_DETAILS",
              "PAYEE_ACCOUNT_NON_TRANSACTIONAL",
              "PAYEE_ACCOUNT_NOT_FOUND",
              "PAYEE_ACCOUNT_REJECTED_PAYMENT",
              "PAYEE_ACCOUNT_WRONG_CURRENCY",
              "PAYEE_ACCOUNT_WRONG_NAME",
              "PAYER_ACCOUNT_CLOSED",
              "PAYER_ACCOUNT_DEBIT_BLOCK",
              "PAYER_ACCOUNT_FROZEN",
              "PAYER_ACCOUNT_INSUFFICIENT_FUNDS",
              "PAYER_ACCOUNT_NON_TRANSACTIONAL",
              "PAYER_ACCOUNT_NOT_FOUND",
              "PAYER_ACCOUNT_WRONG_CURRENCY",
              "PAYER_ACCOUNT_WRONG_NAME",
              "PAYER_OUTSTANDING_BALANCE",
              "PAYMENT_FREEZE",
              "PAYMENT_RETURNED_BY_PROVIDER",
              "PROVIDER_ACCOUNT_FROZEN",
              "QUOTE_REJECTED_BY_PROVIDER",
              "QUOTE_TRANSFER_TOO_EXPENSIVE",
              "SETTLEMENT_PAYMENT_CANCELED",
              "UNRESOLVED_COMPLIANCE_RFI",
              "UNRESOLVED_NO_DQ_INSUFFICIENT_FUNDS",
              "UNSUPPORTED_BY_BANKING_PARTNER",
              "WIRE_INCORRECT_ACCOUNT_NUMBER",
              "WIRE_INCORRECT_BENEFICIARY_DETAILS"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "ACCOUNT_HOLDER_DECEASED": "The account holder is deceased.",
              "CARD_DECLINED": "The payer's card was declined.",
              "CARD_DETAILS_INVALID": "The payer's card details are invalid or no longer available.",
              "CARD_INSUFFICIENT_FUNDS": "The payer's card has insufficient funds.",
              "CARD_PROCESSING_ERROR": "The payer's card could not be processed.",
              "CARD_REVERIFICATION_REQUIRED": "The payer's card must be re-added to authorize future payments.",
              "CHECK_ATTACHMENT_REJECTED": "The check's PDF attachment was rejected by the check provider; re-export the PDF and resubmit.",
              "CHECK_DELIVERY_FAILURE": "The check could not be delivered to the payee's address.",
              "CHECK_DEPOSIT_REJECTED": "The check deposit was rejected.",
              "CHECK_DEPOSIT_RETURNED": "The check deposit was returned.",
              "CHECK_EXPIRED": "The check expired before being deposited.",
              "CHECK_VOIDED": "The check was voided.",
              "CHECK_WITHDRAWAL_INSUFFICIENT_BALANCE": "The wallet has insufficient balance for the check withdrawal.",
              "CHECK_WITHDRAWAL_RECIPIENT_NAME_MISMATCH": "The check withdrawal recipient name does not match the deposited check.",
              "CHECK_WITHDRAWAL_RETURNED": "The check withdrawal was returned.",
              "DEBIT_DISPUTED": "The direct debit was disputed by the account holder.",
              "DUPLICATE_ACH_ENTRY": "The bank returned the ACH debit as a possible duplicate entry. Confirm the payment was not already collected before retrying.",
              "FAILURE_NOT_RECOGNIZED": "The payment failure reason could not be determined.",
              "INTERNATIONAL_DIRECT_DEBIT_INSTRUMENT_UNAVAILABLE": "The international direct debit payment instrument is unavailable.",
              "INTERNATIONAL_PROVIDER_UNAVAILABLE": "The international payment provider is unavailable.",
              "INVALID_BANK_BRANCH": "The bank branch identifier is invalid.",
              "INVALID_ROUTING_NUMBER": "The routing number is invalid.",
              "MANDATE_DATA_MISMATCH": "The direct debit mandate data does not match.",
              "MISSING_PAYEE_BANK_ACCOUNT": "No bank account is linked for the payee.",
              "MISSING_PAYER_BANK_ACCOUNT": "No bank account is linked for the payer.",
              "PAYEE_ACCOUNT_CLOSED": "The payee's bank account is closed or frozen.",
              "PAYEE_ACCOUNT_FROZEN": "The payee's bank account is frozen.",
              "PAYEE_ACCOUNT_INVALID_BENEFICIARY_DETAILS": "The payee's beneficiary details are invalid",
              "PAYEE_ACCOUNT_NON_TRANSACTIONAL": "The payee's bank account does not support ACH transactions.",
              "PAYEE_ACCOUNT_NOT_FOUND": "The payee's bank account could not be found.",
              "PAYEE_ACCOUNT_REJECTED_PAYMENT": "The payee's bank account rejected the payment.",
              "PAYEE_ACCOUNT_WRONG_CURRENCY": "The payee's bank account currency does not match the payment currency.",
              "PAYEE_ACCOUNT_WRONG_NAME": "The payee's account name does not match.",
              "PAYER_ACCOUNT_CLOSED": "The payer's bank account is closed or frozen.",
              "PAYER_ACCOUNT_DEBIT_BLOCK": "The payer's bank account has a debit block preventing the payment.",
              "PAYER_ACCOUNT_FROZEN": "The payer's bank account is frozen.",
              "PAYER_ACCOUNT_INSUFFICIENT_FUNDS": "The payer's bank account has insufficient or uncollected funds.",
              "PAYER_ACCOUNT_NON_TRANSACTIONAL": "The payer's bank account does not support ACH transactions.",
              "PAYER_ACCOUNT_NOT_FOUND": "The payer's bank account could not be found.",
              "PAYER_ACCOUNT_WRONG_CURRENCY": "The payer's bank account currency does not match the payment currency.",
              "PAYER_ACCOUNT_WRONG_NAME": "The payer's account name does not match.",
              "PAYER_OUTSTANDING_BALANCE": "The payer has an outstanding balance that must be resolved.",
              "PAYMENT_FREEZE": "The payment was frozen due to a compliance hold.",
              "PAYMENT_RETURNED_BY_PROVIDER": "The payment was returned by the provider; see the raw provider reason for details.",
              "PROVIDER_ACCOUNT_FROZEN": "The provider account funding the payout is frozen.",
              "QUOTE_REJECTED_BY_PROVIDER": "The payment quote was rejected by the provider.",
              "QUOTE_TRANSFER_TOO_EXPENSIVE": "The payment transfer was too expensive to process.",
              "SETTLEMENT_PAYMENT_CANCELED": "The upstream settlement payment was canceled.",
              "UNRESOLVED_COMPLIANCE_RFI": "The payment has an unresolved compliance request for information.",
              "UNRESOLVED_NO_DQ_INSUFFICIENT_FUNDS": "The payment has an unresolved insufficient funds issue.",
              "UNSUPPORTED_BY_BANKING_PARTNER": "The payment method is not supported by the banking partner.",
              "WIRE_INCORRECT_ACCOUNT_NUMBER": "The payee's wire account number or routing number is incorrect.",
              "WIRE_INCORRECT_BENEFICIARY_DETAILS": "The payee's wire beneficiary details are incorrect or incomplete."
            }
          },
          "id": {
            "description": "Unique identifier for the payment.",
            "format": "uuid",
            "type": "string"
          },
          "is_cancelable": {
            "description": "Whether this payment can be canceled.",
            "readOnly": true,
            "type": "boolean"
          },
          "payment_method": {
            "$ref": "#/components/schemas/ApiPaymentMethodResource",
            "description": "The payment method used for this payment.",
            "readOnly": true
          },
          "scheduled_date": {
            "description": "The date the payment is scheduled to be initiated.",
            "format": "date",
            "type": "string"
          },
          "source_bank_account_id": {
            "description": "Unique identifier of the bank account the payment is sent from.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "bank_accounts",
              "type": "many-to-one"
            }
          },
          "status": {
            "description": "The current status of the payment.",
            "enum": [
              "CANCELED",
              "COMPLETED",
              "ERROR",
              "PROCESSING",
              "SCHEDULED"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "CANCELED": "The payment was canceled before completion.",
              "COMPLETED": "The payment completed successfully.",
              "ERROR": "The payment encountered an error and was not completed.",
              "PROCESSING": "The payment is currently being processed.",
              "SCHEDULED": "The payment is scheduled to be sent on a future date."
            }
          },
          "status_detail": {
            "description": "The detailed processing status for an ACH payment. Null for other payment methods.",
            "enum": [
              "CANCELED",
              "DEBITING",
              "DELIVERED",
              "FAILED",
              "INITIATED",
              "SCHEDULED",
              "TRANSFERRING_TO_VENDOR"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "CANCELED": "The ACH payment was canceled.",
              "DEBITING": "Ramp is debiting funds from the source bank account.",
              "DELIVERED": "The funds were delivered to the vendor.",
              "FAILED": "The ACH payment failed.",
              "INITIATED": "Ramp initiated the ACH payment.",
              "SCHEDULED": "The ACH payment is scheduled for a future date.",
              "TRANSFERRING_TO_VENDOR": "Ramp is transferring funds to the vendor."
            }
          },
          "vendor_id": {
            "description": "Unique identifier of the vendor being paid.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "amount",
          "check_details",
          "customer_friendly_payment_id",
          "entity_id",
          "external_invoice_number",
          "external_ref",
          "failure_reason",
          "id",
          "is_cancelable",
          "payment_method",
          "scheduled_date",
          "source_bank_account_id",
          "status",
          "status_detail",
          "vendor_id"
        ],
        "type": "object",
        "x-resource-name": "payments"
      },
      "PaymentCheckDetails": {
        "additionalProperties": false,
        "example": {
          "estimated_delivery_date": "2024-01-03",
          "mailed_at": "2024-01-01T00:00:00+00:00",
          "tracking_number": "9400111899223456789012",
          "tracking_updates": [
            {
              "city": "San Francisco",
              "created_at": "2024-01-01T00:00:00+00:00",
              "postal_code": "94105",
              "state": "CA",
              "status": "in_transit"
            }
          ],
          "tracking_url": "https://tools.usps.com/go/TrackConfirmAction?tLabels=9400111899223456789012"
        },
        "properties": {
          "estimated_delivery_date": {
            "description": "Estimated date the mailed check will reach the vendor, if available.",
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "mailed_at": {
            "description": "ISO 8601 timestamp the check printing provider reported mailing the check, if available.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "tracking_number": {
            "description": "Carrier tracking number for the mailed check, if available.",
            "nullable": true,
            "type": "string"
          },
          "tracking_updates": {
            "description": "Carrier tracking updates for the mailed check, in the order returned by the carrier. Empty when no tracking updates have been received yet.",
            "items": {
              "$ref": "#/components/schemas/PaymentCheckTrackingUpdate"
            },
            "type": "array"
          },
          "tracking_url": {
            "description": "Carrier tracking URL for the mailed check, if available.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "estimated_delivery_date",
          "mailed_at",
          "tracking_number",
          "tracking_updates",
          "tracking_url"
        ],
        "type": "object"
      },
      "PaymentCheckTrackingUpdate": {
        "additionalProperties": false,
        "properties": {
          "city": {
            "description": "City where the tracking event occurred, if reported by the carrier.",
            "nullable": true,
            "type": "string"
          },
          "created_at": {
            "description": "ISO 8601 timestamp the carrier recorded for this tracking event.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "postal_code": {
            "description": "Postal code where the tracking event occurred, if reported by the carrier.",
            "nullable": true,
            "type": "string"
          },
          "state": {
            "description": "State where the tracking event occurred, if reported by the carrier.",
            "nullable": true,
            "type": "string"
          },
          "status": {
            "description": "The carrier-reported tracking status for this update.",
            "enum": [
              "delivered",
              "delivery_issue",
              "in_transit",
              "processed_for_delivery",
              "returned_to_sender",
              "returning_to_sender"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "delivered": "The check was delivered.",
              "delivery_issue": "There is an issue with the delivery address.",
              "in_transit": "The check is in transit.",
              "processed_for_delivery": "The check is out for delivery.",
              "returned_to_sender": "The check was returned to the sender.",
              "returning_to_sender": "The check is being returned to the sender."
            }
          }
        },
        "required": [
          "city",
          "created_at",
          "postal_code",
          "state",
          "status"
        ],
        "type": "object"
      },
      "PaymentRestrictions": {
        "properties": {
          "primary_card_enabled": {
            "default": false,
            "type": "boolean"
          },
          "reimbursements_enabled": {
            "default": false,
            "type": "boolean"
          },
          "virtual_card_enabled": {
            "default": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "PhysicalCard": {
        "example": {
          "automatic_routing_enabled": false,
          "cardholder_id": "3a5b1f62-988f-4190-bf31-b7ae87c5df42",
          "cardholder_name": "Julie Phillip",
          "created_at": "2022-05-04T00:00:00+00:00",
          "display_name": "T&E",
          "expiration": "0227",
          "fulfillment": {
            "fulfillment_status": "ISSUED",
            "shipping": {
              "recipient_address": {
                "address1": "123 Main St",
                "city": "New York City",
                "country": "US",
                "first_name": "Julie",
                "last_name": "Phillip",
                "postal_code": "10003",
                "state": "NY"
              }
            },
            "shipping_date": null,
            "shipping_eta": null,
            "shipping_tracking_url": null
          },
          "fund_id": "123e4567-e89b-12d3-a456-426614174000",
          "has_program_overridden": false,
          "id": "d8135cfe-0396-4b2d-b2cf-ad809fb04731",
          "is_physical": true,
          "is_primary": true,
          "is_suspended": false,
          "last_four": "3751",
          "state": "ACTIVE"
        },
        "properties": {
          "automatic_routing_enabled": {
            "description": "Whether automatic routing is enabled",
            "type": "boolean"
          },
          "cardholder_id": {
            "description": "Unique identifier of the card holder.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "cardholder_name": {
            "description": "Card holder's full name.",
            "type": "string"
          },
          "created_at": {
            "description": "Date time at which the card is created. It conforms to ISO8601 format",
            "format": "date-time",
            "type": "string"
          },
          "display_name": {
            "description": "Cosmetic display name of the card.",
            "readOnly": true,
            "type": "string"
          },
          "expiration": {
            "description": "Expiration date in the format of MMYY.",
            "readOnly": true,
            "type": "string"
          },
          "fulfillment": {
            "$ref": "#/components/schemas/ApiCardFulfillment",
            "description": "Fulfillment details of a Ramp card. For physical cards only.",
            "nullable": true,
            "readOnly": true
          },
          "fund_id": {
            "description": "Unique identifier of the fund associated with this physical card.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "funds",
              "type": "many-to-one"
            }
          },
          "has_program_overridden": {
            "description": "Whether the card has overridden the default settings from its card program.",
            "readOnly": true,
            "type": "boolean"
          },
          "id": {
            "description": "Unique identifier of the card.",
            "format": "uuid",
            "type": "string"
          },
          "is_physical": {
            "description": "Whether this is a physical card",
            "type": "boolean"
          },
          "is_primary": {
            "description": "Whether this is a primary card for this user. This will always be True",
            "type": "boolean"
          },
          "is_suspended": {
            "description": "Whether the card is suspended.",
            "readOnly": true,
            "type": "boolean"
          },
          "last_four": {
            "description": "Last four digits of the card number.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "description": "State of the card",
            "enum": [
              "ACTIVE",
              "CHIP_LOCKED",
              "SUSPENDED",
              "TERMINATED",
              "UNACTIVATED"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ACTIVE": "The card is active and can be used for transactions.",
              "CHIP_LOCKED": "The card chip is locked after the PIN retry limit was exceeded.",
              "SUSPENDED": "The card is temporarily suspended and cannot be used for transactions.",
              "TERMINATED": "The card has been permanently terminated and cannot be used for transactions.",
              "UNACTIVATED": "The card has been issued but has not yet been activated."
            }
          }
        },
        "required": [
          "display_name",
          "expiration",
          "fulfillment",
          "has_program_overridden",
          "is_suspended",
          "last_four"
        ],
        "type": "object",
        "x-resource-name": "physical_cards"
      },
      "PlanningActionUpdateRequestBody": {
        "properties": {
          "type": {
            "description": "Marks the agreement as planning to renew, independently of a renewal draft.",
            "enum": [
              "PLANNING"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "title": "PlanningActionUpdate",
        "type": "object"
      },
      "PolicyLight": {
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_default": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "is_default",
          "name"
        ],
        "type": "object"
      },
      "PolyObjectValuePoly": {
        "properties": {
          "object_type": {
            "type": "string"
          },
          "objects": {
            "items": {
              "$ref": "#/components/schemas/SingleObject"
            },
            "type": "array"
          },
          "operand_type": {
            "enum": [
              "OBJECT_LIST"
            ],
            "type": "string"
          }
        },
        "required": [
          "object_type",
          "objects",
          "operand_type"
        ],
        "type": "object"
      },
      "PredictionFeedbackType": {
        "description": "Type of feedback provided by the user.",
        "enum": [
          "negative",
          "positive"
        ],
        "title": "PredictionFeedbackType",
        "type": "string"
      },
      "PrimaryEntityReferenceResource": {
        "properties": {
          "id": {
            "description": "Unique identifier of the entity reference",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "label": {
            "description": "Label of the entity reference",
            "type": "string"
          },
          "resource_name": {
            "enum": [
              "Accounting rule group",
              "Approvals",
              "Bill payment",
              "Bill template",
              "Card",
              "Cash Manager recommendation",
              "Fixed asset class",
              "Fixed asset",
              "Forecast custom input",
              "Fund request",
              "Investment account",
              "Legal entity",
              "Managed portfolio transfer",
              "Payment run",
              "Reimbursement",
              "SFTP Configurations",
              "Separation of duties",
              "Spend allocation",
              "Spend event",
              "Spend program",
              "Transaction",
              "Travel (Booking request)",
              "Travel (Trip)",
              "Treasury account",
              "User",
              "Vendor / Merchant",
              "WBX Policy",
              "WBX Request",
              "Wallet automation policy",
              "Wallet transfer",
              "Workflow (Base)",
              "Workflow"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "Accounting rule group": "An accounting rule group.",
              "Cash Manager recommendation": "Cash Manager recommendation",
              "Fixed asset": "Fixed asset",
              "Fixed asset class": "Fixed asset class",
              "Forecast custom input": "Forecast custom input",
              "Investment account": "Investment account",
              "Legal entity": "A business legal entity.",
              "Managed portfolio transfer": "Managed portfolio transfer",
              "Payment run": "Payment run",
              "Spend program": "A spend program.",
              "Wallet automation policy": "A treasury automation policy."
            }
          },
          "url": {
            "description": "URL of the entity reference",
            "type": "string"
          }
        },
        "required": [
          "id",
          "label",
          "resource_name",
          "url"
        ],
        "type": "object"
      },
      "PrimarySystemRole": {
        "enum": [
          "ADVISOR_CONSOLE_ADMIN",
          "ADVISOR_CONSOLE_USER",
          "AUDITOR",
          "BUSINESS_ADMIN",
          "BUSINESS_BOOKKEEPER",
          "BUSINESS_OWNER",
          "BUSINESS_USER",
          "DEVELOPER_ADMIN",
          "GUEST_USER",
          "IT_ADMIN",
          "MACHINE_USER",
          "PRESALES_DEMO_USER",
          "UNBUNDLED_ADMIN",
          "UNBUNDLED_BOOKKEEPER",
          "UNBUNDLED_OWNER",
          "UNBUNDLED_USER",
          "VENDOR_NETWORK_ADMIN"
        ],
        "type": "string",
        "x-enum-descriptions": {
          "ADVISOR_CONSOLE_ADMIN": "Advisor Console Admin",
          "ADVISOR_CONSOLE_USER": "Advisor Console User",
          "AUDITOR": "Auditor",
          "BUSINESS_ADMIN": "Business Admin",
          "BUSINESS_BOOKKEEPER": "Business Bookkeeper",
          "BUSINESS_OWNER": "Business Owner",
          "BUSINESS_USER": "Business User",
          "DEVELOPER_ADMIN": "Developer Admin",
          "GUEST_USER": "Guest User",
          "IT_ADMIN": "It Admin",
          "MACHINE_USER": "Machine User",
          "PRESALES_DEMO_USER": "Presales Demo User",
          "UNBUNDLED_ADMIN": "Unbundled Admin",
          "UNBUNDLED_BOOKKEEPER": "Unbundled Bookkeeper",
          "UNBUNDLED_OWNER": "Unbundled Owner",
          "UNBUNDLED_USER": "Unbundled User",
          "VENDOR_NETWORK_ADMIN": "Vendor Network Admin"
        }
      },
      "ProcurementChangeRequestAccountingFieldDiff": {
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "field": {
            "title": "Field",
            "type": "string"
          },
          "field_type": {
            "default": "ACCOUNTING_FIELD",
            "enum": [
              "ACCOUNTING_FIELD"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "is_custom_field": {
            "default": false,
            "title": "Is Custom Field",
            "type": "boolean"
          },
          "new_value": {
            "$ref": "#/components/schemas/ProcurementChangeRequestAccountingFieldValues",
            "nullable": true
          },
          "old_value": {
            "$ref": "#/components/schemas/ProcurementChangeRequestAccountingFieldValues",
            "nullable": true
          }
        },
        "required": [
          "display_name",
          "field",
          "field_type",
          "is_custom_field",
          "new_value",
          "old_value"
        ],
        "title": "ProcurementChangeRequestAccountingFieldDiff",
        "type": "object"
      },
      "ProcurementChangeRequestAccountingFieldValues": {
        "description": "Structured values for header accounting field diffs.",
        "properties": {
          "tracking_categories": {
            "default": null,
            "items": {
              "$ref": "#/components/schemas/ProcurementChangeRequestAccountingTrackingCategoryValue"
            },
            "nullable": true,
            "title": "Tracking Categories",
            "type": "array"
          }
        },
        "title": "ProcurementChangeRequestAccountingFieldValues",
        "type": "object"
      },
      "ProcurementChangeRequestAccountingTrackingCategoryValue": {
        "properties": {
          "tracking_category_id": {
            "title": "Tracking Category Id",
            "type": "integer"
          },
          "tracking_category_name": {
            "title": "Tracking Category Name",
            "type": "string"
          },
          "tracking_category_option_name": {
            "title": "Tracking Category Option Name",
            "type": "string"
          }
        },
        "required": [
          "tracking_category_id",
          "tracking_category_name",
          "tracking_category_option_name"
        ],
        "title": "ProcurementChangeRequestAccountingTrackingCategoryValue",
        "type": "object"
      },
      "ProcurementChangeRequestFieldsDiff": {
        "properties": {
          "fields": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ProcurementChangeRequestAccountingFieldDiff"
                },
                {
                  "$ref": "#/components/schemas/ProcurementChangeRequestFilesFieldDiff"
                },
                {
                  "$ref": "#/components/schemas/ProcurementChangeRequestLegacyFieldDiff"
                },
                {
                  "$ref": "#/components/schemas/ProcurementChangeRequestLineItemFieldDiff"
                },
                {
                  "$ref": "#/components/schemas/ProcurementChangeRequestLinkFieldDiff"
                },
                {
                  "$ref": "#/components/schemas/ProcurementChangeRequestTextFieldDiff"
                }
              ]
            },
            "title": "Fields",
            "type": "array"
          }
        },
        "required": [
          "fields"
        ],
        "title": "ProcurementChangeRequestFieldsDiff",
        "type": "object"
      },
      "ProcurementChangeRequestFileFieldResponse": {
        "properties": {
          "original_filename": {
            "title": "Original Filename",
            "type": "string"
          },
          "url": {
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "original_filename",
          "url"
        ],
        "title": "ProcurementChangeRequestFileFieldResponse",
        "type": "object"
      },
      "ProcurementChangeRequestFilesFieldDiff": {
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "field": {
            "title": "Field",
            "type": "string"
          },
          "field_type": {
            "default": "FILE",
            "enum": [
              "FILE"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "is_custom_field": {
            "default": false,
            "title": "Is Custom Field",
            "type": "boolean"
          },
          "new_value": {
            "items": {
              "$ref": "#/components/schemas/ProcurementChangeRequestFileFieldResponse"
            },
            "nullable": true,
            "title": "New Value",
            "type": "array"
          },
          "old_value": {
            "items": {
              "$ref": "#/components/schemas/ProcurementChangeRequestFileFieldResponse"
            },
            "nullable": true,
            "title": "Old Value",
            "type": "array"
          }
        },
        "required": [
          "display_name",
          "field",
          "field_type",
          "is_custom_field",
          "new_value",
          "old_value"
        ],
        "title": "ProcurementChangeRequestFilesFieldDiff",
        "type": "object"
      },
      "ProcurementChangeRequestLegacyFieldDiff": {
        "description": "Deprecated pre-field_type string diff; the only variant without field_type.",
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "field": {
            "title": "Field",
            "type": "string"
          },
          "is_custom_field": {
            "default": false,
            "title": "Is Custom Field",
            "type": "boolean"
          },
          "new_value": {
            "nullable": true,
            "title": "New Value",
            "type": "string"
          },
          "old_value": {
            "nullable": true,
            "title": "Old Value",
            "type": "string"
          }
        },
        "required": [
          "display_name",
          "field",
          "is_custom_field",
          "new_value",
          "old_value"
        ],
        "title": "ProcurementChangeRequestLegacyFieldDiff",
        "type": "object"
      },
      "ProcurementChangeRequestLineItemFieldDiff": {
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "field": {
            "title": "Field",
            "type": "string"
          },
          "field_type": {
            "default": "LINE_ITEM",
            "enum": [
              "LINE_ITEM"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "is_custom_field": {
            "default": false,
            "title": "Is Custom Field",
            "type": "boolean"
          },
          "new_value": {
            "$ref": "#/components/schemas/ProcurementChangeRequestLineItemValues",
            "nullable": true
          },
          "old_value": {
            "$ref": "#/components/schemas/ProcurementChangeRequestLineItemValues",
            "nullable": true
          }
        },
        "required": [
          "display_name",
          "field",
          "field_type",
          "is_custom_field",
          "new_value",
          "old_value"
        ],
        "title": "ProcurementChangeRequestLineItemFieldDiff",
        "type": "object"
      },
      "ProcurementChangeRequestLineItemValues": {
        "description": "Structured values for a line item, used in line item diffs.",
        "properties": {
          "amount": {
            "default": null,
            "nullable": true,
            "title": "Amount",
            "type": "string"
          },
          "custom_field_values": {
            "additionalProperties": {
              "type": "string"
            },
            "default": null,
            "nullable": true,
            "title": "Custom Field Values",
            "type": "object"
          },
          "description": {
            "default": null,
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "due_date": {
            "default": null,
            "nullable": true,
            "title": "Due Date",
            "type": "string"
          },
          "end_date": {
            "default": null,
            "nullable": true,
            "title": "End Date",
            "type": "string"
          },
          "quantity": {
            "default": null,
            "nullable": true,
            "title": "Quantity",
            "type": "string"
          },
          "rate": {
            "default": null,
            "nullable": true,
            "title": "Rate",
            "type": "string"
          },
          "retainage": {
            "default": null,
            "description": "Calculated retainage amount.",
            "nullable": true,
            "title": "Retainage",
            "type": "string"
          },
          "start_date": {
            "default": null,
            "nullable": true,
            "title": "Start Date",
            "type": "string"
          },
          "tracking_categories": {
            "additionalProperties": {
              "type": "string"
            },
            "default": null,
            "nullable": true,
            "title": "Tracking Categories",
            "type": "object"
          }
        },
        "title": "ProcurementChangeRequestLineItemValues",
        "type": "object"
      },
      "ProcurementChangeRequestLinkFieldDiff": {
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "field": {
            "title": "Field",
            "type": "string"
          },
          "field_type": {
            "default": "LINK",
            "enum": [
              "LINK"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "is_custom_field": {
            "default": false,
            "title": "Is Custom Field",
            "type": "boolean"
          },
          "new_value": {
            "nullable": true,
            "title": "New Value",
            "type": "string"
          },
          "old_value": {
            "nullable": true,
            "title": "Old Value",
            "type": "string"
          }
        },
        "required": [
          "display_name",
          "field",
          "field_type",
          "is_custom_field",
          "new_value",
          "old_value"
        ],
        "title": "ProcurementChangeRequestLinkFieldDiff",
        "type": "object"
      },
      "ProcurementChangeRequestTextFieldDiff": {
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "field": {
            "title": "Field",
            "type": "string"
          },
          "field_type": {
            "default": "TEXT",
            "enum": [
              "TEXT"
            ],
            "title": "Field Type",
            "type": "string"
          },
          "is_custom_field": {
            "default": false,
            "title": "Is Custom Field",
            "type": "boolean"
          },
          "new_value": {
            "nullable": true,
            "title": "New Value",
            "type": "string"
          },
          "old_value": {
            "nullable": true,
            "title": "Old Value",
            "type": "string"
          }
        },
        "required": [
          "display_name",
          "field",
          "field_type",
          "is_custom_field",
          "new_value",
          "old_value"
        ],
        "title": "ProcurementChangeRequestTextFieldDiff",
        "type": "object"
      },
      "ProcurementDocumentLineItemResult": {
        "properties": {
          "custom_field_values": {
            "description": "Enabled line-item custom field values extracted from the document.",
            "items": {
              "$ref": "#/components/schemas/LineItemCustomFieldValueInput"
            },
            "type": "array"
          },
          "description": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "end_date": {
            "default": null,
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "line_item_type": {
            "enum": [
              "EXPENSE",
              "ITEM"
            ],
            "type": "string"
          },
          "quantity": {
            "default": null,
            "nullable": true,
            "type": "number"
          },
          "start_date": {
            "default": null,
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "unit_price": {
            "default": null,
            "nullable": true,
            "type": "number"
          },
          "unit_quantity": {
            "deprecated": true,
            "description": "Use `quantity` instead.",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "description",
          "end_date",
          "line_item_type",
          "quantity",
          "start_date",
          "unit_price",
          "unit_quantity"
        ],
        "type": "object"
      },
      "ProcurementDocumentPayeeResult": {
        "properties": {
          "logo": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "uuid": {
            "type": "string"
          }
        },
        "required": [
          "logo",
          "name",
          "uuid"
        ],
        "type": "object"
      },
      "ProcurementDocumentResultResponse": {
        "properties": {
          "currency": {
            "enum": [
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ANG",
              "AOA",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BBD",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BMD",
              "BND",
              "BOB",
              "BOV",
              "BRL",
              "BSD",
              "BTN",
              "BWP",
              "BYN",
              "BZD",
              "CAD",
              "CDF",
              "CHE",
              "CHF",
              "CHW",
              "CLF",
              "CLP",
              "CNH",
              "CNY",
              "COP",
              "COU",
              "CRC",
              "CUC",
              "CUP",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "ERN",
              "ETB",
              "EUR",
              "EURC",
              "FJD",
              "FKP",
              "GBP",
              "GEL",
              "GHS",
              "GIP",
              "GMD",
              "GNF",
              "GTQ",
              "GYD",
              "HKD",
              "HNL",
              "HRK",
              "HTG",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KGS",
              "KHR",
              "KMF",
              "KPW",
              "KRW",
              "KWD",
              "KYD",
              "KZT",
              "LAK",
              "LBP",
              "LKR",
              "LRD",
              "LSL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MNT",
              "MOP",
              "MRU",
              "MUR",
              "MVR",
              "MWK",
              "MXN",
              "MXV",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "OPEN_USD",
              "PAB",
              "PEN",
              "PGK",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SBD",
              "SCR",
              "SDG",
              "SEK",
              "SGD",
              "SHP",
              "SLE",
              "SLL",
              "SOS",
              "SRD",
              "SSP",
              "STN",
              "SVC",
              "SYP",
              "SZL",
              "THB",
              "TJS",
              "TMT",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "USD",
              "USDB",
              "USDC",
              "USDG",
              "USDT",
              "USN",
              "UYI",
              "UYU",
              "UYW",
              "UZS",
              "VED",
              "VES",
              "VND",
              "VUV",
              "WST",
              "XAD",
              "XAF",
              "XAG",
              "XAU",
              "XBA",
              "XBB",
              "XBC",
              "XBD",
              "XCD",
              "XCG",
              "XDR",
              "XOF",
              "XPD",
              "XPF",
              "XPT",
              "XSU",
              "XTS",
              "XUA",
              "XXX",
              "YER",
              "ZAR",
              "ZMW",
              "ZWG",
              "ZWL"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "AED": "UAE Dirham",
              "AFN": "Afghani",
              "ALL": "Lek",
              "AMD": "Armenian Dram",
              "ANG": "Netherlands Antillean Guilder",
              "AOA": "Kwanza",
              "ARS": "Argentine Peso",
              "AUD": "Australian Dollar",
              "AWG": "Aruban Florin",
              "AZN": "Azerbaijan Manat",
              "BAM": "Convertible Mark",
              "BBD": "Barbados Dollar",
              "BDT": "Taka",
              "BGN": "Bulgarian Lev",
              "BHD": "Bahraini Dinar",
              "BIF": "Burundi Franc",
              "BMD": "Bermudian Dollar",
              "BND": "Brunei Dollar",
              "BOB": "Boliviano",
              "BOV": "Mvdol",
              "BRL": "Brazilian Real",
              "BSD": "Bahamian Dollar",
              "BTN": "Ngultrum",
              "BWP": "Pula",
              "BYN": "Belarusian Ruble",
              "BZD": "Belize Dollar",
              "CAD": "Canadian Dollar",
              "CDF": "Congolese Franc",
              "CHE": "WIR Euro",
              "CHF": "Swiss Franc",
              "CHW": "WIR Franc",
              "CLF": "Unidad de Fomento",
              "CLP": "Chilean Peso",
              "CNH": "CNH",
              "CNY": "Yuan Renminbi",
              "COP": "Colombian Peso",
              "COU": "Unidad de Valor Real",
              "CRC": "Costa Rican Colon",
              "CUC": "Peso Convertible",
              "CUP": "Cuban Peso",
              "CVE": "Cabo Verde Escudo",
              "CZK": "Czech Koruna",
              "DJF": "Djibouti Franc",
              "DKK": "Danish Krone",
              "DOP": "Dominican Peso",
              "DZD": "Algerian Dinar",
              "EGP": "Egyptian Pound",
              "ERN": "Nakfa",
              "ETB": "Ethiopian Birr",
              "EUR": "Euro",
              "EURC": "Euro Coin",
              "FJD": "Fiji Dollar",
              "FKP": "Falkland Islands Pound",
              "GBP": "Pound Sterling",
              "GEL": "Lari",
              "GHS": "Ghana Cedi",
              "GIP": "Gibraltar Pound",
              "GMD": "Dalasi",
              "GNF": "Guinean Franc",
              "GTQ": "Quetzal",
              "GYD": "Guyana Dollar",
              "HKD": "Hong Kong Dollar",
              "HNL": "Lempira",
              "HRK": "Croatian Kuna",
              "HTG": "Gourde",
              "HUF": "Forint",
              "IDR": "Rupiah",
              "ILS": "New Israeli Sheqel",
              "INR": "Indian Rupee",
              "IQD": "Iraqi Dinar",
              "IRR": "Iranian Rial",
              "ISK": "Iceland Krona",
              "JMD": "Jamaican Dollar",
              "JOD": "Jordanian Dinar",
              "JPY": "Yen",
              "KES": "Kenyan Shilling",
              "KGS": "Som",
              "KHR": "Riel",
              "KMF": "Comorian Franc",
              "KPW": "North Korean Won",
              "KRW": "Won",
              "KWD": "Kuwaiti Dinar",
              "KYD": "Cayman Islands Dollar",
              "KZT": "Tenge",
              "LAK": "Lao Kip",
              "LBP": "Lebanese Pound",
              "LKR": "Sri Lanka Rupee",
              "LRD": "Liberian Dollar",
              "LSL": "Loti",
              "LYD": "Libyan Dinar",
              "MAD": "Moroccan Dirham",
              "MDL": "Moldovan Leu",
              "MGA": "Malagasy Ariary",
              "MKD": "Denar",
              "MMK": "Kyat",
              "MNT": "Tugrik",
              "MOP": "Pataca",
              "MRU": "Ouguiya",
              "MUR": "Mauritius Rupee",
              "MVR": "Rufiyaa",
              "MWK": "Malawi Kwacha",
              "MXN": "Mexican Peso",
              "MXV": "Mexican Unidad de Inversion (UDI)",
              "MYR": "Malaysian Ringgit",
              "MZN": "Mozambique Metical",
              "NAD": "Namibia Dollar",
              "NGN": "Naira",
              "NIO": "Cordoba Oro",
              "NOK": "Norwegian Krone",
              "NPR": "Nepalese Rupee",
              "NZD": "New Zealand Dollar",
              "OMR": "Rial Omani",
              "OPEN_USD": "OpenUSD",
              "PAB": "Balboa",
              "PEN": "Sol",
              "PGK": "Kina",
              "PHP": "Philippine Peso",
              "PKR": "Pakistan Rupee",
              "PLN": "Zloty",
              "PYG": "Guarani",
              "QAR": "Qatari Rial",
              "RON": "Romanian Leu",
              "RSD": "Serbian Dinar",
              "RUB": "Russian Ruble",
              "RWF": "Rwanda Franc",
              "SAR": "Saudi Riyal",
              "SBD": "Solomon Islands Dollar",
              "SCR": "Seychelles Rupee",
              "SDG": "Sudanese Pound",
              "SEK": "Swedish Krona",
              "SGD": "Singapore Dollar",
              "SHP": "Saint Helena Pound",
              "SLE": "Leone",
              "SLL": "Leone",
              "SOS": "Somali Shilling",
              "SRD": "Surinam Dollar",
              "SSP": "South Sudanese Pound",
              "STN": "Dobra",
              "SVC": "El Salvador Colon",
              "SYP": "Syrian Pound",
              "SZL": "Lilangeni",
              "THB": "Baht",
              "TJS": "Somoni",
              "TMT": "Turkmenistan New Manat",
              "TND": "Tunisian Dinar",
              "TOP": "Pa’anga",
              "TRY": "Turkish Lira",
              "TTD": "Trinidad and Tobago Dollar",
              "TWD": "New Taiwan Dollar",
              "TZS": "Tanzanian Shilling",
              "UAH": "Hryvnia",
              "UGX": "Uganda Shilling",
              "USD": "US Dollar",
              "USDB": "USDB",
              "USDC": "USDC",
              "USDG": "Global Dollar",
              "USDT": "USDT",
              "USN": "US Dollar (Next day)",
              "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
              "UYU": "Peso Uruguayo",
              "UYW": "Unidad Previsional",
              "UZS": "Uzbekistan Sum",
              "VED": "Bolívar Soberano",
              "VES": "Bolívar Soberano",
              "VND": "Dong",
              "VUV": "Vatu",
              "WST": "Tala",
              "XAD": "Arab Accounting Dinar",
              "XAF": "CFA Franc BEAC",
              "XAG": "Silver",
              "XAU": "Gold",
              "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
              "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
              "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
              "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
              "XCD": "East Caribbean Dollar",
              "XCG": "Caribbean Guilder",
              "XDR": "SDR (Special Drawing Right)",
              "XOF": "CFA Franc BCEAO",
              "XPD": "Palladium",
              "XPF": "CFP Franc",
              "XPT": "Platinum",
              "XSU": "Sucre",
              "XTS": "Codes specifically reserved for testing purposes",
              "XUA": "ADB Unit of Account",
              "XXX": "The codes assigned for transactions where no currency is involved",
              "YER": "Yemeni Rial",
              "ZAR": "Rand",
              "ZMW": "Zambian Kwacha",
              "ZWG": "Zimbabwe Gold",
              "ZWL": "Zimbabwe Dollar"
            }
          },
          "entity_uuid": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "line_items": {
            "items": {
              "$ref": "#/components/schemas/ProcurementDocumentLineItemResult"
            },
            "type": "array"
          },
          "name": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "ocr_detected_currency": {
            "description": "Raw currency value detected by OCR when Core fell back to a supported currency. Null when no currency fallback occurred.",
            "nullable": true,
            "type": "string"
          },
          "payee": {
            "$ref": "#/components/schemas/ProcurementDocumentPayeeResult",
            "default": null,
            "nullable": true
          },
          "purchase_order_autocoding_suggestions": {
            "$ref": "#/components/schemas/PurchaseOrderAutocodingSuggestionsResponseSchema",
            "description": "Purchase order accounting values suggested from the uploaded document.",
            "nullable": true
          },
          "spend_end_date": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "spend_frequency": {
            "enum": [
              "ANNUAL",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ANNUAL": "The spend limit resets on an annual cycle based on the request or fund start date.",
              "DAILY": "The spend limit resets daily.",
              "MONTHLY": "The spend limit resets monthly.",
              "QUARTERLY": "The spend limit resets every three months.",
              "TERTIARY": "The spend limit resets every four months.",
              "TOTAL": "The spend limit does not reset.",
              "WEEKLY": "The spend limit resets weekly.",
              "YEARLY": "The spend limit resets on the calendar year."
            }
          },
          "spend_start_date": {
            "default": null,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "entity_uuid",
          "line_items",
          "name",
          "ocr_detected_currency",
          "payee",
          "spend_end_date",
          "spend_frequency",
          "spend_start_date"
        ],
        "type": "object"
      },
      "ProcurementDocumentVersionSchema": {
        "properties": {
          "cloudfront_download_url": {
            "title": "Cloudfront Download Url",
            "type": "string"
          },
          "cloudfront_url": {
            "title": "Cloudfront Url",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "external_document_url": {
            "default": null,
            "nullable": true,
            "title": "External Document Url",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "is_ocr_document": {
            "title": "Is Ocr Document",
            "type": "boolean"
          },
          "original_filename": {
            "title": "Original Filename",
            "type": "string"
          },
          "version_number": {
            "title": "Version Number",
            "type": "integer"
          }
        },
        "required": [
          "cloudfront_download_url",
          "cloudfront_url",
          "created_at",
          "id",
          "is_ocr_document",
          "original_filename",
          "version_number"
        ],
        "title": "ProcurementDocumentVersionSchema",
        "type": "object"
      },
      "ProcurementFormFile": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "displayed_filename": {
            "type": "string"
          },
          "document_category": {
            "enum": [
              "ADDENDUM_OR_RIDER",
              "AMENDMENT",
              "BANK_LETTER",
              "CAIQ_LITE",
              "CERTIFICATE_OF_INSURANCE",
              "CONTRACT_OTHER",
              "DATA_PROTECTION_AGREEMENT",
              "ECOVADIS",
              "ENGAGEMENT_LETTER",
              "FAQ",
              "FORM_1099",
              "GDPR",
              "HIPAA",
              "INVOICE",
              "ISO_27001",
              "ISO_9001",
              "MSA",
              "NDA",
              "NMSDC_CERTIFICATION",
              "ORDER_FORM",
              "OTHER",
              "PAYMENT_INSTRUCTIONS",
              "PCI_DSS",
              "PEN_TEST_REPORT",
              "PRIVACY_POLICY",
              "PURCHASE_ORDER",
              "QUESTIONNAIRE",
              "QUOTE",
              "SECURITY_DOCUMENT",
              "SECURITY_EXHIBIT",
              "SIG",
              "SLA",
              "SOC_1_TYPE_1",
              "SOC_1_TYPE_2",
              "SOC_2",
              "SOW",
              "TAX_DOCUMENT",
              "TAX_DOCUMENT_INTL_COR",
              "TAX_DOCUMENT_INTL_GOV_FORM",
              "TAX_DOCUMENT_INTL_OTHER",
              "TAX_DOCUMENT_INTL_STATUTORY_FORM",
              "TOS",
              "VENDOR_CONTRACT",
              "VENDOR_CREDIT",
              "VOIDED_CHECK",
              "W8",
              "W9"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "BANK_LETTER": "A bank letter used to verify bank account details.",
              "PURCHASE_ORDER": "A buyer-issued purchase order authorizing goods or services.",
              "QUESTIONNAIRE": "A vendor questionnaire document.",
              "TAX_DOCUMENT_INTL_COR": "A certificate establishing a vendor's tax residence.",
              "TAX_DOCUMENT_INTL_GOV_FORM": "A tax form issued by a government authority.",
              "TAX_DOCUMENT_INTL_OTHER": "An international tax document not covered by a more specific category.",
              "TAX_DOCUMENT_INTL_STATUTORY_FORM": "A tax form required by local law."
            }
          },
          "download_pdf_url": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "download_url": {
            "readOnly": true,
            "type": "string"
          },
          "mime_type": {
            "enum": [
              "application/json",
              "application/msword",
              "application/pdf",
              "application/vnd.apache.parquet",
              "application/vnd.ms-excel",
              "application/vnd.ms-excel.sheet.macroEnabled.12",
              "application/vnd.ms-powerpoint",
              "application/vnd.openxmlformats-officedocument.presentationml.presentation",
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
              "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
              "image/gif",
              "image/heic",
              "image/jpeg",
              "image/png",
              "image/webp",
              "text/calendar",
              "text/csv",
              "text/markdown",
              "text/x-python"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "application/vnd.ms-powerpoint": "A Microsoft PowerPoint presentation document.",
              "application/vnd.openxmlformats-officedocument.presentationml.presentation": "A Microsoft PowerPoint Open XML presentation document.",
              "text/calendar": "An iCalendar calendar event document."
            }
          },
          "network_vendor_document_id": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "original_filename": {
            "type": "string"
          },
          "ramp_document": {
            "$ref": "#/components/schemas/ProcurementRampDocumentSchema",
            "nullable": true,
            "readOnly": true
          },
          "spend_request_document_uuid": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "url": {
            "readOnly": true,
            "type": "string"
          },
          "uuid": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "created_at",
          "displayed_filename",
          "document_category",
          "download_pdf_url",
          "download_url",
          "mime_type",
          "network_vendor_document_id",
          "original_filename",
          "ramp_document",
          "spend_request_document_uuid",
          "url",
          "uuid"
        ],
        "type": "object"
      },
      "ProcurementPayeeDetailsRequestField": {
        "description": "ProcurementPayeeDetailsRequestField is a  simplified enum\non the PayeeDetailsRequest that consolidates (ach, check, wire) into single payment details.",
        "enum": [
          "CUSTOM_FORM",
          "PAYMENT",
          "TAX"
        ],
        "title": "ProcurementPayeeDetailsRequestField",
        "type": "string"
      },
      "ProcurementRampDocumentSchema": {
        "properties": {
          "clm_signing_provider": {
            "$ref": "#/components/schemas/CLMSigningProviderInfo",
            "default": null,
            "nullable": true
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "latest_version": {
            "$ref": "#/components/schemas/ProcurementDocumentVersionSchema"
          },
          "version_count": {
            "title": "Version Count",
            "type": "integer"
          },
          "version_type": {
            "default": "PROCUREMENT",
            "enum": [
              "PROCUREMENT"
            ],
            "title": "Version Type",
            "type": "string"
          }
        },
        "required": [
          "created_at",
          "id",
          "latest_version",
          "version_count"
        ],
        "title": "ProcurementRampDocumentSchema",
        "type": "object"
      },
      "ProcurementSpendAllocationRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseProcurementRequestWithAmounts"
          },
          {
            "properties": {
              "existing_spend_request": {
                "$ref": "#/components/schemas/ReducedExistingSpendWithPurchaseOrderRequest",
                "nullable": true
              },
              "is_shareable": {
                "type": "boolean"
              },
              "lock_date": {
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "lock_display": {
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "relative_lock_duration_count": {
                "nullable": true,
                "type": "integer"
              },
              "relative_lock_duration_unit": {
                "enum": [
                  "DAYS",
                  "MONTHS",
                  "WEEKS",
                  "YEARS"
                ],
                "nullable": true,
                "type": "string"
              },
              "resulting_spend_allocation_id": {
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "spend_allocation": {
                "$ref": "#/components/schemas/ReducedSpendAllocation",
                "nullable": true
              },
              "spend_eligibility_starts_at": {
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "spend_request_type": {
                "default": "SPEND_LIMIT",
                "enum": [
                  "SPEND_LIMIT"
                ],
                "type": "string"
              },
              "unified_spend_request_type": {
                "default": "PROCUREMENT_SPEND_ALLOCATION",
                "enum": [
                  "PROCUREMENT_SPEND_ALLOCATION"
                ],
                "type": "string"
              }
            },
            "required": [
              "existing_spend_request",
              "is_shareable",
              "lock_display",
              "relative_lock_duration_count",
              "relative_lock_duration_unit",
              "resulting_spend_allocation_id",
              "spend_allocation",
              "spend_request_type",
              "unified_spend_request_type"
            ],
            "type": "object"
          }
        ]
      },
      "ProcurementSpendAllocationRequestDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CoreProcurementRequestDetail"
          },
          {
            "$ref": "#/components/schemas/ProcurementSpendAllocationRequest"
          }
        ]
      },
      "ProcurementSpendRequestAvailableActionsSchema": {
        "properties": {
          "archive": {
            "$ref": "#/components/schemas/SpendRequestActionDetailSchema"
          },
          "change_payment_method": {
            "$ref": "#/components/schemas/SpendRequestActionDetailSchema"
          },
          "edit": {
            "$ref": "#/components/schemas/SpendRequestActionDetailSchema"
          },
          "has_permission_to_edit_primary_fields": {
            "title": "Has Permission To Edit Primary Fields",
            "type": "boolean"
          },
          "has_permission_to_edit_secondary_fields": {
            "title": "Has Permission To Edit Secondary Fields",
            "type": "boolean"
          },
          "has_permission_to_manage_approval_workflow": {
            "description": "Whether the user is authorized to manage procurement approval workflows.",
            "title": "Has Permission To Manage Approval Workflow",
            "type": "boolean"
          },
          "request_changes": {
            "$ref": "#/components/schemas/SpendRequestActionDetailSchema"
          }
        },
        "required": [
          "archive",
          "change_payment_method",
          "edit",
          "has_permission_to_edit_primary_fields",
          "has_permission_to_edit_secondary_fields",
          "has_permission_to_manage_approval_workflow",
          "request_changes"
        ],
        "title": "ProcurementSpendRequestAvailableActionsSchema",
        "type": "object"
      },
      "ProcurementSpendRequestAvailableActionsV2Schema": {
        "properties": {
          "archive": {
            "$ref": "#/components/schemas/ActionDetailSchema_ArchiveDenialReason_"
          },
          "change_payment_method": {
            "$ref": "#/components/schemas/ActionDetailSchema_ChangePaymentMethodDenialReason_"
          },
          "change_vendor": {
            "$ref": "#/components/schemas/ActionDetailSchema_ChangeVendorDenialReason_",
            "description": "Whether the request's vendor can be changed."
          },
          "create_agreement_post_approval": {
            "$ref": "#/components/schemas/ActionDetailSchema_AgreementCreationPostApprovalDenialReason_"
          },
          "edit_accounting_merchant": {
            "$ref": "#/components/schemas/ActionDetailSchema_EditAccountingMerchantDenialReason_"
          },
          "edit_line_items": {
            "$ref": "#/components/schemas/ActionDetailSchema_EditLineItemsDenialReason_"
          },
          "edit_primary_fields": {
            "$ref": "#/components/schemas/ActionDetailSchema_EditPrimaryFieldsDenialReason_"
          },
          "edit_request_coordinator": {
            "$ref": "#/components/schemas/ActionDetailSchema_EditRequestCoordinatorDenialReason_"
          },
          "edit_request_owner": {
            "$ref": "#/components/schemas/ActionDetailSchema_EditRequestOwnerDenialReason_",
            "description": "Whether the request owner can be changed through normal request PATCH, not an approved purchase-order transfer."
          },
          "edit_secondary_fields": {
            "$ref": "#/components/schemas/ActionDetailSchema_EditSecondaryFieldsDenialReason_"
          },
          "issue_purchase_order_fund": {
            "$ref": "#/components/schemas/ActionDetailSchema_IssuePurchaseOrderFundDenialReason_"
          },
          "match_unmatch_transactions": {
            "$ref": "#/components/schemas/ActionDetailSchema_MatchUnmatchTransactionsDenialReason_"
          },
          "request_again": {
            "$ref": "#/components/schemas/ActionDetailSchema_RequestAgainDenialReason_"
          },
          "request_changes": {
            "$ref": "#/components/schemas/ActionDetailSchema_RequestChangesDenialReason_"
          },
          "send_pdf_to_vendor": {
            "$ref": "#/components/schemas/ActionDetailSchema_SendPdfToVendorDenialReason_"
          },
          "upload_bill": {
            "$ref": "#/components/schemas/ActionDetailSchema_UploadBillDenialReason_"
          }
        },
        "required": [
          "archive",
          "change_payment_method",
          "change_vendor",
          "create_agreement_post_approval",
          "edit_accounting_merchant",
          "edit_line_items",
          "edit_primary_fields",
          "edit_request_coordinator",
          "edit_request_owner",
          "edit_secondary_fields",
          "issue_purchase_order_fund",
          "match_unmatch_transactions",
          "request_again",
          "request_changes",
          "send_pdf_to_vendor",
          "upload_bill"
        ],
        "title": "ProcurementSpendRequestAvailableActionsV2Schema",
        "type": "object"
      },
      "ProcurementSpendRequestDocumentDump": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "document_category": {
            "enum": [
              "ADDENDUM_OR_RIDER",
              "AMENDMENT",
              "BANK_LETTER",
              "CAIQ_LITE",
              "CERTIFICATE_OF_INSURANCE",
              "CONTRACT_OTHER",
              "DATA_PROTECTION_AGREEMENT",
              "ECOVADIS",
              "ENGAGEMENT_LETTER",
              "FAQ",
              "FORM_1099",
              "GDPR",
              "HIPAA",
              "INVOICE",
              "ISO_27001",
              "ISO_9001",
              "MSA",
              "NDA",
              "NMSDC_CERTIFICATION",
              "ORDER_FORM",
              "OTHER",
              "PAYMENT_INSTRUCTIONS",
              "PCI_DSS",
              "PEN_TEST_REPORT",
              "PRIVACY_POLICY",
              "PURCHASE_ORDER",
              "QUESTIONNAIRE",
              "QUOTE",
              "SECURITY_DOCUMENT",
              "SECURITY_EXHIBIT",
              "SIG",
              "SLA",
              "SOC_1_TYPE_1",
              "SOC_1_TYPE_2",
              "SOC_2",
              "SOW",
              "TAX_DOCUMENT",
              "TAX_DOCUMENT_INTL_COR",
              "TAX_DOCUMENT_INTL_GOV_FORM",
              "TAX_DOCUMENT_INTL_OTHER",
              "TAX_DOCUMENT_INTL_STATUTORY_FORM",
              "TOS",
              "VENDOR_CONTRACT",
              "VENDOR_CREDIT",
              "VOIDED_CHECK",
              "W8",
              "W9"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "BANK_LETTER": "A bank letter used to verify bank account details.",
              "PURCHASE_ORDER": "A buyer-issued purchase order authorizing goods or services.",
              "QUESTIONNAIRE": "A vendor questionnaire document.",
              "TAX_DOCUMENT_INTL_COR": "A certificate establishing a vendor's tax residence.",
              "TAX_DOCUMENT_INTL_GOV_FORM": "A tax form issued by a government authority.",
              "TAX_DOCUMENT_INTL_OTHER": "An international tax document not covered by a more specific category.",
              "TAX_DOCUMENT_INTL_STATUTORY_FORM": "A tax form required by local law."
            }
          },
          "document_source": {
            "enum": [
              "DEVELOPER_API",
              "DOCUSIGN",
              "IRONCLAD",
              "RAMP"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "DEVELOPER_API": "Uploaded through the Ramp Developer API.",
              "DOCUSIGN": "Retrieved from a completed e-signature envelope (DocuSign or Dropbox Sign).",
              "IRONCLAD": "Retrieved from Ironclad after workflow completion.",
              "RAMP": "Uploaded through the Ramp app."
            }
          },
          "document_type": {
            "enum": [
              "PURCHASE_ORDER",
              "SPEND_REQUEST"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "PURCHASE_ORDER": "Attached to the purchase order and included in the PO PDF sent to the vendor.",
              "SPEND_REQUEST": "Supporting document on the request; not shared with the vendor."
            }
          },
          "download_pdf_url": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "external_document_url": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "filetype": {
            "enum": [
              "base64",
              "csv",
              "doc",
              "docx",
              "eml",
              "gif",
              "gz",
              "heic",
              "html",
              "ics",
              "iif",
              "jpeg",
              "json",
              "jsonl",
              "md",
              "msg",
              "npy",
              "ods",
              "parquet",
              "pdf",
              "pgp",
              "png",
              "ppt",
              "pptx",
              "py",
              "txt",
              "webp",
              "xls",
              "xlsm",
              "xlsx",
              "xml",
              "zip"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "ics": "An iCalendar calendar event file.",
              "ppt": "A Microsoft PowerPoint presentation file.",
              "pptx": "A Microsoft PowerPoint Open XML presentation file."
            }
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_ocr_document": {
            "type": "boolean"
          },
          "mime_type": {
            "enum": [
              "application/json",
              "application/msword",
              "application/pdf",
              "application/vnd.apache.parquet",
              "application/vnd.ms-excel",
              "application/vnd.ms-excel.sheet.macroEnabled.12",
              "application/vnd.ms-powerpoint",
              "application/vnd.openxmlformats-officedocument.presentationml.presentation",
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
              "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
              "image/gif",
              "image/heic",
              "image/jpeg",
              "image/png",
              "image/webp",
              "text/calendar",
              "text/csv",
              "text/markdown",
              "text/x-python"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "application/vnd.ms-powerpoint": "A Microsoft PowerPoint presentation document.",
              "application/vnd.openxmlformats-officedocument.presentationml.presentation": "A Microsoft PowerPoint Open XML presentation document.",
              "text/calendar": "An iCalendar calendar event document."
            }
          },
          "original_filename": {
            "nullable": true,
            "type": "string"
          },
          "payee_agreement_ids": {
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "procurement_document_result_response": {
            "$ref": "#/components/schemas/ProcurementDocumentResultResponse",
            "nullable": true,
            "readOnly": true
          },
          "ramp_document": {
            "$ref": "#/components/schemas/ProcurementRampDocumentSchema",
            "nullable": true,
            "readOnly": true
          },
          "spend_request_document_url": {
            "readOnly": true,
            "type": "string"
          },
          "spend_request_download_document_url": {
            "readOnly": true,
            "type": "string"
          },
          "spend_request_uuid": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "spend_request_view_document_url": {
            "readOnly": true,
            "type": "string"
          },
          "type": {
            "default": "SPEND_REQUEST_DOCUMENT"
          }
        },
        "required": [
          "created_at",
          "document_category",
          "document_source",
          "document_type",
          "download_pdf_url",
          "external_document_url",
          "filetype",
          "id",
          "is_ocr_document",
          "mime_type",
          "original_filename",
          "payee_agreement_ids",
          "procurement_document_result_response",
          "ramp_document",
          "spend_request_document_url",
          "spend_request_download_document_url",
          "spend_request_uuid",
          "spend_request_view_document_url",
          "type"
        ],
        "type": "object"
      },
      "PublicTravelLocation": {
        "properties": {
          "city": {
            "nullable": true,
            "type": "string"
          },
          "country": {
            "nullable": true,
            "type": "string"
          },
          "lat": {
            "nullable": true,
            "type": "number"
          },
          "lng": {
            "nullable": true,
            "type": "number"
          },
          "state": {
            "nullable": true,
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "trip_destination_id": {
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "PurchaseOrderAccountingLineItemTrackingCategorySelectionDump": {
        "properties": {
          "acting_user": {
            "$ref": "#/components/schemas/UserDisplay",
            "description": "User who manually set this accounting tracking category selection.",
            "nullable": true
          },
          "resolution_reason": {
            "enum": [
              "ACCRUAL_AI_SUGGESTED_CODING",
              "ACCRUAL_TRACKING_CATEGORY_DEFAULT_VALUE",
              "ADVANCED_RULE",
              "AI_AUTOCODING",
              "BILL_LINE_ITEM_TO_PO_LINE_ITEM",
              "CARD_RULE",
              "CATEGORY_RULE",
              "DEFAULT_VALUE",
              "DEPARTMENT_RULE",
              "DEVELOPER_API",
              "EMPLOYEE_AGENT",
              "ENTITY_MAPPING",
              "ERP_MIGRATION",
              "LOCATION_RULE",
              "MANUAL",
              "MAPPING_RULE",
              "MERCHANT_AUTO_RULE",
              "MERCHANT_CATEGORY_LEVEL_EMPLOYEE_RULE",
              "MERCHANT_LAST_CODED_RULE",
              "MERCHANT_LEVEL_EMPLOYEE_RULE",
              "MERCHANT_TO_CATEGORY_RULE",
              "MERCHANT_TO_MERCHANT_RULE",
              "SPEND_ALLOCATION_RULE",
              "SUBLEDGER",
              "SUGGESTED_CODING",
              "SUGGESTED_CODING_RULES_OVERRIDE",
              "SUGGESTED_CODING_UPSELL",
              "SUGGESTED_CONTEXT",
              "SUGGESTED_CONTEXT_NO_AUTOFILL",
              "SUGGESTED_MEMO",
              "TMC_INTEGRATION",
              "TRACKING_CATEGORY_DEACTIVATED",
              "TRACKING_CATEGORY_DEFAULT_VALUE",
              "TRAVELPERK_TAGGING",
              "USER_LEVEL_EMPLOYEE_RULE"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "AI_AUTOCODING": "The selection was assigned by AI purchase order autocoding.",
              "SUBLEDGER": "The selection was assigned by a Subledger workflow."
            }
          },
          "tracking_category": {
            "$ref": "#/components/schemas/TrackingCategory"
          },
          "tracking_category_id": {
            "deprecated": true,
            "type": "integer"
          },
          "tracking_category_option": {
            "$ref": "#/components/schemas/TrackingCategoryOption"
          },
          "workflow_condition_id": {
            "nullable": true,
            "type": "string"
          },
          "workflow_rule_uuid": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "resolution_reason",
          "tracking_category",
          "tracking_category_id",
          "tracking_category_option",
          "workflow_condition_id",
          "workflow_rule_uuid"
        ],
        "type": "object"
      },
      "PurchaseOrderAccountingTrackingCategorySelectionDump": {
        "properties": {
          "acting_user": {
            "$ref": "#/components/schemas/UserDisplay",
            "description": "User who manually set this accounting tracking category selection.",
            "nullable": true
          },
          "resolution_reason": {
            "enum": [
              "ACCRUAL_AI_SUGGESTED_CODING",
              "ACCRUAL_TRACKING_CATEGORY_DEFAULT_VALUE",
              "ADVANCED_RULE",
              "AI_AUTOCODING",
              "BILL_LINE_ITEM_TO_PO_LINE_ITEM",
              "CARD_RULE",
              "CATEGORY_RULE",
              "DEFAULT_VALUE",
              "DEPARTMENT_RULE",
              "DEVELOPER_API",
              "EMPLOYEE_AGENT",
              "ENTITY_MAPPING",
              "ERP_MIGRATION",
              "LOCATION_RULE",
              "MANUAL",
              "MAPPING_RULE",
              "MERCHANT_AUTO_RULE",
              "MERCHANT_CATEGORY_LEVEL_EMPLOYEE_RULE",
              "MERCHANT_LAST_CODED_RULE",
              "MERCHANT_LEVEL_EMPLOYEE_RULE",
              "MERCHANT_TO_CATEGORY_RULE",
              "MERCHANT_TO_MERCHANT_RULE",
              "SPEND_ALLOCATION_RULE",
              "SUBLEDGER",
              "SUGGESTED_CODING",
              "SUGGESTED_CODING_RULES_OVERRIDE",
              "SUGGESTED_CODING_UPSELL",
              "SUGGESTED_CONTEXT",
              "SUGGESTED_CONTEXT_NO_AUTOFILL",
              "SUGGESTED_MEMO",
              "TMC_INTEGRATION",
              "TRACKING_CATEGORY_DEACTIVATED",
              "TRACKING_CATEGORY_DEFAULT_VALUE",
              "TRAVELPERK_TAGGING",
              "USER_LEVEL_EMPLOYEE_RULE"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "AI_AUTOCODING": "The selection was assigned by AI purchase order autocoding.",
              "SUBLEDGER": "The selection was assigned by a Subledger workflow."
            }
          },
          "tracking_category": {
            "$ref": "#/components/schemas/TrackingCategory"
          },
          "tracking_category_id": {
            "deprecated": true,
            "type": "integer"
          },
          "tracking_category_option": {
            "$ref": "#/components/schemas/TrackingCategoryOption"
          },
          "workflow_condition_id": {
            "nullable": true,
            "type": "string"
          },
          "workflow_rule_uuid": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "resolution_reason",
          "tracking_category",
          "tracking_category_id",
          "tracking_category_option",
          "workflow_condition_id",
          "workflow_rule_uuid"
        ],
        "type": "object"
      },
      "PurchaseOrderAddress": {
        "properties": {
          "address1": {
            "type": "string"
          },
          "address2": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "postal_code": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "state": {
            "default": null,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "address1",
          "address2",
          "city",
          "country",
          "postal_code",
          "state"
        ],
        "type": "object"
      },
      "PurchaseOrderAttachmentsMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "PURCHASE_ORDER__ATTACHMENTS"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PurchaseOrderAttachmentsMappedFieldSchema",
        "type": "object"
      },
      "PurchaseOrderAutocodingSuggestion": {
        "properties": {
          "meta_data": {
            "$ref": "#/components/schemas/PurchaseOrderAutocodingSuggestionMetadata",
            "description": "Attribution metadata for the suggestion."
          },
          "tracking_category_id": {
            "description": "Tracking category to populate.",
            "title": "Tracking Category Id",
            "type": "integer"
          },
          "tracking_category_option_id": {
            "description": "Suggested option, or null when no option was resolved.",
            "nullable": true,
            "title": "Tracking Category Option Id",
            "type": "integer"
          }
        },
        "required": [
          "meta_data",
          "tracking_category_id",
          "tracking_category_option_id"
        ],
        "title": "PurchaseOrderAutocodingSuggestion",
        "type": "object"
      },
      "PurchaseOrderAutocodingSuggestionMetadata": {
        "properties": {
          "reason": {
            "description": "Reason for the suggestion.",
            "nullable": true,
            "title": "Reason",
            "type": "string"
          },
          "workflow_condition_id": {
            "description": "Workflow condition that produced the suggestion, if any.",
            "nullable": true,
            "title": "Workflow Condition Id",
            "type": "string"
          },
          "workflow_rule_uuid": {
            "description": "Workflow rule that produced the suggestion, if any.",
            "nullable": true,
            "title": "Workflow Rule Uuid",
            "type": "string"
          }
        },
        "title": "PurchaseOrderAutocodingSuggestionMetadata",
        "type": "object"
      },
      "PurchaseOrderAutocodingSuggestionsResponseSchema": {
        "properties": {
          "autocoding_run_id": {
            "default": null,
            "description": "Persisted Intake OCR preview run that produced these suggestions.",
            "format": "uuid",
            "nullable": true,
            "title": "Autocoding Run Id",
            "type": "string"
          },
          "line_item_tracking_category_suggestions": {
            "additionalProperties": {
              "items": {
                "$ref": "#/components/schemas/PurchaseOrderAutocodingSuggestion"
              },
              "type": "array"
            },
            "description": "Accounting suggestions keyed by zero-based line item index.",
            "title": "Line Item Tracking Category Suggestions",
            "type": "object"
          },
          "tracking_category_suggestions": {
            "description": "Accounting suggestions for purchase order body fields.",
            "items": {
              "$ref": "#/components/schemas/PurchaseOrderAutocodingSuggestion"
            },
            "title": "Tracking Category Suggestions",
            "type": "array"
          }
        },
        "title": "PurchaseOrderAutocodingSuggestionsResponseSchema",
        "type": "object"
      },
      "PurchaseOrderBillToAddressMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "PURCHASE_ORDER__BILL_TO_ADDRESS"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PurchaseOrderBillToAddressMappedFieldSchema",
        "type": "object"
      },
      "PurchaseOrderBillingContactMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "PURCHASE_ORDER__BILLING_CONTACT"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PurchaseOrderBillingContactMappedFieldSchema",
        "type": "object"
      },
      "PurchaseOrderConfigSnapshot": {
        "description": "Snapshot of PO-specific config at SpendRequest creation time.",
        "properties": {
          "line_item_custom_field_configs": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/POLineItemCustomFieldConfigSnapshot"
            },
            "title": "Line Item Custom Field Configs",
            "type": "array"
          },
          "required_line_item_tracking_category_ids": {
            "description": "Required line-item tracking category IDs at request creation",
            "items": {
              "type": "integer"
            },
            "title": "Required Line Item Tracking Category Ids",
            "type": "array"
          }
        },
        "title": "PurchaseOrderConfigSnapshot",
        "type": "object"
      },
      "PurchaseOrderCustomFieldMappedFieldSchema": {
        "properties": {
          "mapped_custom_column_id": {
            "description": "Identifier of the mapped purchase order custom field column.",
            "title": "Mapped Custom Column Id",
            "type": "string"
          },
          "mapped_field": {
            "description": "Maps the form field to a purchase order custom field.",
            "enum": [
              "PURCHASE_ORDER__CUSTOM_FIELD"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_custom_column_id",
          "mapped_field"
        ],
        "title": "PurchaseOrderCustomFieldMappedFieldSchema",
        "type": "object"
      },
      "PurchaseOrderForProcurementRequestDetail": {
        "properties": {
          "accounting_tracking_category_selections": {
            "items": {
              "$ref": "#/components/schemas/PurchaseOrderAccountingTrackingCategorySelectionDump"
            },
            "readOnly": true,
            "type": "array"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_directly_issued": {
            "description": "True when the PO was issued directly, without a program or request approval.",
            "type": "boolean"
          },
          "is_linked_to_bills_or_provisional_bills": {
            "description": "Whether linked bills or unattached provisional bills prevent changing the purchase order's entity.",
            "readOnly": true,
            "type": "boolean"
          },
          "punchout_order_id": {
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "purchase_order_fund_uuid": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "purchase_order_line_item_log_entries": {
            "items": {
              "$ref": "#/components/schemas/PurchaseOrderLineItemLogEntryForProcurementRequestDetail"
            },
            "readOnly": true,
            "type": "array"
          },
          "purchase_order_number": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "should_create_fund_on_approval": {
            "type": "boolean"
          },
          "tax_lines": {
            "description": "Tax amounts aggregated by tax rate for the purchase order.",
            "items": {
              "$ref": "#/components/schemas/PurchaseOrderTaxAmountResponseSchema"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "required": [
          "accounting_tracking_category_selections",
          "id",
          "is_directly_issued",
          "is_linked_to_bills_or_provisional_bills",
          "punchout_order_id",
          "purchase_order_fund_uuid",
          "purchase_order_line_item_log_entries",
          "purchase_order_number",
          "should_create_fund_on_approval",
          "tax_lines"
        ],
        "type": "object"
      },
      "PurchaseOrderLineItemLogEntryForProcurementRequestDetail": {
        "properties": {
          "accounting_tracking_category_selections": {
            "items": {
              "$ref": "#/components/schemas/PurchaseOrderAccountingLineItemTrackingCategorySelectionDump"
            },
            "readOnly": true,
            "type": "array"
          },
          "amount": {
            "type": "number"
          },
          "custom_field_values": {
            "items": {
              "$ref": "#/components/schemas/LineItemCustomFieldValueWithArchiveStatus"
            },
            "readOnly": true,
            "type": "array"
          },
          "description": {
            "nullable": true,
            "type": "string"
          },
          "due_date": {
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "end_date": {
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "existing_purchase_order_line_item_uuid": {
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "line_item_type": {
            "enum": [
              "EXPENSE",
              "ITEM"
            ],
            "type": "string"
          },
          "quantity": {
            "nullable": true,
            "type": "number"
          },
          "receiving_type": {
            "description": "How the line is received: by quantity or by amount.",
            "enum": [
              "by_amount",
              "by_quantity"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "by_amount": "Received and matched by monetary amount against the line total.",
              "by_quantity": "Received and matched by quantity at the line's unit price."
            }
          },
          "start_date": {
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "tax_amounts": {
            "description": "Tax amounts applied to this purchase order line item.",
            "items": {
              "$ref": "#/components/schemas/PurchaseOrderTaxAmountResponseSchema"
            },
            "readOnly": true,
            "type": "array"
          },
          "total_amount": {
            "type": "number"
          },
          "unit_price": {
            "nullable": true,
            "type": "number"
          },
          "unit_quantity": {
            "description": "Deprecated: read from quantity field instead",
            "nullable": true,
            "readOnly": true,
            "type": "number"
          },
          "uuid": {
            "readOnly": true,
            "type": "string"
          },
          "withholding_rate": {
            "description": "Retainage withholding rate for the line item",
            "format": "decimal",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "accounting_tracking_category_selections",
          "amount",
          "custom_field_values",
          "description",
          "due_date",
          "end_date",
          "existing_purchase_order_line_item_uuid",
          "id",
          "line_item_type",
          "quantity",
          "start_date",
          "tax_amounts",
          "total_amount",
          "unit_price",
          "unit_quantity",
          "uuid"
        ],
        "type": "object"
      },
      "PurchaseOrderMemoMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "PURCHASE_ORDER__MEMO"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PurchaseOrderMemoMappedFieldSchema",
        "type": "object"
      },
      "PurchaseOrderNetPaymentTermsMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "PURCHASE_ORDER__NET_PAYMENT_TERMS"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PurchaseOrderNetPaymentTermsMappedFieldSchema",
        "type": "object"
      },
      "PurchaseOrderPayeeAddressMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "PURCHASE_ORDER__PAYEE_ADDRESS"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PurchaseOrderPayeeAddressMappedFieldSchema",
        "type": "object"
      },
      "PurchaseOrderPayeeContactMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "PURCHASE_ORDER__PAYEE_CONTACT"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PurchaseOrderPayeeContactMappedFieldSchema",
        "type": "object"
      },
      "PurchaseOrderPromiseDateMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "PURCHASE_ORDER__PROMISE_DATE"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PurchaseOrderPromiseDateMappedFieldSchema",
        "type": "object"
      },
      "PurchaseOrderRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseProcurementRequestWithAmounts"
          },
          {
            "properties": {
              "existing_spend_request": {
                "$ref": "#/components/schemas/ReducedExistingSpendWithPurchaseOrderRequest",
                "nullable": true
              },
              "purchase_order": {
                "$ref": "#/components/schemas/ReducedPurchaseOrderForProcurementRequest"
              },
              "spend_request_type": {
                "default": "PURCHASE_ORDER",
                "enum": [
                  "PURCHASE_ORDER"
                ],
                "type": "string"
              },
              "unified_spend_request_type": {
                "default": "PURCHASE_ORDER",
                "enum": [
                  "PURCHASE_ORDER"
                ],
                "type": "string"
              }
            },
            "required": [
              "existing_spend_request",
              "purchase_order",
              "spend_request_type",
              "unified_spend_request_type"
            ],
            "type": "object"
          }
        ]
      },
      "PurchaseOrderRequestDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CoreProcurementRequestDetail"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderRequest"
          }
        ]
      },
      "PurchaseOrderShipToAddressMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "PURCHASE_ORDER__SHIP_TO_ADDRESS"
            ],
            "title": "Mapped Field",
            "type": "string"
          },
          "restrict_to_allowed_values": {
            "default": false,
            "title": "Restrict To Allowed Values",
            "type": "boolean"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PurchaseOrderShipToAddressMappedFieldSchema",
        "type": "object"
      },
      "PurchaseOrderShippingContactMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "PURCHASE_ORDER__SHIPPING_CONTACT"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "PurchaseOrderShippingContactMappedFieldSchema",
        "type": "object"
      },
      "PurchaseOrderTaxAmountResponseSchema": {
        "properties": {
          "amount": {
            "description": "Tax amount in the purchase order currency.",
            "title": "Amount",
            "type": "number"
          },
          "name": {
            "description": "Name of the accounting tax rate.",
            "title": "Name",
            "type": "string"
          },
          "rate": {
            "description": "Accounting tax rate as a decimal fraction.",
            "title": "Rate",
            "type": "string"
          },
          "tax_rate_uuid": {
            "description": "UUID of the accounting tax rate.",
            "format": "uuid",
            "title": "Tax Rate Uuid",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "name",
          "rate",
          "tax_rate_uuid"
        ],
        "title": "PurchaseOrderTaxAmountResponseSchema",
        "type": "object"
      },
      "PutCustomRowRequestBody": {
        "example": {
          "data": [
            {
              "cells": [
                {
                  "contents": "United States",
                  "name": "country"
                },
                {
                  "contents": {
                    "column_name": "email",
                    "value": "<existing_ramp_user_email>"
                  },
                  "name": "regional_director"
                }
              ],
              "external_key": "Southwest"
            },
            {
              "cells": [
                {
                  "contents": "United States",
                  "name": "country"
                },
                {
                  "contents": {
                    "column_name": "email",
                    "value": "<existing_ramp_user_email>"
                  },
                  "name": "regional_directors"
                },
                {
                  "contents": {
                    "column_name": "id",
                    "value": "<existing_ramp_user_uuid>"
                  },
                  "name": "regional_directors"
                }
              ],
              "external_key": "Northeast"
            }
          ]
        },
        "properties": {
          "data": {
            "description": "List of rows to insert or update. All entries must have the same set of column names, with `null` provided to indicate that a value should not be set.",
            "items": {
              "$ref": "#/components/schemas/CustomRowColumnContentsByColumnNameRequestBody"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "PutCustomRow",
        "type": "object"
      },
      "PutCustomRowResponse": {
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/NumInsertedNumUpdated"
          }
        },
        "required": [
          "metadata"
        ],
        "title": "PutCustomRowResponse",
        "type": "object"
      },
      "PutMatrixRowsByNameRequestRequestBody": {
        "description": "Request for upserting Matrix rows.",
        "example": {
          "data": [
            {
              "inputs": [
                {
                  "column_name": "department",
                  "identifier": {
                    "column_name": "id",
                    "value": "<UUID>"
                  }
                }
              ],
              "results": [
                {
                  "column_name": "approver",
                  "identifier": {
                    "column_name": "id",
                    "value": "<UUID>"
                  }
                }
              ]
            }
          ]
        },
        "properties": {
          "data": {
            "description": "Rows to upsert",
            "items": {
              "$ref": "#/components/schemas/MatrixRowInputByNameRequestBody"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "PutMatrixRowsByNameRequest",
        "type": "object"
      },
      "PutMatrixRowsByNameResponse": {
        "description": "Response for upserting Matrix rows.",
        "example": {
          "metadata": {
            "inserted": 1,
            "updated": 0
          }
        },
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/MatrixPutMetadata",
            "description": "Insert/update counts"
          }
        },
        "required": [
          "metadata"
        ],
        "title": "PutMatrixRowsByNameResponse",
        "type": "object"
      },
      "PutNativeRowRequestBody": {
        "example": {
          "data": [
            {
              "cells": [
                {
                  "contents": "California",
                  "name": "home_state"
                },
                {
                  "contents": {
                    "column_name": "email",
                    "value": "<another_existing_ramp_user_email>"
                  },
                  "name": "budget_managers"
                },
                {
                  "contents": {
                    "column_name": "email",
                    "value": "<existing_ramp_user_email>"
                  },
                  "name": "budget_managers"
                }
              ],
              "row": {
                "column_name": "email",
                "value": "<existing_ramp_user_email>"
              }
            },
            {
              "cells": [
                {
                  "contents": "New York",
                  "name": "home_state"
                },
                {
                  "contents": null,
                  "name": "budget_managers"
                }
              ],
              "row": {
                "column_name": "id",
                "value": "<existing_ramp_user_uuid>"
              }
            }
          ]
        },
        "properties": {
          "data": {
            "description": "List of rows to insert or update. All entries must have the same set of column names, with `null` provided to indicate that a value should not be set.",
            "items": {
              "$ref": "#/components/schemas/NativeRowColumnContentsByColumnNameRequestBody"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "PutNativeRow",
        "type": "object"
      },
      "PydanticCardinalityEnum": {
        "description": "Cardinality enum for Pydantic schemas with lowercase values.\n\nThis enum uses lowercase values for API consistency while mapping\nto the internal CardinalityEnum.",
        "enum": [
          "many_to_many",
          "many_to_one"
        ],
        "title": "PydanticCardinalityEnum",
        "type": "string"
      },
      "PydanticCardinalityEnumRequestBody": {
        "description": "Cardinality enum for Pydantic schemas with lowercase values.\n\nThis enum uses lowercase values for API consistency while mapping\nto the internal CardinalityEnum.",
        "enum": [
          "many_to_many",
          "many_to_one"
        ],
        "title": "PydanticCardinalityEnum",
        "type": "string"
      },
      "QuestionFieldMappingReference": {
        "properties": {
          "approval_trigger_metadata_uuid": {
            "description": "UUID of the approval-step metadata that owns the field mapping.",
            "title": "Approval Trigger Metadata Uuid",
            "type": "string"
          },
          "node_id": {
            "default": null,
            "description": "Consuming node in a current or draft workflow, or null when none exists.",
            "nullable": true,
            "title": "Node Id",
            "type": "string"
          },
          "remote_system": {
            "$ref": "#/components/schemas/RemoteSystemType",
            "description": "Integration provider that consumes the mapped question."
          }
        },
        "required": [
          "approval_trigger_metadata_uuid",
          "remote_system"
        ],
        "title": "QuestionFieldMappingReference",
        "type": "object"
      },
      "RFXForProcurementRequestDetail": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "RampDocumentSchema": {
        "description": "Public-facing dump of a RampDocument container plus its latest version.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "latest_version": {
            "$ref": "#/components/schemas/RampDocumentVersionSchema"
          },
          "version_count": {
            "title": "Version Count",
            "type": "integer"
          },
          "version_type": {
            "$ref": "#/components/schemas/RampDocumentVersionType"
          }
        },
        "required": [
          "created_at",
          "id",
          "latest_version",
          "version_count",
          "version_type"
        ],
        "title": "RampDocumentSchema",
        "type": "object"
      },
      "RampDocumentVersionSchema": {
        "description": "Base fields for any ramp document version.",
        "properties": {
          "cloudfront_download_url": {
            "title": "Cloudfront Download Url",
            "type": "string"
          },
          "cloudfront_url": {
            "title": "Cloudfront Url",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "original_filename": {
            "title": "Original Filename",
            "type": "string"
          },
          "version_number": {
            "title": "Version Number",
            "type": "integer"
          }
        },
        "required": [
          "cloudfront_download_url",
          "cloudfront_url",
          "created_at",
          "id",
          "original_filename",
          "version_number"
        ],
        "title": "RampDocumentVersionSchema",
        "type": "object"
      },
      "RampDocumentVersionType": {
        "enum": [
          "GENERIC",
          "PAYEE",
          "PROCUREMENT",
          "TAX_EXEMPTION_CERTIFICATE",
          "WBX"
        ],
        "title": "RampDocumentVersionType",
        "type": "string",
        "x-enum-descriptions": {
          "PAYEE": "Payee document version",
          "TAX_EXEMPTION_CERTIFICATE": "Sales-tax exemption certificate document version"
        }
      },
      "RampFieldOption": {
        "example": {
          "code": "400-100",
          "display_name": "Salaries & Wages",
          "id": "514",
          "value": "Employees:Salaries & Wages"
        },
        "properties": {
          "code": {
            "description": "Code of the custom accounting field option; e.g. 400-100.",
            "type": "string"
          },
          "display_name": {
            "description": "Set an optional user-facing display name of the custom field option.",
            "type": "string"
          },
          "id": {
            "description": "Remote/external ID of custom accounting field option from ERP system.",
            "type": "string"
          },
          "value": {
            "description": "e.g. Employees:Salaries & Wages",
            "type": "string"
          }
        },
        "required": [
          "id",
          "value"
        ],
        "type": "object"
      },
      "Receipt": {
        "example": {
          "created_at": "2022-08-20T20:33:46+00:00",
          "id": "0a0ed428-0250-4993-96ad-94cd77bc86b6",
          "receipt_url": "https://receipts.ramp.com/sales_demo_instance/amazon_business_receipt.png?Expires=1661130671",
          "reimbursement_id": "5f1ad288-d361-4027-9dd0-842f2df49272",
          "transaction_id": "065916d9-7bdf-4aae-a46a-9b82225f2a20",
          "user_id": "ea0d554a-78bb-4402-a3e9-2d4bc138502f"
        },
        "properties": {
          "created_at": {
            "description": "Timestamp when the receipt was created.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier for the receipt.",
            "format": "uuid",
            "type": "string"
          },
          "ocr": {
            "$ref": "#/components/schemas/ApiReceiptOcr",
            "description": "Structured data extracted from receipt OCR.",
            "nullable": true,
            "readOnly": true
          },
          "receipt_url": {
            "description": "Pre-signed URL to download receipt image (valid for 1 hour by default).",
            "readOnly": true,
            "type": "string"
          },
          "reimbursement_id": {
            "description": "Reimbursement associated with this receipt.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "reimbursements",
              "type": "many-to-one"
            }
          },
          "transaction_id": {
            "description": "Transaction associated with this receipt.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "transactions",
              "type": "many-to-one"
            }
          },
          "user_id": {
            "description": "User who uploaded the receipt.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "receipt_url"
        ],
        "type": "object",
        "x-resource-name": "receipts"
      },
      "ReceivingType": {
        "description": "How a purchase order line is received and matched: by quantity or by amount.",
        "enum": [
          "by_amount",
          "by_quantity"
        ],
        "title": "ReceivingType",
        "type": "string",
        "x-enum-descriptions": {
          "by_amount": "Received and matched by monetary amount against the line total.",
          "by_quantity": "Received and matched by quantity at the line's unit price."
        }
      },
      "RecipientType": {
        "enum": [
          "carbonCopy",
          "signer"
        ],
        "title": "RecipientType",
        "type": "string"
      },
      "ReducedBillPayVendor": {
        "properties": {
          "uuid": {
            "format": "uuid",
            "type": "string"
          },
          "vendor_tracking_category_option_id": {
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "uuid",
          "vendor_tracking_category_option_id"
        ],
        "type": "object"
      },
      "ReducedBillPayVendorPydanticSchema": {
        "properties": {
          "uuid": {
            "title": "Uuid",
            "type": "string"
          },
          "vendor_tracking_category_option_id": {
            "nullable": true,
            "title": "Vendor Tracking Category Option Id",
            "type": "integer"
          }
        },
        "required": [
          "uuid",
          "vendor_tracking_category_option_id"
        ],
        "title": "ReducedBillPayVendorPydanticSchema",
        "type": "object"
      },
      "ReducedExistingSpendWithAmountRequest": {
        "properties": {
          "amount_details": {
            "$ref": "#/components/schemas/Money",
            "readOnly": true
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_shareable": {
            "type": "boolean"
          },
          "lock_date": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "post_spend_approval_instance_policy": {
            "$ref": "#/components/schemas/ApprovalPolicyLightSchema",
            "nullable": true,
            "readOnly": true
          },
          "spend_eligibility_starts_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "spend_frequency": {
            "$ref": "#/components/schemas/SpendRequestFrequency",
            "nullable": true
          },
          "unified_request_id": {
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "unified_spend_request_type": {
            "enum": [
              "APPROVAL_ONLY",
              "FUND_UNARCHIVE",
              "PROCUREMENT_SPEND_ALLOCATION",
              "PURCHASE_ORDER",
              "SPEND_ALLOCATION",
              "TRAVEL"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "FUND_UNARCHIVE": "A request to restore an existing archived fund without issuing or changing funding."
            }
          }
        },
        "required": [
          "post_spend_approval_instance_policy",
          "unified_request_id",
          "unified_spend_request_type"
        ],
        "type": "object"
      },
      "ReducedExistingSpendWithPurchaseOrderRequest": {
        "properties": {
          "amount_details": {
            "$ref": "#/components/schemas/Money",
            "readOnly": true
          },
          "custom_form_collection_response_uuid": {
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_shareable": {
            "type": "boolean"
          },
          "lock_date": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "post_spend_approval_instance_policy": {
            "$ref": "#/components/schemas/ApprovalPolicyLightSchema",
            "nullable": true,
            "readOnly": true
          },
          "purchase_order": {
            "$ref": "#/components/schemas/ReducedPurchaseOrderForProcurementRequest",
            "nullable": true
          },
          "spend_eligibility_starts_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "spend_frequency": {
            "$ref": "#/components/schemas/SpendRequestFrequency",
            "nullable": true
          },
          "unified_request_id": {
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "unified_spend_request_type": {
            "enum": [
              "APPROVAL_ONLY",
              "FUND_UNARCHIVE",
              "PROCUREMENT_SPEND_ALLOCATION",
              "PURCHASE_ORDER",
              "SPEND_ALLOCATION",
              "TRAVEL"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "FUND_UNARCHIVE": "A request to restore an existing archived fund without issuing or changing funding."
            }
          }
        },
        "required": [
          "post_spend_approval_instance_policy",
          "purchase_order",
          "unified_request_id",
          "unified_spend_request_type"
        ],
        "type": "object"
      },
      "ReducedGlobalFormResponseBlankCanvasUserAssignmentMapping": {
        "properties": {
          "custom_form_collection_response_id": {
            "nullable": true,
            "title": "Custom Form Collection Response Id",
            "type": "integer"
          },
          "global_form_response_mapping_uuid": {
            "title": "Global Form Response Mapping Uuid",
            "type": "string"
          },
          "user_uuid": {
            "title": "User Uuid",
            "type": "string"
          }
        },
        "required": [
          "custom_form_collection_response_id",
          "global_form_response_mapping_uuid",
          "user_uuid"
        ],
        "title": "ReducedGlobalFormResponseBlankCanvasUserAssignmentMapping",
        "type": "object"
      },
      "ReducedGroupTrip": {
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "ReducedPayee": {
        "properties": {
          "approval_instance_uuid": {
            "nullable": true,
            "type": "string"
          },
          "approval_status": {
            "enum": [
              "APPROVED",
              "PENDING",
              "REJECTED"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "APPROVED": "The vendor has been approved.",
              "PENDING": "The vendor is awaiting approval.",
              "REJECTED": "The vendor has been rejected."
            }
          },
          "available_actions": {
            "$ref": "#/components/schemas/ReducedPayeeAvailableActions",
            "readOnly": true
          },
          "business_vendor": {
            "$ref": "#/components/schemas/ReducedBillPayVendor",
            "nullable": true
          },
          "card_merchants": {
            "items": {
              "$ref": "#/components/schemas/ReducedPayeeMerchant"
            },
            "readOnly": true,
            "type": "array"
          },
          "creation_source": {
            "description": "How the vendor was created.",
            "enum": [
              "AGENT",
              "AP_INTAKE_COWORKER_AGENT",
              "ASK_RAMP",
              "BULK_IMPORT",
              "CARD_MERCHANT",
              "DEVELOPER_API",
              "ERP_IMPORT",
              "MANUAL",
              "MANUAL_PAYEE_EDIT",
              "PROCUREMENT_SPEND_REQUEST"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "AGENT": "Created by a Ramp agent.",
              "AP_INTAKE_COWORKER_AGENT": "Created by the AP intake agent.",
              "ASK_RAMP": "Created by Ask Ramp.",
              "BULK_IMPORT": "Created through a bulk upload.",
              "CARD_MERCHANT": "Created from a card transaction merchant.",
              "DEVELOPER_API": "Created through the Developer API.",
              "ERP_IMPORT": "Imported from an accounting provider.",
              "MANUAL": "Created manually in Ramp.",
              "MANUAL_PAYEE_EDIT": "Created from a manual vendor edit.",
              "PROCUREMENT_SPEND_REQUEST": "Created from a procurement request."
            }
          },
          "dba_name": {
            "nullable": true,
            "type": "string"
          },
          "deleted_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "image_url": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "is_draft": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "owners": {
            "items": {
              "$ref": "#/components/schemas/PayeeOwner"
            },
            "type": "array"
          },
          "uuid": {
            "format": "uuid",
            "type": "string"
          },
          "website": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "approval_instance_uuid",
          "approval_status",
          "available_actions",
          "business_vendor",
          "card_merchants",
          "creation_source",
          "dba_name",
          "deleted_at",
          "image_url",
          "is_draft",
          "name",
          "owners",
          "uuid",
          "website"
        ],
        "type": "object"
      },
      "ReducedPayeeAgreementForUnifiedRequestPaginationSchema": {
        "description": "A reduced schema for PayeeAgreement used in unified request pagination.\n\nContains only the essential fields needed to display agreement information\nin the context of a unified request pagination response.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "source": {
            "$ref": "#/components/schemas/PayeeAgreementSpendRequestMappingSource"
          },
          "status": {
            "$ref": "#/components/schemas/PayeeAgreementSpendRequestMappingStatus"
          }
        },
        "required": [
          "id",
          "source",
          "status"
        ],
        "title": "ReducedPayeeAgreementForUnifiedRequestPaginationSchema",
        "type": "object"
      },
      "ReducedPayeeAvailableActions": {
        "properties": {
          "can_edit": {
            "type": "boolean"
          },
          "can_view": {
            "type": "boolean"
          }
        },
        "required": [
          "can_edit",
          "can_view"
        ],
        "type": "object"
      },
      "ReducedPayeeAvailableActionsPydanticSchema": {
        "properties": {
          "can_edit": {
            "title": "Can Edit",
            "type": "boolean"
          },
          "can_view": {
            "title": "Can View",
            "type": "boolean"
          }
        },
        "required": [
          "can_edit",
          "can_view"
        ],
        "title": "ReducedPayeeAvailableActionsPydanticSchema",
        "type": "object"
      },
      "ReducedPayeeMerchant": {
        "properties": {
          "merchant_name": {
            "type": "string"
          },
          "uuid": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "merchant_name",
          "uuid"
        ],
        "type": "object"
      },
      "ReducedPayeeMerchantPydanticSchema": {
        "properties": {
          "merchant_name": {
            "title": "Merchant Name",
            "type": "string"
          },
          "uuid": {
            "title": "Uuid",
            "type": "string"
          }
        },
        "required": [
          "merchant_name",
          "uuid"
        ],
        "title": "ReducedPayeeMerchantPydanticSchema",
        "type": "object"
      },
      "ReducedPayeePydanticSchema": {
        "properties": {
          "approval_instance_uuid": {
            "nullable": true,
            "title": "Approval Instance Uuid",
            "type": "string"
          },
          "approval_status": {
            "$ref": "#/components/schemas/PayeeApprovalStatus"
          },
          "available_actions": {
            "$ref": "#/components/schemas/ReducedPayeeAvailableActionsPydanticSchema"
          },
          "business_vendor": {
            "$ref": "#/components/schemas/ReducedBillPayVendorPydanticSchema",
            "nullable": true
          },
          "card_merchants": {
            "items": {
              "$ref": "#/components/schemas/ReducedPayeeMerchantPydanticSchema"
            },
            "title": "Card Merchants",
            "type": "array"
          },
          "dba_name": {
            "nullable": true,
            "title": "Dba Name",
            "type": "string"
          },
          "deleted_at": {
            "format": "date-time",
            "nullable": true,
            "title": "Deleted At",
            "type": "string"
          },
          "image_url": {
            "nullable": true,
            "title": "Image Url",
            "type": "string"
          },
          "is_draft": {
            "title": "Is Draft",
            "type": "boolean"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "owners": {
            "items": {
              "$ref": "#/components/schemas/PayeeOwnerPydanticSchema"
            },
            "title": "Owners",
            "type": "array"
          },
          "uuid": {
            "title": "Uuid",
            "type": "string"
          },
          "website": {
            "nullable": true,
            "title": "Website",
            "type": "string"
          }
        },
        "required": [
          "approval_instance_uuid",
          "approval_status",
          "available_actions",
          "business_vendor",
          "card_merchants",
          "dba_name",
          "deleted_at",
          "image_url",
          "is_draft",
          "name",
          "owners",
          "uuid",
          "website"
        ],
        "title": "ReducedPayeePydanticSchema",
        "type": "object"
      },
      "ReducedPendingChangeRequest": {
        "properties": {
          "submitted_at": {
            "format": "date-time",
            "type": "string"
          },
          "uuid": {
            "type": "string"
          }
        },
        "required": [
          "submitted_at",
          "uuid"
        ],
        "type": "object"
      },
      "ReducedPurchaseOrderForProcurementRequest": {
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "is_directly_issued": {
            "description": "True when the PO was issued directly, without a program or request approval.",
            "type": "boolean"
          },
          "purchase_order_number": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "id",
          "is_directly_issued",
          "purchase_order_number"
        ],
        "type": "object"
      },
      "ReducedSpendAllocation": {
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "payment_restrictions": {
            "$ref": "#/components/schemas/PaymentRestrictions",
            "readOnly": true
          },
          "submission_policy": {
            "$ref": "#/components/schemas/PolicyLight",
            "nullable": true
          }
        },
        "required": [
          "id",
          "payment_restrictions"
        ],
        "type": "object"
      },
      "ReducedSpendIntentForBaseUnifiedSpendRequest": {
        "properties": {
          "logo_id": {
            "enum": [
              "AccountingServicesIcon",
              "AdvertisingIcon",
              "CONTRACTORS_AND_PROFESSIONAL_SERVICES",
              "CUSTOM",
              "CardIcon",
              "EducationStipendIcon",
              "EmployeeRewardsIcon",
              "GroundTransportationIcon",
              "LegalFeesIcon",
              "LodgingIcon",
              "LunchOrderingIcon",
              "OnboardingIcon",
              "PerDiemCardIcon",
              "SOFTWARE",
              "SaasSubscriptionIcon",
              "SoftwareTrialIcon",
              "SuppliesIcon",
              "TeamSocialIcon",
              "TravelExpensesIcon",
              "VirtualEventIcon",
              "WellnessIcon",
              "WorkFromHomeIcon",
              "advertising",
              "airlines",
              "bills",
              "business",
              "car_services",
              "contractor",
              "education",
              "entertainment",
              "event_balloons",
              "event_virtual",
              "food",
              "fuel_and_gas",
              "general_expense",
              "general_merchandise",
              "gift",
              "government_services",
              "internet_and_phone",
              "legal",
              "lodging",
              "lodging_room",
              "newspaper",
              "office",
              "physical_card",
              "procurement_checklist",
              "procurement_intake",
              "professional_services",
              "restaurants",
              "reward",
              "saas_software",
              "shipping",
              "travel_misc",
              "wellness"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "uuid": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "logo_id",
          "name",
          "uuid"
        ],
        "type": "object"
      },
      "ReducedTrip": {
        "properties": {
          "id": {
            "type": "string"
          },
          "trip_name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "trip_name"
        ],
        "type": "object"
      },
      "ReducedUserForBaseUnifiedRequest": {
        "properties": {
          "deleted_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "department": {
            "$ref": "#/components/schemas/DepartmentDisplay",
            "nullable": true
          },
          "email": {
            "type": "string"
          },
          "first_name": {
            "type": "string"
          },
          "full_name": {
            "type": "string"
          },
          "has_physical_card": {
            "readOnly": true,
            "type": "boolean"
          },
          "last_name": {
            "type": "string"
          },
          "location": {
            "$ref": "#/components/schemas/LocationDisplay",
            "nullable": true
          },
          "profile_picture_url": {
            "nullable": true,
            "type": "string"
          },
          "role": {
            "enum": [
              "AUDITOR",
              "BUSINESS_ADMIN",
              "BUSINESS_BOOKKEEPER",
              "BUSINESS_OWNER",
              "BUSINESS_USER",
              "GUEST_USER",
              "IT_ADMIN",
              "UNBUNDLED_ADMIN",
              "UNBUNDLED_BOOKKEEPER",
              "UNBUNDLED_OWNER",
              "UNBUNDLED_USER"
            ],
            "type": "string"
          },
          "uuid": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "deleted_at",
          "department",
          "email",
          "first_name",
          "full_name",
          "has_physical_card",
          "last_name",
          "location",
          "profile_picture_url",
          "role",
          "uuid"
        ],
        "type": "object"
      },
      "Reimbursement": {
        "example": {
          "accounting_field_selections": [
            {
              "category_info": {
                "external_id": "Category",
                "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                "name": "Category",
                "type": "GL_ACCOUNT"
              },
              "display_name": "Ramp Category",
              "external_id": "Category",
              "id": "07b4ce4d-2750-412e-aef4-6b7815f1411c",
              "name": "Category",
              "type": "GL_ACCOUNT"
            }
          ],
          "attendees": [
            {
              "name": "Jack Johnson",
              "user_id": null
            },
            {
              "name": "Joe Johnson",
              "user_id": "7979392e-8d41-4f97-815b-ccd7584802bf"
            }
          ],
          "created_at": "2023-08-20T:00:00+00:00",
          "direction": "BUSINESS_TO_USER",
          "distance": 55,
          "end_location": "456 Business Ave, Philadelphia, PA 19103",
          "entity_amount": {
            "currency": "USD",
            "minor_unit_conversion_rate": 100,
            "value": 48446
          },
          "entity_id": "4bec9dc1-710e-4781-b254-fc606c76a241",
          "expense_group": {
            "id": "4bec9dc1-710e-4781-b254-fc606c76a241",
            "name": "New York offsite - Feb"
          },
          "fund_id": "92a68991-8374-4c0a-b5c0-5180c41b5148",
          "id": "d47ba06e-14ac-4a7b-89b4-4775412ba545",
          "line_items": [
            {
              "accounting_field_selections": [
                {
                  "category_info": {
                    "external_id": "Category",
                    "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                    "name": "Category",
                    "type": "GL_ACCOUNT"
                  },
                  "display_name": "Ramp BV - EMEA",
                  "external_id": "426",
                  "id": "07b4ce4d-2750-412e-aef4-6b7815f1411a",
                  "name": "Ramp BV",
                  "type": "Subsidiary"
                }
              ],
              "amount": {
                "amount": 5000,
                "currency_code": "USD"
              }
            },
            {
              "accounting_field_selections": [
                {
                  "category_info": {
                    "external_id": "Category",
                    "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                    "name": "Category",
                    "type": "GL_ACCOUNT"
                  },
                  "display_name": null,
                  "external_id": "425",
                  "id": "07b4ce4d-2750-412e-aef4-6b7815f1411b",
                  "name": "Ramp LP",
                  "type": "Subsidiary"
                }
              ],
              "amount": {
                "amount": 43446,
                "currency_code": "USD"
              }
            }
          ],
          "memo": "Airfare for business travel",
          "merchant": "Delta Airlines",
          "merchant_amount": {
            "currency": "USD",
            "minor_unit_conversion_rate": 100,
            "value": 48446
          },
          "merchant_id": "752ba160-72f0-4935-b405-7fc333b1e273",
          "payee_amount": {
            "amount": 48446,
            "currency_code": "USD"
          },
          "payment_batch_id": "ef025463-050a-460b-a62a-f242876e8ce0",
          "payment_id": "NDPHKHCN6G",
          "payment_processed_at": "2023-08-22T:00:00+00:00",
          "receipts": [],
          "spend_limit_id": "92a68991-8374-4c0a-b5c0-5180c41b5148",
          "start_location": "123 Main St, Scranton, PA 18503",
          "state": "REIMBURSED",
          "submitted_at": "2023-08-20T:00:00+00:00",
          "synced_at": "2023-08-21T:00:00+00:00",
          "trace_id": {
            "descriptor": "Trace ID",
            "trace_id": "123456789012345"
          },
          "transaction_date": "2022-08-19",
          "trip_id": "ec6aae2b-38c6-4eeb-adf0-80f25dbf9aad",
          "type": "OUT_OF_POCKET",
          "updated_at": "2023-08-22T:00:00+00:00",
          "user_email": "dwight@dundermilflin.com",
          "user_full_name": "Dwight Schrute",
          "user_id": "7979392e-8d41-4f97-815b-ccd7584802bf",
          "waypoints": [
            "789 Highway Stop, Allentown, PA 18101"
          ]
        },
        "properties": {
          "accounting_date": {
            "description": "The date for accounting purposes. An accounting date override takes precedence. Otherwise, uses the transaction date or reviewed date according to accounting sync settings when enabled for the business; falls back to the transaction date otherwise.",
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "accounting_field_selections": {
            "description": "List of accounting fields selected to code the reimbursement.",
            "items": {
              "$ref": "#/components/schemas/ApiReimbursementAccountingFieldSelection"
            },
            "type": "array"
          },
          "approved_at": {
            "description": "Time at which the reimbursement is approved. Presented in ISO8601 format.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "attendees": {
            "description": "List of attendees for the reimbursement.",
            "items": {
              "$ref": "#/components/schemas/ApiReimbursementAttendee"
            },
            "type": "array"
          },
          "created_at": {
            "description": "Time at which the reimbursement is created. Presented in ISO8601 format.",
            "format": "date-time",
            "type": "string"
          },
          "direction": {
            "description": "The direction of the reimbursement. It could be either BUSINESS_TO_USER or USER_TO_BUSINESS.",
            "enum": [
              "BUSINESS_TO_USER",
              "USER_TO_BUSINESS"
            ],
            "type": "string"
          },
          "distance": {
            "description": "The distance of the reimbursement in miles, for mileage reimbursements.",
            "nullable": true,
            "type": "number"
          },
          "employee_id": {
            "description": "Employee ID of the person who made the reimbursement.",
            "nullable": true,
            "type": "string"
          },
          "end_location": {
            "description": "Ending location of the trip, for mileage reimbursements.",
            "nullable": true,
            "type": "string"
          },
          "entity_amount": {
            "$ref": "#/components/schemas/ApiReimbursementAmount",
            "description": "Replaces legacy `amount` and `currency`. The amount that the payor entity pays, in the entity's settlement currency. Null if the reimbursement does not have an amount yet.",
            "nullable": true,
            "readOnly": true
          },
          "entity_id": {
            "description": "Unique identifier of the associated business entity.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "fund_id": {
            "description": "The Fund to which the reimbursement is attributed, if it exists.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "funds",
              "type": "many-to-one"
            }
          },
          "funding_source": {
            "description": "Funding classification returned on list and fetch responses. PENDING means the funding source is not yet known before payment. Null means the funding source could not be determined. RAMP_FUNDED does not confirm settlement.",
            "enum": [
              "NOT_RAMP_FUNDED",
              "PAID_OUTSIDE_RAMP",
              "PENDING",
              "RAMP_FUNDED"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "NOT_RAMP_FUNDED": "No Ramp-funding evidence was found for the payment request.",
              "PAID_OUTSIDE_RAMP": "Reimbursement paid manually or through payroll, export, or push payment.",
              "PENDING": "Payment has not started and the funding source is not yet known.",
              "RAMP_FUNDED": "Ramp-funded reimbursement."
            }
          },
          "id": {
            "description": "Unique identifier of the reimbursement.",
            "format": "uuid",
            "type": "string"
          },
          "line_items": {
            "description": "List of line items related to the reimbursement.",
            "items": {
              "$ref": "#/components/schemas/ApiReimbursementLineItem"
            },
            "type": "array"
          },
          "memo": {
            "description": "Reimbursement memo",
            "nullable": true,
            "type": "string"
          },
          "merchant": {
            "description": "The name of the merchant that the reimbursement is associated with.",
            "nullable": true,
            "type": "string"
          },
          "merchant_amount": {
            "$ref": "#/components/schemas/ApiReimbursementAmount",
            "description": "Replaces legacy `original_reimbursement_amount`. The amount originally submitted for the reimbursement, in the currency it was submitted in. Equal to `entity_amount` when no currency conversion occurred. Null when the original amount data is unavailable or invalid.",
            "nullable": true,
            "readOnly": true
          },
          "merchant_id": {
            "description": "The unique identifier of the merchant. Note that this field may be empty when merchant is populated if Ramp does not recognize the merchant.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "merchants",
              "type": "many-to-one"
            }
          },
          "payee_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount and currency received by the payee.",
            "nullable": true
          },
          "payment_batch_id": {
            "description": "The unique identifier of the reimbursement payment batch that the reimbursement is associated with.",
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "payment_id": {
            "description": "The unique identifier of the payment batch that the reimbursement is associated with, once paid.",
            "nullable": true,
            "type": "string"
          },
          "payment_processed_at": {
            "description": "Time of reimbursement payment. Presented in ISO8601 format.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "receipts": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "spend_limit_id": {
            "deprecated": true,
            "description": "Alias of `fund_id` (Fund). The Fund to which the reimbursement is attributed, if it exists.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "limits",
              "type": "many-to-one"
            }
          },
          "start_location": {
            "description": "Starting location of the trip, for mileage reimbursements.",
            "nullable": true,
            "type": "string"
          },
          "state": {
            "description": "current state of the reimbursement.",
            "enum": [
              "APPROVED",
              "AWAITING_EXPORT",
              "AWAITING_PAYMENT",
              "AWAITING_PUSH_PAYMENT",
              "CANCELED",
              "DELETED",
              "DRAFT",
              "EXPORTED",
              "EXPORT_FAILED",
              "EXPORT_INITIATED",
              "EXPORT_MARKED_AS_FAILED",
              "EXPORT_SUCCESSFUL",
              "FAILED_REIMBURSEMENT",
              "INIT",
              "MANUALLY_REIMBURSED",
              "MISSING_ACH",
              "PAYROLL_FAILED",
              "PAYROLL_SUBMITTED",
              "PENDING",
              "PROCESSING",
              "PUSH_PAYMENT_FAILED",
              "PUSH_PAYMENT_INITIATED",
              "REIMBURSED",
              "REIMBURSED_VIA_PAYROLL",
              "REIMBURSED_VIA_PUSH",
              "REJECTED"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "APPROVED": "Approved",
              "AWAITING_EXPORT": "Ready to export",
              "AWAITING_PAYMENT": "Awaiting Payment",
              "AWAITING_PUSH_PAYMENT": "Ready to pay",
              "CANCELED": "Canceled",
              "DELETED": "Deleted",
              "DRAFT": "Draft",
              "EXPORTED": "Exported for payment",
              "EXPORT_FAILED": "Payment failed",
              "EXPORT_INITIATED": "Payment initiated",
              "EXPORT_MARKED_AS_FAILED": "Marked as failed",
              "EXPORT_SUCCESSFUL": "Payment successful",
              "FAILED_REIMBURSEMENT": "Payment Error",
              "INIT": "Init",
              "MANUALLY_REIMBURSED": "Paid outside of Ramp",
              "MISSING_ACH": "Missing ACH",
              "PAYROLL_FAILED": "Payroll payment failed",
              "PAYROLL_SUBMITTED": "Sent to payroll",
              "PENDING": "Pending Review",
              "PROCESSING": "Payment Processing",
              "PUSH_PAYMENT_FAILED": "Payment failed",
              "PUSH_PAYMENT_INITIATED": "Scheduled",
              "REIMBURSED": "Paid",
              "REIMBURSED_VIA_PAYROLL": "Paid via payroll",
              "REIMBURSED_VIA_PUSH": "Paid",
              "REJECTED": "Rejected"
            }
          },
          "submitted_at": {
            "description": "Time when reimbursement was most recently submitted",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "sync_status": {
            "description": "Current sync status of the reimbursement.",
            "enum": [
              "NOT_SYNC_READY",
              "SYNCED",
              "SYNC_READY"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "NOT_SYNC_READY": "The object is missing required accounting setup and is not ready to sync.",
              "SYNCED": "The object has already been synced to the accounting provider.",
              "SYNC_READY": "The object is ready to sync to the accounting provider."
            }
          },
          "synced_at": {
            "description": "Time when reimbursement has been synced. Will be None if the reimbursement is not synced.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "trace_id": {
            "$ref": "#/components/schemas/ApiReimbursementTraceId",
            "description": "The bank-facing accountability reference for this reimbursement payment, when available. Depending on the payment rail, this may be a trace ID, IMAD number, or reference number. This field is returned on reimbursement detail responses.",
            "readOnly": true
          },
          "transaction_date": {
            "format": "date",
            "nullable": true,
            "type": "string"
          },
          "trip_id": {
            "description": "Trip ID associated with the reimbursement if a Trip ID is available.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "trips",
              "type": "many-to-one"
            }
          },
          "type": {
            "description": "The type of the reimbursement.",
            "enum": [
              "MILEAGE",
              "OUT_OF_POCKET",
              "PAYBACK_FULL",
              "PAYBACK_PARTIAL",
              "PER_DIEM"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "Time at which the reimbursement was last updated. Presented in ISO8601 format.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "user_email": {
            "description": "Email of the person who made the reimbursement.",
            "type": "string"
          },
          "user_full_name": {
            "description": "Full name of the person who made the reimbursement.",
            "type": "string"
          },
          "user_id": {
            "description": "Unique identifier of the person who made the reimbursement.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "waypoints": {
            "description": "List of intermediate stops during the trip, for mileage reimbursements.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "accounting_date",
          "accounting_field_selections",
          "approved_at",
          "attendees",
          "created_at",
          "direction",
          "distance",
          "employee_id",
          "end_location",
          "entity_amount",
          "entity_id",
          "fund_id",
          "id",
          "line_items",
          "memo",
          "merchant",
          "merchant_amount",
          "merchant_id",
          "payee_amount",
          "payment_batch_id",
          "payment_id",
          "payment_processed_at",
          "receipts",
          "spend_limit_id",
          "start_location",
          "state",
          "submitted_at",
          "sync_status",
          "synced_at",
          "transaction_date",
          "trip_id",
          "type",
          "updated_at",
          "user_email",
          "user_full_name",
          "user_id",
          "waypoints"
        ],
        "type": "object",
        "x-resource-name": "reimbursements"
      },
      "RelativeDateOffsetRequestBody": {
        "description": "Represents a date relative to the current date that automatically snaps to period boundaries.\n\nExamples:\n    # Last complete month (snapping determined by context)\n    RelativeDateOffset(unit=\"month\", offset=-1)\n\n    # Current year\n    RelativeDateOffset(unit=\"year\", offset=0)",
        "properties": {
          "offset": {
            "description": "Number of units to offset. Negative for past, positive for future. Example: -1 month = previous month",
            "title": "Offset",
            "type": "integer"
          },
          "unit": {
            "$ref": "#/components/schemas/RelativeDateOffsetUnitRequestBody",
            "description": "The unit of time (day, week, quarter, month, year)"
          }
        },
        "required": [
          "offset",
          "unit"
        ],
        "title": "RelativeDateOffset",
        "type": "object"
      },
      "RelativeDateOffsetUnitRequestBody": {
        "description": "Units of time for relative date offsets.",
        "enum": [
          "day",
          "month",
          "quarter",
          "week",
          "year"
        ],
        "title": "RelativeDateOffsetUnit",
        "type": "string"
      },
      "RemoteSystemType": {
        "description": "The type of remote/external system being integrated with.\n\nThis enum identifies which third-party system the field mapping is for.\nValues are automatically registered by clients that implement FieldMappingFeature\nand register with FieldMappingClientRegistry.\n\nTo add a new system:\n1. Have your client implement FieldMappingFeature interface\n2. Add the client to initialize_registries() in field_mapping/registry.py\n3. Add the enum value here\n\nSee suma/proxy/procurement_integrations/field_mapping_interface.py for details.",
        "enum": [
          "ARAVO",
          "DOCUSIGN",
          "DRATA",
          "IRONCLAD",
          "LOGICGATE",
          "MERGE",
          "ONETRUST",
          "VANTA"
        ],
        "title": "RemoteSystemType",
        "type": "string",
        "x-enum-descriptions": {
          "ARAVO": "Aravo integration.",
          "DOCUSIGN": "DocuSign integration.",
          "DRATA": "Drata integration.",
          "IRONCLAD": "Ironclad integration.",
          "LOGICGATE": "LogicGate integration.",
          "MERGE": "Ticketing integration through Merge.",
          "ONETRUST": "OneTrust integration.",
          "VANTA": "Vanta integration."
        }
      },
      "RemoteTicketData": {
        "properties": {
          "approval_trigger_instance_uuid": {
            "nullable": true,
            "title": "Approval Trigger Instance Uuid",
            "type": "string"
          },
          "assignees": {
            "default": null,
            "items": {
              "$ref": "#/components/schemas/TicketAssignee"
            },
            "nullable": true,
            "title": "Assignees",
            "type": "array"
          },
          "business_id": {
            "title": "Business Id",
            "type": "integer"
          },
          "collection_name": {
            "nullable": true,
            "title": "Collection Name",
            "type": "string"
          },
          "custom_status": {
            "default": null,
            "nullable": true,
            "title": "Custom Status",
            "type": "string"
          },
          "description": {
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "name": {
            "nullable": true,
            "title": "Name",
            "type": "string"
          },
          "provider_type": {
            "$ref": "#/components/schemas/TicketingProviderType"
          },
          "remote_data": {
            "nullable": true,
            "title": "Remote Data",
            "type": "object"
          },
          "remote_id": {
            "nullable": true,
            "title": "Remote Id",
            "type": "string"
          },
          "remote_was_deleted": {
            "title": "Remote Was Deleted",
            "type": "boolean"
          },
          "status": {
            "$ref": "#/components/schemas/RemoteTicketStatus",
            "nullable": true
          },
          "type": {
            "nullable": true,
            "title": "Type",
            "type": "string"
          },
          "url": {
            "nullable": true,
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "approval_trigger_instance_uuid",
          "business_id",
          "collection_name",
          "description",
          "id",
          "name",
          "provider_type",
          "remote_data",
          "remote_id",
          "remote_was_deleted",
          "status",
          "type",
          "url"
        ],
        "title": "RemoteTicketData",
        "type": "object"
      },
      "RemoteTicketStatus": {
        "enum": [
          "CLOSED",
          "IN_PROGRESS",
          "ON_HOLD",
          "OPEN"
        ],
        "title": "RemoteTicketStatus",
        "type": "string"
      },
      "RemoveMatrixCellsByNameRequestRequestBody": {
        "description": "Request for removing cells from Matrix rows.",
        "example": {
          "data": [
            {
              "inputs": [
                {
                  "column_name": "department",
                  "identifier": {
                    "column_name": "id",
                    "value": "<UUID>"
                  }
                }
              ],
              "results": [
                {
                  "column_name": "approvers",
                  "identifier": {
                    "column_name": "id",
                    "value": "<UUID>"
                  }
                }
              ]
            }
          ]
        },
        "properties": {
          "data": {
            "description": "Rows with cells to remove (many-to-many result columns only)",
            "items": {
              "$ref": "#/components/schemas/MatrixRowInputByNameRequestBody"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "RemoveMatrixCellsByNameRequest",
        "type": "object"
      },
      "RemoveMatrixCellsByNameResponse": {
        "description": "Response for removing cells from Matrix rows.",
        "example": {
          "metadata": {
            "cells_removed": 1
          }
        },
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/DeveloperApiMatrixRemoveMetadata",
            "description": "Remove counts"
          }
        },
        "required": [
          "metadata"
        ],
        "title": "RemoveMatrixCellsByNameResponse",
        "type": "object"
      },
      "RemoveNativeRowCellsRequestRequestBody": {
        "example": {
          "data": [
            {
              "cells": [
                {
                  "contents": {
                    "column_name": "email",
                    "value": "<existing_ramp_user_email>"
                  },
                  "name": "budget_managers"
                }
              ],
              "row": {
                "column_name": "id",
                "value": "<existing_ramp_user_uuid>"
              }
            }
          ],
          "skip_removing_already_missing": true
        },
        "properties": {
          "data": {
            "description": "List of rows containing cells to remove.",
            "items": {
              "$ref": "#/components/schemas/NativeRowColumnContentsByColumnNameRequestBody"
            },
            "title": "Data",
            "type": "array"
          },
          "skip_removing_already_missing": {
            "default": false,
            "description": "Whether to ignore requested cells that do not exist instead of returning an error.",
            "title": "Skip Removing Already Missing",
            "type": "boolean"
          }
        },
        "required": [
          "data"
        ],
        "title": "RemoveNativeRowCellsRequest",
        "type": "object"
      },
      "RenameColumnRequestBody": {
        "example": {
          "new_name": "main_approver"
        },
        "properties": {
          "new_name": {
            "title": "New Name",
            "type": "string"
          }
        },
        "required": [
          "new_name"
        ],
        "title": "RenameColumn",
        "type": "object"
      },
      "RenameTableRequestBody": {
        "example": {
          "new_name": "approvals"
        },
        "properties": {
          "new_name": {
            "title": "New Name",
            "type": "string"
          }
        },
        "required": [
          "new_name"
        ],
        "title": "RenameTable",
        "type": "object"
      },
      "RenewalActionUpdateRequestBody": {
        "discriminator": {
          "mapping": {
            "CANCELLED": "#/components/schemas/CancelledActionUpdateRequestBody",
            "EVALUATING": "#/components/schemas/EvaluatingActionUpdateRequestBody",
            "NOT_STARTED": "#/components/schemas/ActiveActionUpdateRequestBody",
            "PLANNING": "#/components/schemas/PlanningActionUpdateRequestBody",
            "RENEWED": "#/components/schemas/RenewedActionUpdateRequestBody",
            "TERMINATED": "#/components/schemas/TerminatedActionUpdateRequestBody"
          },
          "propertyName": "type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActiveActionUpdateRequestBody"
          },
          {
            "$ref": "#/components/schemas/CancelledActionUpdateRequestBody"
          },
          {
            "$ref": "#/components/schemas/EvaluatingActionUpdateRequestBody"
          },
          {
            "$ref": "#/components/schemas/PlanningActionUpdateRequestBody"
          },
          {
            "$ref": "#/components/schemas/RenewedActionUpdateRequestBody"
          },
          {
            "$ref": "#/components/schemas/TerminatedActionUpdateRequestBody"
          }
        ]
      },
      "RenewalBriefForUnifiedRequestDetailSchema": {
        "properties": {
          "document_id": {
            "description": "The renewal brief document ID.",
            "title": "Document Id",
            "type": "string"
          },
          "title": {
            "description": "The renewal brief title.",
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "document_id",
          "title"
        ],
        "title": "RenewalBriefForUnifiedRequestDetailSchema",
        "type": "object"
      },
      "RenewalNotificationSnoozeDateRequestBody": {
        "description": "Date when renewal reminders resume. Must be after today and at most one year from today",
        "format": "date",
        "type": "string"
      },
      "RenewalNotificationSnoozeDaysRequestBody": {
        "description": "Snooze renewal notifications for a number of days.",
        "properties": {
          "duration": {
            "description": "Number of days to snooze (1-365)",
            "maximum": 365,
            "minimum": 1,
            "title": "Duration",
            "type": "integer"
          },
          "unit": {
            "enum": [
              "DAYS"
            ],
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "duration"
        ],
        "title": "RenewalNotificationSnoozeDays",
        "type": "object"
      },
      "RenewalNotificationSnoozeInputRequestBody": {
        "discriminator": {
          "mapping": {
            "DAYS": "#/components/schemas/RenewalNotificationSnoozeDaysRequestBody",
            "MONTHS": "#/components/schemas/RenewalNotificationSnoozeMonthsRequestBody",
            "WEEKS": "#/components/schemas/RenewalNotificationSnoozeWeeksRequestBody"
          },
          "propertyName": "unit"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/RenewalNotificationSnoozeDaysRequestBody"
          },
          {
            "$ref": "#/components/schemas/RenewalNotificationSnoozeMonthsRequestBody"
          },
          {
            "$ref": "#/components/schemas/RenewalNotificationSnoozeWeeksRequestBody"
          }
        ]
      },
      "RenewalNotificationSnoozeMonthsRequestBody": {
        "description": "Snooze renewal notifications for a number of months.",
        "properties": {
          "duration": {
            "description": "Number of months to snooze (1-12)",
            "maximum": 12,
            "minimum": 1,
            "title": "Duration",
            "type": "integer"
          },
          "unit": {
            "enum": [
              "MONTHS"
            ],
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "duration"
        ],
        "title": "RenewalNotificationSnoozeMonths",
        "type": "object"
      },
      "RenewalNotificationSnoozeWeeksRequestBody": {
        "description": "Snooze renewal notifications for a number of weeks.",
        "properties": {
          "duration": {
            "description": "Number of weeks to snooze (1-52)",
            "maximum": 52,
            "minimum": 1,
            "title": "Duration",
            "type": "integer"
          },
          "unit": {
            "enum": [
              "WEEKS"
            ],
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "duration"
        ],
        "title": "RenewalNotificationSnoozeWeeks",
        "type": "object"
      },
      "RenewedActionUpdateRequestBody": {
        "properties": {
          "reason": {
            "title": "Reason",
            "type": "string"
          },
          "type": {
            "description": "Marks the agreement as renewed.",
            "enum": [
              "RENEWED"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "reason"
        ],
        "title": "RenewedActionUpdate",
        "type": "object"
      },
      "Repayment": {
        "example": {
          "entity_id": "4bec9dc1-710e-4781-b254-fc606c76a241",
          "funding_method": "ach",
          "id": "d47ba06e-14ac-4a7b-89b4-4775412ba545",
          "original_transaction_id": "ec6aae2b-38c6-4eeb-adf0-80f25dbf9aad",
          "repaid_at": "2023-08-21T00:00:00+0000",
          "repayment_amount": {
            "amount": 48446,
            "currency_code": "USD"
          },
          "status": "REPAID",
          "sync_status": "SYNC_SUCCESS",
          "user_id": "7979392e-8d41-4f97-815b-ccd7584802bf",
          "user_signature": "John Doe"
        },
        "properties": {
          "entity_id": {
            "description": "Unique identifier of the associated business entity.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "funding_method": {
            "description": "The method used to fund the repayment.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the repayment.",
            "format": "uuid",
            "type": "string"
          },
          "original_transaction_id": {
            "description": "Original transaction id.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "repaid_at": {
            "description": "Time at which the repayment is repaid. Presented in ISO8601 format.",
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "repayment_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount and currency of the repayment by the payor.",
            "nullable": true,
            "readOnly": true
          },
          "status": {
            "description": "Current repayment status.",
            "enum": [
              "AWAITING_MANUAL_REPAYMENT",
              "AWAITING_PAYMENT",
              "NONE",
              "REPAID",
              "REPAYMENT_FAILED",
              "REQUESTED_BY_REVIEWER"
            ],
            "readOnly": true,
            "type": "string"
          },
          "sync_status": {
            "description": "Latest accounting sync status of the repayment. Null if no repayment sync has been attempted.",
            "enum": [
              "IN_PROGRESS",
              "MARKED_CANCELED",
              "NOT_STARTED",
              "SYNC_FAILURE",
              "SYNC_SUCCESS"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "IN_PROGRESS": "The accounting sync is in progress.",
              "MARKED_CANCELED": "The accounting sync was marked as canceled.",
              "NOT_STARTED": "The accounting sync has not started.",
              "SYNC_FAILURE": "The accounting sync failed.",
              "SYNC_SUCCESS": "The accounting sync completed successfully."
            }
          },
          "user_id": {
            "description": "Cardholder user id.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "user_signature": {
            "description": "User's signature from the repayment agreement acceptance.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "funding_method",
          "id",
          "original_transaction_id",
          "repaid_at",
          "repayment_amount",
          "status",
          "sync_status",
          "user_id",
          "user_signature"
        ],
        "type": "object",
        "x-resource-name": "repayments"
      },
      "RequestAgainDenialReason": {
        "enum": [
          "punchout_order",
          "request_linked_to_agreement",
          "spend_intent_deleted",
          "spend_intent_not_requestable"
        ],
        "title": "RequestAgainDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "punchout_order": "Re-requesting is not supported for punchout purchase orders.",
          "request_linked_to_agreement": "The spend request is linked to an agreement.",
          "spend_intent_deleted": "The associated spend intent has been deleted.",
          "spend_intent_not_requestable": "The associated spend intent is not requestable by this user."
        }
      },
      "RequestChangesDenialReason": {
        "enum": [
          "archived",
          "is_change_request",
          "no_permission",
          "not_approved",
          "not_purchase_order",
          "po_closed",
          "po_external",
          "po_has_change_order",
          "punchout_order"
        ],
        "title": "RequestChangesDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "archived": "The purchase order has been archived.",
          "is_change_request": "The spend request is already a change request.",
          "no_permission": "The user does not have permission to request changes for the purchase order.",
          "not_approved": "The spend request has not been approved.",
          "not_purchase_order": "The spend request is not associated with a purchase order.",
          "po_closed": "The purchase order has been closed.",
          "po_external": "The purchase order was not created in Ramp.",
          "po_has_change_order": "The purchase order already has a pending change order.",
          "punchout_order": "Change requests are not supported for punchout purchase orders."
        }
      },
      "RequestExpansionDenialReason": {
        "enum": [
          "APPROVED_RENEWAL_REQUEST",
          "MARKED_AS_RENEWED",
          "MARKED_AS_TERMINATED",
          "NO_PERMISSION",
          "PENDING_EXPANSION_REQUEST",
          "PENDING_RENEWAL_REQUEST"
        ],
        "title": "RequestExpansionDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "APPROVED_RENEWAL_REQUEST": "A renewal request has been approved.",
          "MARKED_AS_RENEWED": "The agreement has been marked as renewed.",
          "MARKED_AS_TERMINATED": "The agreement has been terminated.",
          "NO_PERMISSION": "The user does not have permission to request an expansion.",
          "PENDING_EXPANSION_REQUEST": "An expansion request is pending approval.",
          "PENDING_RENEWAL_REQUEST": "A renewal request is pending approval."
        }
      },
      "RequestNameMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "REQUEST_NAME"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "RequestNameMappedFieldSchema",
        "type": "object"
      },
      "RequestReasonMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "REQUEST_REASON"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "RequestReasonMappedFieldSchema",
        "type": "object"
      },
      "RequestRenewalDenialReason": {
        "enum": [
          "APPROVED_RENEWAL_REQUEST",
          "CONTRACT_TYPE_NOT_RENEWABLE",
          "MARKED_AS_RENEWED",
          "MARKED_AS_TERMINATED",
          "MARKED_AS_WONT_RENEW",
          "NO_PERMISSION",
          "PENDING_EXPANSION_REQUEST",
          "PENDING_RENEWAL_REQUEST"
        ],
        "title": "RequestRenewalDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "APPROVED_RENEWAL_REQUEST": "A renewal request has been approved.",
          "CONTRACT_TYPE_NOT_RENEWABLE": "The agreement's contract type does not renew.",
          "MARKED_AS_RENEWED": "The agreement has been marked as renewed.",
          "MARKED_AS_TERMINATED": "The agreement has been terminated.",
          "MARKED_AS_WONT_RENEW": "The agreement has been marked as not renewing.",
          "NO_PERMISSION": "The user does not have permission to request a renewal.",
          "PENDING_EXPANSION_REQUEST": "An expansion request is pending approval.",
          "PENDING_RENEWAL_REQUEST": "A renewal request is pending approval."
        }
      },
      "RequiredSelectionParamsRequestBody": {
        "properties": {
          "trigger_field_option_remote_id": {
            "description": "The remote ID of the required field option.",
            "minLength": 1,
            "type": "string"
          },
          "trigger_field_remote_id": {
            "description": "The remote ID of the required accounting field.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "trigger_field_option_remote_id",
          "trigger_field_remote_id"
        ],
        "type": "object"
      },
      "ResponseFile": {
        "format": "binary",
        "title": "ResponseFile",
        "type": "string"
      },
      "RowQueryFilterRequestBody": {
        "properties": {
          "clause": {
            "discriminator": {
              "mapping": {
                "greater_than": "#/components/schemas/RowQueryGreaterThanClauseRequestBody",
                "greater_than_or_equal": "#/components/schemas/RowQueryGreaterThanOrEqualClauseRequestBody",
                "is_not": "#/components/schemas/RowQueryIsNotClauseRequestBody",
                "is_not_null": "#/components/schemas/RowQueryIsNotNullClauseRequestBody",
                "is_null": "#/components/schemas/RowQueryIsNullClauseRequestBody",
                "less_than": "#/components/schemas/RowQueryLessThanClauseRequestBody",
                "less_than_or_equal": "#/components/schemas/RowQueryLessThanOrEqualClauseRequestBody",
                "one_of": "#/components/schemas/RowQueryOneOfClauseRequestBody"
              },
              "propertyName": "type"
            },
            "oneOf": [
              {
                "$ref": "#/components/schemas/RowQueryGreaterThanClauseRequestBody"
              },
              {
                "$ref": "#/components/schemas/RowQueryGreaterThanOrEqualClauseRequestBody"
              },
              {
                "$ref": "#/components/schemas/RowQueryIsNotClauseRequestBody"
              },
              {
                "$ref": "#/components/schemas/RowQueryIsNotNullClauseRequestBody"
              },
              {
                "$ref": "#/components/schemas/RowQueryIsNullClauseRequestBody"
              },
              {
                "$ref": "#/components/schemas/RowQueryLessThanClauseRequestBody"
              },
              {
                "$ref": "#/components/schemas/RowQueryLessThanOrEqualClauseRequestBody"
              },
              {
                "$ref": "#/components/schemas/RowQueryOneOfClauseRequestBody"
              }
            ],
            "title": "Clause"
          },
          "column_id": {
            "title": "Column Id",
            "type": "string"
          },
          "type": {
            "enum": [
              "filter"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "clause",
          "column_id"
        ],
        "title": "RowQueryFilter",
        "type": "object"
      },
      "RowQueryGreaterThanClauseRequestBody": {
        "properties": {
          "type": {
            "enum": [
              "greater_than"
            ],
            "title": "Type",
            "type": "string"
          },
          "value": {
            "oneOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value"
          }
        },
        "required": [
          "value"
        ],
        "title": "RowQueryGreaterThanClause",
        "type": "object"
      },
      "RowQueryGreaterThanOrEqualClauseRequestBody": {
        "properties": {
          "type": {
            "enum": [
              "greater_than_or_equal"
            ],
            "title": "Type",
            "type": "string"
          },
          "value": {
            "oneOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value"
          }
        },
        "required": [
          "value"
        ],
        "title": "RowQueryGreaterThanOrEqualClause",
        "type": "object"
      },
      "RowQueryIsNotClauseRequestBody": {
        "properties": {
          "type": {
            "enum": [
              "is_not"
            ],
            "title": "Type",
            "type": "string"
          },
          "values": {
            "oneOf": [
              {
                "items": {
                  "format": "date-time",
                  "type": "string"
                },
                "type": "array"
              },
              {
                "items": {
                  "oneOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "type": "array"
              },
              {
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            ],
            "title": "Values"
          }
        },
        "required": [
          "values"
        ],
        "title": "RowQueryIsNotClause",
        "type": "object"
      },
      "RowQueryIsNotNullClauseRequestBody": {
        "properties": {
          "type": {
            "enum": [
              "is_not_null"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "title": "RowQueryIsNotNullClause",
        "type": "object"
      },
      "RowQueryIsNullClauseRequestBody": {
        "properties": {
          "type": {
            "enum": [
              "is_null"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "title": "RowQueryIsNullClause",
        "type": "object"
      },
      "RowQueryLessThanClauseRequestBody": {
        "properties": {
          "type": {
            "enum": [
              "less_than"
            ],
            "title": "Type",
            "type": "string"
          },
          "value": {
            "oneOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value"
          }
        },
        "required": [
          "value"
        ],
        "title": "RowQueryLessThanClause",
        "type": "object"
      },
      "RowQueryLessThanOrEqualClauseRequestBody": {
        "properties": {
          "type": {
            "enum": [
              "less_than_or_equal"
            ],
            "title": "Type",
            "type": "string"
          },
          "value": {
            "oneOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value"
          }
        },
        "required": [
          "value"
        ],
        "title": "RowQueryLessThanOrEqualClause",
        "type": "object"
      },
      "RowQueryOneOfClauseRequestBody": {
        "properties": {
          "type": {
            "enum": [
              "one_of"
            ],
            "title": "Type",
            "type": "string"
          },
          "values": {
            "oneOf": [
              {
                "items": {
                  "format": "date-time",
                  "type": "string"
                },
                "type": "array"
              },
              {
                "items": {
                  "oneOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "type": "array"
              },
              {
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            ],
            "title": "Values"
          }
        },
        "required": [
          "values"
        ],
        "title": "RowQueryOneOfClause",
        "type": "object"
      },
      "SDKCondition": {
        "properties": {
          "available_operands": {
            "items": {
              "$ref": "#/components/schemas/AvailableOperand"
            },
            "readOnly": true,
            "type": "array"
          },
          "conditions": {
            "items": {
              "$ref": "#/components/schemas/Condition"
            },
            "type": "array"
          },
          "else_blocks": {
            "items": {
              "$ref": "#/components/schemas/Vertex"
            },
            "type": "array"
          },
          "else_condition_group": {
            "$ref": "#/components/schemas/ConditionGroup",
            "default": null,
            "nullable": true
          },
          "has_been_visited": {
            "readOnly": true,
            "type": "boolean"
          },
          "identifier": {
            "nullable": true,
            "type": "string"
          },
          "metadata": {},
          "uuid": {
            "format": "uuid",
            "type": "string"
          },
          "vertex_type": {
            "enum": [
              "SDK_CONDITION"
            ],
            "type": "string"
          }
        },
        "required": [
          "conditions",
          "else_blocks",
          "else_condition_group",
          "uuid",
          "vertex_type"
        ],
        "type": "object"
      },
      "SanitizedApprovalStep": {
        "properties": {
          "_ramp_event_type": {
            "type": "string"
          },
          "assigned_entities": {
            "items": {
              "$ref": "#/components/schemas/SanitizedAssignedEntity"
            },
            "type": "array"
          },
          "completed_approval_count": {
            "default": null,
            "description": "Satisfied eligible selected principals, including delegate credit; capped at the effective target.",
            "nullable": true,
            "type": "integer"
          },
          "displayed_event_text": {
            "type": "string"
          },
          "eligible_approver_count": {
            "default": null,
            "description": "Distinct eligible selected people across direct selections and groups, excluding delegate-only users.",
            "nullable": true,
            "type": "integer"
          },
          "event_order": {
            "type": "integer"
          },
          "event_type": {
            "enum": [
              "NOTIFY",
              "REQUIRE",
              "REQUIRE_ALL",
              "ROUND_ROBIN"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ROUND_ROBIN": "Randomly assigns approval to one person from the selected users and groups."
            }
          },
          "id": {
            "type": "string"
          },
          "is_current_step": {
            "type": "boolean"
          },
          "is_delegate": {
            "default": false,
            "type": "boolean"
          },
          "is_last_step_for_user": {
            "type": "boolean"
          },
          "needs_user_action": {
            "type": "boolean"
          },
          "needs_user_trigger_action": {
            "default": false,
            "type": "boolean"
          },
          "notes": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "raw_step_order": {
            "type": "integer"
          },
          "required_approval_count": {
            "default": null,
            "description": "Configured approval target; execution caps it at eligible_approver_count.",
            "nullable": true,
            "type": "integer"
          },
          "status": {
            "enum": [
              "ADMIN_APPROVED",
              "ADMIN_REJECTED",
              "APPROVED",
              "COMPLETED",
              "MANUALLY_SKIPPED",
              "PENDING",
              "REJECTED",
              "SKIPPED",
              "TERMINATED"
            ],
            "type": "string"
          },
          "step_creator_user_id": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "step_date": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "substeps": {
            "items": {
              "$ref": "#/components/schemas/SanitizedApprovalSubstep"
            },
            "type": "array"
          },
          "trigger_entity_metadata": {
            "$ref": "#/components/schemas/TriggerEntityMetadata",
            "nullable": true
          }
        },
        "required": [
          "_ramp_event_type",
          "assigned_entities",
          "completed_approval_count",
          "displayed_event_text",
          "eligible_approver_count",
          "event_order",
          "event_type",
          "id",
          "is_current_step",
          "is_delegate",
          "is_last_step_for_user",
          "needs_user_action",
          "needs_user_trigger_action",
          "notes",
          "raw_step_order",
          "required_approval_count",
          "status",
          "step_creator_user_id",
          "step_date",
          "substeps"
        ],
        "type": "object"
      },
      "SanitizedApprovalSubstep": {
        "properties": {
          "assigned_entities": {
            "items": {
              "$ref": "#/components/schemas/SanitizedAssignedEntity"
            },
            "type": "array"
          },
          "displayed_event_text": {
            "type": "string"
          },
          "event_type": {
            "enum": [
              "NOTIFY",
              "REQUIRE",
              "REQUIRE_ALL",
              "ROUND_ROBIN"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ROUND_ROBIN": "Randomly assigns approval to one person from the selected users and groups."
            }
          },
          "status": {
            "enum": [
              "ADMIN_APPROVED",
              "ADMIN_REJECTED",
              "APPROVED",
              "COMPLETED",
              "MANUALLY_SKIPPED",
              "PENDING",
              "REJECTED",
              "SKIPPED",
              "TERMINATED"
            ],
            "type": "string"
          },
          "step_date": {
            "default": null,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "assigned_entities",
          "displayed_event_text",
          "event_type",
          "status",
          "step_date"
        ],
        "type": "object"
      },
      "SanitizedAssignedEntity": {
        "properties": {
          "approval_trigger_instance_error_message": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "approval_trigger_instance_error_redirect_url": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "approval_trigger_type": {
            "default": null,
            "enum": [
              "GLOBAL_FORM_RESPONSE",
              "IRONCLAD_WORKFLOW_GATE",
              "LAUNCH_ESIGN_WORKFLOW",
              "LAUNCH_EXTERNAL_APPROVAL",
              "LAUNCH_IRONCLAD_WORKFLOW",
              "LAUNCH_THIRD_PARTY_RISK_MANAGEMENT_VENDOR_REVIEW_WORKFLOW",
              "LAUNCH_TICKETING_WORKFLOW",
              "LAUNCH_VENDOR_ONBOARDING",
              "SEND_BACK",
              "WAIT_FOR_BOOKING_COMPLETION"
            ],
            "nullable": true,
            "type": "string",
            "x-enum-descriptions": {
              "GLOBAL_FORM_RESPONSE": "Waits for a custom form response to be submitted.",
              "IRONCLAD_WORKFLOW_GATE": "Waits for the Ironclad workflows launched earlier in the request to pass a configured step.",
              "LAUNCH_ESIGN_WORKFLOW": "Launches an eSign envelope and waits for it to be signed.",
              "LAUNCH_EXTERNAL_APPROVAL": "Requests an approval from an external system and waits for its decision.",
              "LAUNCH_IRONCLAD_WORKFLOW": "Launches an Ironclad contract workflow and waits for it to complete.",
              "LAUNCH_THIRD_PARTY_RISK_MANAGEMENT_VENDOR_REVIEW_WORKFLOW": "Launches a third-party risk management vendor review and waits for it to complete.",
              "LAUNCH_TICKETING_WORKFLOW": "Creates a ticket in an external ticketing system and waits for it to be resolved.",
              "LAUNCH_VENDOR_ONBOARDING": "Launches vendor onboarding and waits for it to complete.",
              "SEND_BACK": "Sends the request back to an assignee and waits for it to be returned.",
              "WAIT_FOR_BOOKING_COMPLETION": "Waits for a travel booking to be completed."
            }
          },
          "assigned_user_full_name": {
            "type": "string"
          },
          "assigned_user_id": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "can_create_esign_envelope": {
            "default": null,
            "description": "Whether the current viewer has a pending e-sign assignment for this trigger. Null when eligibility has not been loaded or the trigger is not e-sign.",
            "nullable": true,
            "type": "boolean"
          },
          "delegator_user_full_name": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "delegator_user_id": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "entity_full_name": {
            "type": "string"
          },
          "entity_id": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "entity_type": {
            "enum": [
              "ANY_ADMIN",
              "GROUP",
              "MANAGER",
              "TRIGGER",
              "USER",
              "VENDOR_OWNER",
              "VENDOR_OWNER_MANAGER"
            ],
            "type": "string"
          },
          "external_url": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "notes": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "provider_type": {
            "default": null,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "approval_trigger_instance_error_message",
          "approval_trigger_instance_error_redirect_url",
          "approval_trigger_type",
          "assigned_user_full_name",
          "assigned_user_id",
          "can_create_esign_envelope",
          "delegator_user_full_name",
          "delegator_user_id",
          "entity_full_name",
          "entity_id",
          "entity_type",
          "external_url",
          "notes",
          "provider_type"
        ],
        "type": "object"
      },
      "SendBackTriggerEntityMetadata": {
        "properties": {
          "assignee_group_uuid": {
            "default": null,
            "description": "Workflow group the request was sent back to, if any.",
            "nullable": true,
            "title": "Assignee Group Uuid",
            "type": "string"
          },
          "assignee_relative_group_type": {
            "default": null,
            "description": "Relative role the request was sent back to, if any.",
            "nullable": true,
            "title": "Assignee Relative Group Type",
            "type": "string"
          },
          "assignee_user": {
            "$ref": "#/components/schemas/ApprovalReducedUser",
            "default": null,
            "description": "User the request was sent back to, if any.",
            "nullable": true
          },
          "instructions": {
            "default": null,
            "description": "Instructions shown to the assignee.",
            "nullable": true,
            "title": "Instructions",
            "type": "string"
          },
          "resolution": {
            "$ref": "#/components/schemas/SpendRequestSendBackResolution",
            "default": null,
            "description": "How the node completed; null while the send-back is still active.",
            "nullable": true
          },
          "resolved_at": {
            "default": null,
            "description": "When the send-back was returned, resolved, or canceled.",
            "nullable": true,
            "title": "Resolved At",
            "type": "string"
          },
          "resolved_by_user": {
            "$ref": "#/components/schemas/ApprovalReducedUser",
            "default": null,
            "description": "User who returned or resolved the send-back.",
            "nullable": true
          },
          "response_body": {
            "default": null,
            "description": "Message the assignee or admin left when completing the step.",
            "nullable": true,
            "title": "Response Body",
            "type": "string"
          },
          "send_back_status": {
            "$ref": "#/components/schemas/SpendRequestSendBackStatus",
            "default": null,
            "description": "Lifecycle status of the send-back row.",
            "nullable": true
          },
          "send_back_uuid": {
            "default": null,
            "description": "UUID of the send-back row the node opened.",
            "nullable": true,
            "title": "Send Back Uuid",
            "type": "string"
          },
          "trigger_type": {
            "description": "The trigger type for a send-back node.",
            "enum": [
              "SEND_BACK"
            ],
            "title": "Trigger Type",
            "type": "string"
          }
        },
        "title": "SendBackTriggerEntityMetadata",
        "type": "object"
      },
      "SendManualReminderDenialReason": {
        "enum": [
          "ARCHIVED",
          "FEATURE_DISABLED",
          "INELIGIBLE_STATUS",
          "IN_COOLDOWN",
          "MISSING_REQUIRED_INFO",
          "NOTIFICATIONS_OFF",
          "NO_PERMISSION",
          "NO_RECIPIENTS",
          "SNOOZED"
        ],
        "title": "SendManualReminderDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "ARCHIVED": "The agreement is archived.",
          "FEATURE_DISABLED": "Manual contract reminders are not enabled for this business.",
          "INELIGIBLE_STATUS": "The agreement's current status does not permit manual reminders.",
          "IN_COOLDOWN": "A manual reminder was sent within the last 24 hours.",
          "MISSING_REQUIRED_INFO": "The agreement is missing required information.",
          "NOTIFICATIONS_OFF": "Notifications are disabled for the agreement.",
          "NO_PERMISSION": "The user does not have permission to edit the agreement.",
          "NO_RECIPIENTS": "The agreement has no eligible reminder recipients.",
          "SNOOZED": "Agreement notifications are snoozed."
        }
      },
      "SendManualReminderDeniedSchema": {
        "description": "Denied manual reminder action, with the time the cooldown ends",
        "properties": {
          "available_at": {
            "default": null,
            "description": "When a manual reminder can be sent again. Set only when the denial reason is IN_COOLDOWN.",
            "format": "date-time",
            "nullable": true,
            "title": "Available At",
            "type": "string"
          },
          "denial_reason": {
            "$ref": "#/components/schemas/SendManualReminderDenialReason",
            "description": "Why the action cannot be performed."
          },
          "status": {
            "description": "Whether the action can be performed.",
            "enum": [
              "denied"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "available_at",
          "denial_reason",
          "status"
        ],
        "title": "SendManualReminderDeniedSchema",
        "type": "object"
      },
      "SendPdfToVendorDenialReason": {
        "enum": [
          "archived",
          "no_permission",
          "parent_blanket_purchase_order",
          "punchout_order"
        ],
        "title": "SendPdfToVendorDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "archived": "The purchase order has been archived.",
          "no_permission": "The user does not have permission to send the purchase order PDF to the vendor.",
          "parent_blanket_purchase_order": "A blanket PO with child POs is not sent to the vendor; its child POs are.",
          "punchout_order": "Sending PDFs to vendors is not supported for punchout purchase orders."
        }
      },
      "SetRenewalStatusDenialReason": {
        "enum": [
          "APPROVED_RENEWAL_REQUEST",
          "NO_PERMISSION",
          "PENDING_RENEWAL_REQUEST"
        ],
        "title": "SetRenewalStatusDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "APPROVED_RENEWAL_REQUEST": "A renewal request has been approved.",
          "NO_PERMISSION": "The user does not have permission to set the renewal status.",
          "PENDING_RENEWAL_REQUEST": "A renewal request is pending approval."
        }
      },
      "SimpleSuccess": {
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ],
        "type": "object"
      },
      "SingleObject": {
        "properties": {
          "deleted": {
            "readOnly": true,
            "type": "boolean"
          },
          "display_name": {
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "display_name",
          "id"
        ],
        "type": "object"
      },
      "SingleTransaction": {
        "example": {
          "accounting_categories": [],
          "accounting_date": "2022-05-03T00:00:00+00:00",
          "accounting_field_selections": [
            {
              "category_info": {
                "external_id": "Category",
                "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                "name": "Category",
                "type": "GL_ACCOUNT"
              },
              "display_name": "Ramp Category",
              "external_id": "Category",
              "id": "07b4ce4d-2750-412e-aef4-6b7815f1411c",
              "name": "Category",
              "type": "GL_ACCOUNT"
            }
          ],
          "all_requirements_met_and_approved": true,
          "amount": 90,
          "attendees": [
            {
              "name": "Jack Johnson",
              "user_id": null
            },
            {
              "name": "Joe Johnson",
              "user_id": "7979392e-8d41-4f97-815b-ccd7584802bf"
            }
          ],
          "card_holder": {
            "department_id": "d471d830-2e73-4082-8a75-68540f83e86e",
            "department_name": "Executive",
            "first_name": "Patrick",
            "last_name": "Robinson",
            "location_id": "4fcf3423-a2e6-42f6-8dd8-9b3a8c51e069",
            "location_name": "San Francisco",
            "user_id": "a26c82c9-6b7d-4022-bc4b-a55b4c4743c7"
          },
          "card_id": "6bc41b14-f853-4862-bae5-4f122f123f6e",
          "currency_code": "USD",
          "disputes": [],
          "entity_amount": {
            "currency": "USD",
            "value": 9000
          },
          "entity_id": "24850cdb-1b3f-4eb9-bf20-967ca9f97605",
          "fund_id": "5e25f547-bd09-40ad-aab3-b8fefdf16885",
          "id": "fd14cd6a-846e-4994-9315-5a59e6bb465f",
          "limit_id": "5e25f547-bd09-40ad-aab3-b8fefdf16885",
          "line_items": [
            {
              "accounting_field_selections": [
                {
                  "category_info": {
                    "external_id": "Subsidiary",
                    "id": "15e9565d-7e73-40d8-9fbc-5f6f89b1c075",
                    "name": "Subsidiary",
                    "type": "SUBSIDIARY"
                  },
                  "display_name": "Ramp BV - EMEA",
                  "external_id": "426",
                  "id": "07b4ce4d-2750-412e-aef4-6b7815f1411a",
                  "name": "Ramp BV",
                  "type": "SUBSIDIARY"
                }
              ],
              "amount": {
                "amount": 5000,
                "currency_code": "USD"
              },
              "converted_amount": {
                "amount": 5000,
                "currency_code": "USD"
              },
              "id": "11111111-1111-1111-1111-111111111111"
            },
            {
              "accounting_field_selections": [
                {
                  "category_info": {
                    "external_id": "Subsidiary",
                    "id": "15e9565d-7e73-40d8-9fbc-5f6f89b1c075",
                    "name": "Subsidiary",
                    "type": "SUBSIDIARY"
                  },
                  "display_name": null,
                  "external_id": "425",
                  "id": "07b4ce4d-2750-412e-aef4-6b7815f1411b",
                  "name": "Ramp LP",
                  "type": "Subsidiary"
                }
              ],
              "amount": {
                "amount": 4000,
                "currency_code": "USD"
              },
              "converted_amount": {
                "amount": 4000,
                "currency_code": "USD"
              }
            }
          ],
          "memo": null,
          "merchant_amount": {
            "currency": "EUR",
            "value": 9000
          },
          "merchant_category_code": null,
          "merchant_category_code_description": null,
          "merchant_data": {
            "auto_rental": null,
            "flight": null,
            "fuel": null,
            "lodging": null,
            "receipt": [
              {
                "commodity_code": null,
                "description": "Vanta Automated Compliance",
                "discount": null,
                "quantity": 1,
                "tax": null,
                "total": 5000,
                "unit_cost": 5000
              },
              {
                "commodity_code": null,
                "description": "Vanta Risk Management",
                "discount": null,
                "quantity": 1,
                "tax": null,
                "total": 4000,
                "unit_cost": 4000
              }
            ],
            "reference": "343165593943"
          },
          "merchant_descriptor": "VANTA",
          "merchant_id": "2907e304-cac2-4abf-84c4-b3b454ae3b8c",
          "merchant_location": {
            "city": "SAN FRANCISCO",
            "country": "USA",
            "postal_code": "941050000",
            "state": "06"
          },
          "merchant_name": "Vanta",
          "network_merchant_id": "1234567890",
          "original_transaction_amount": {
            "amount": 9000,
            "currency_code": "EUR"
          },
          "original_transaction_id": null,
          "policy_violations": [],
          "receipts": [],
          "settlement_date": "2022-05-03T00:00:00+00:00",
          "sk_category_id": "40,41",
          "sk_category_name": "SaaS / Software",
          "spend_program_id": "4a2b8c1e-9f63-4d75-ae12-3b9d47f85e29",
          "state": "CLEARED",
          "synced_at": "2022-05-04T00:00:00+00:00",
          "trip_id": "ec6aae2b-38c6-4eeb-adf0-80f25dbf9aad",
          "trip_name": "Trip to Europe",
          "updated_at": "2022-05-03T00:00:00+00:00",
          "user_transaction_time": "2022-04-28T00:00:00+00:00"
        },
        "properties": {
          "accounting_categories": {
            "deprecated": true,
            "description": "[Deprecated - use accounting_field_selections instead] Accounting categories related to the transaction.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingCategory"
            },
            "readOnly": true,
            "type": "array"
          },
          "accounting_date": {
            "description": "The date for the transaction for accounting purposes, in ISO8601 format. Based on the cleared date, transaction date, or a manually overridden date, depending on your accounting preferences in Ramp.",
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "accounting_field_selections": {
            "description": "List of accounting fields selected to code the transaction.",
            "items": {
              "$ref": "#/components/schemas/ApiTransactionAccountingFieldSelection"
            },
            "type": "array"
          },
          "all_requirements_met_and_approved": {
            "description": "Whether the transaction is fully approved and all cardholder requirements are met, including receipts, memos, and tracking categories.",
            "readOnly": true,
            "type": "boolean"
          },
          "amount": {
            "deprecated": true,
            "description": "Deprecated. Use `entity_amount`.",
            "type": "number"
          },
          "attendees": {
            "description": "List of attendees for the transaction",
            "items": {
              "$ref": "#/components/schemas/ApiTransactionAttendee"
            },
            "type": "array"
          },
          "card_holder": {
            "$ref": "#/components/schemas/ApiTransactionCardHolder",
            "description": "Information about the card holder."
          },
          "card_id": {
            "description": "Identifier of the physical or virtual card associated with the transaction.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "cards",
              "type": "many-to-one"
            }
          },
          "card_present": {
            "description": "Whether the transaction was processed using a card present terminal.",
            "type": "boolean"
          },
          "currency_code": {
            "deprecated": true,
            "description": "Deprecated. Use `entity_amount.currency`.",
            "type": "string"
          },
          "decline_details": {
            "$ref": "#/components/schemas/ApiTransactionDeclineDetails",
            "description": "Details about a transaction decline."
          },
          "disputes": {
            "description": "A list of disputes sorted in descending order by their creation time.",
            "items": {
              "$ref": "#/components/schemas/ApiTransactionDispute"
            },
            "readOnly": true,
            "type": "array"
          },
          "entity_amount": {
            "$ref": "#/components/schemas/ApiSignedAmount",
            "description": "The amount that settled to the entity, in the entity's settlement currency. The value is in the smallest denomination of the currency (e.g. cents for USD) and is signed: refunds and credits can be negative. Null when the transaction has no valid settlement currency recorded.",
            "nullable": true,
            "readOnly": true
          },
          "entity_id": {
            "description": "Unique identifier of business entity associated with the transaction.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "fund_id": {
            "description": "Unique identifier of the fund associated with the transaction. Returns the same value as `limit_id`.",
            "format": "uuid",
            "readOnly": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "funds",
              "type": "many-to-one"
            }
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "limit_id": {
            "deprecated": true,
            "description": "Alias of fund (`fund_id`). Unique identifier of the spend limit associated with the transaction. Returns the same value as `fund_id`.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "limits",
              "type": "many-to-one"
            }
          },
          "line_items": {
            "description": "List of line items related to the transaction.",
            "items": {
              "$ref": "#/components/schemas/ApiTransactionLineItem"
            },
            "type": "array"
          },
          "memo": {
            "nullable": true,
            "type": "string"
          },
          "merchant_amount": {
            "$ref": "#/components/schemas/ApiSignedAmount",
            "description": "The original amount charged by the merchant, in the currency the merchant charged. The value is in the smallest denomination of that currency (e.g. cents) and is signed: refunds and credits can be negative. Equal to `entity_amount` when no currency conversion occurred. Null when the original amount data is unavailable or invalid.",
            "nullable": true,
            "readOnly": true
          },
          "merchant_category_code": {
            "description": "Merchant category code is a four-digit number in ISP 18245 used to classify a business by the types of goods and services it provides.",
            "type": "string"
          },
          "merchant_category_code_description": {
            "description": "Description about the merchant category code.",
            "type": "string"
          },
          "merchant_data": {
            "$ref": "#/components/schemas/ApiTransactionPurchaseData",
            "description": "Purchase data associated related to a transaction provided by the merchant"
          },
          "merchant_descriptor": {
            "description": "A merchant descriptor is the name that appears on a customer's bank statement when they make a purchase from that merchant.",
            "type": "string"
          },
          "merchant_id": {
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "merchants",
              "type": "many-to-one"
            }
          },
          "merchant_location": {
            "$ref": "#/components/schemas/ApiMerchantLocation",
            "description": "Card acceptor data such as country, city, state, and postal code if available.",
            "nullable": true
          },
          "merchant_name": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "minor_unit_conversion_rate": {
            "description": "The conversion factor to convert from the integer amount to the actual currency value. Divide amount by this value to get the real currency amount. For USD, this is 100 (e.g., 12034 / 100 = 120.34 USD).",
            "nullable": true,
            "readOnly": true,
            "type": "integer"
          },
          "network_merchant_id": {
            "description": "Network merchant identifier from the card acceptor.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "original_transaction_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "the original transaction amount before the currency conversion.",
            "nullable": true
          },
          "original_transaction_id": {
            "description": "Original transaction id for refund transactions.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "policy_violations": {
            "description": "A list of policy violations sorted in descending order by their creation time.",
            "items": {
              "$ref": "#/components/schemas/ApiTransactionPolicyViolation"
            },
            "readOnly": true,
            "type": "array"
          },
          "receipt_affidavit": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "receipts": {
            "description": "Receipts listed in ascending order by their creation time, related to the transaction.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "requires_accounting_vendor_creation_to_sync": {
            "description": "Whether the integrator must create an accounting vendor and code it to this transaction before syncing. True when the connection has transaction_accounting_vendor_creation_on_sync_enabled=true and the transaction has no vendor accounting field selection. Omitted when transaction_accounting_vendor_creation_on_sync_enabled=false.",
            "readOnly": true,
            "type": "boolean"
          },
          "settlement_date": {
            "description": "Time when funds were moved for a transaction, in ISO8601 format.",
            "format": "date-time",
            "type": "string"
          },
          "sk_category_id": {
            "description": "Ramp category code.",
            "enum": [
              1,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              2,
              20,
              21,
              23,
              24,
              25,
              26,
              27,
              28,
              29,
              3,
              30,
              31,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              4,
              40,
              41,
              42,
              43,
              44,
              5,
              6,
              7,
              8,
              9
            ],
            "nullable": true,
            "readOnly": true,
            "type": "integer",
            "x-enum-descriptions": {
              "1": "Pet",
              "2": "Other",
              "3": "Office",
              "4": "Airlines",
              "5": "Car rental",
              "6": "Lodging",
              "7": "Travel miscellaneous",
              "8": "Taxi and rideshare",
              "9": "Freight, moving and delivery services",
              "10": "Shipping",
              "11": "Utilities",
              "12": "Office supplies and cleaning",
              "13": "General merchandise",
              "14": "Electronics",
              "15": "Clothing",
              "16": "Books and newspapers",
              "17": "Supermarkets and grocery stores",
              "18": "Fuel and gas",
              "19": "Restaurants",
              "20": "Alcohol and bars",
              "21": "Medical",
              "23": "Fees and financial institutions",
              "24": "Entertainment",
              "25": "Professional services",
              "26": "Taxes and tax preparation",
              "27": "Advertising",
              "28": "Parking",
              "29": "Car services",
              "30": "Gambling",
              "31": "Clubs and memberships",
              "32": "Legal",
              "33": "Education",
              "34": "Charitable donations",
              "35": "Political organizations",
              "36": "Religious organizations",
              "37": "Fines",
              "38": "Government services",
              "39": "Intra-company purchases",
              "40": "SaaS / Software",
              "41": "Cloud computing",
              "42": "Streaming services",
              "43": "Internet and phone",
              "44": "Insurance"
            }
          },
          "sk_category_name": {
            "description": "Ramp category name.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "spend_program_id": {
            "description": "Unique identifier of the spend program from which this limit was issued.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "spend_programs",
              "type": "many-to-one"
            }
          },
          "state": {
            "description": "transaction state.",
            "enum": [
              "ALL",
              "CLEARED",
              "COMPLETION",
              "DECLINED",
              "ERROR",
              "PENDING",
              "PENDING_INITIATION"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ALL": "Special filter value to include all transaction states",
              "CLEARED": "Transaction has been cleared and settled",
              "COMPLETION": "Transaction has completed processing",
              "DECLINED": "Transaction was declined",
              "ERROR": "Transaction encountered an error during processing",
              "PENDING": "Transaction is pending and has not yet cleared",
              "PENDING_INITIATION": "Transaction has not yet been initiated"
            }
          },
          "statement_id": {
            "description": "Statement ID associated with the transaction if one is available.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "statements",
              "type": "many-to-one"
            }
          },
          "sync_status": {
            "enum": [
              "NOT_SYNC_READY",
              "SYNCED",
              "SYNC_READY"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "NOT_SYNC_READY": "The object is missing required accounting setup and is not ready to sync.",
              "SYNCED": "The object has already been synced to the accounting provider.",
              "SYNC_READY": "The object is ready to sync to the accounting provider."
            }
          },
          "synced_at": {
            "description": "Time when transaction has been synced, in ISO8601 format. Will be None if the transaction is not synced.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "trip_id": {
            "description": "Trip ID associated with the transaction if one is available.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "trips",
              "type": "many-to-one"
            }
          },
          "trip_name": {
            "description": "Trip name associated with the transaction if one is available.",
            "nullable": true,
            "type": "string"
          },
          "updated_at": {
            "description": "Approximate transaction updated timestamp used by the `updated_after` filter. Computed as the latest of user transaction time, settlement time, and transaction interaction state update time.",
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "user_transaction_time": {
            "description": "Time when the transaction was created by the user, in ISO8601 format.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "accounting_date",
          "all_requirements_met_and_approved",
          "card_present",
          "entity_amount",
          "entity_id",
          "merchant_amount",
          "merchant_id",
          "merchant_location",
          "minor_unit_conversion_rate",
          "network_merchant_id",
          "original_transaction_amount",
          "original_transaction_id",
          "sk_category_id",
          "sk_category_name",
          "sync_status",
          "synced_at",
          "trip_id",
          "trip_name",
          "updated_at"
        ],
        "type": "object",
        "x-resource-name": "transactions"
      },
      "SourcingEventForProcurementRequestDetail": {
        "properties": {
          "current_rfx": {
            "$ref": "#/components/schemas/RFXForProcurementRequestDetail",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "current_rfx",
          "id",
          "name"
        ],
        "type": "object"
      },
      "SpendAllocationEndDateMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "SPEND_ALLOCATION__END_DATE"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "SpendAllocationEndDateMappedFieldSchema",
        "type": "object"
      },
      "SpendAllocationExpenseAmountLimitMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "SPEND_ALLOCATION__EXPENSE_AMOUNT_LIMIT"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "SpendAllocationExpenseAmountLimitMappedFieldSchema",
        "type": "object"
      },
      "SpendAllocationIsShareableMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "SPEND_ALLOCATION__IS_SHAREABLE"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "SpendAllocationIsShareableMappedFieldSchema",
        "type": "object"
      },
      "SpendAllocationMerchantCategoryRestrictionsAllowListMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "SPEND_ALLOCATION__MERCHANT_CATEGORY_RESTRICTIONS_ALLOWLIST"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "SpendAllocationMerchantCategoryRestrictionsAllowListMappedFieldSchema",
        "type": "object"
      },
      "SpendAllocationMerchantCategoryRestrictionsBlockListMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "SPEND_ALLOCATION__MERCHANT_CATEGORY_RESTRICTIONS_BLOCKLIST"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "SpendAllocationMerchantCategoryRestrictionsBlockListMappedFieldSchema",
        "type": "object"
      },
      "SpendAllocationMerchantCategoryRestrictionsMappedFieldResponseSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "SPEND_ALLOCATION__MERCHANT_CATEGORY_RESTRICTIONS"
            ],
            "title": "Mapped Field",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/CustomFormFieldMappingMetadataRestrictionControlTypeSchema",
            "default": null,
            "nullable": true
          }
        },
        "title": "SpendAllocationMerchantCategoryRestrictionsMappedFieldResponseSchema",
        "type": "object"
      },
      "SpendAllocationMerchantCategoryRestrictionsMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "SPEND_ALLOCATION__MERCHANT_CATEGORY_RESTRICTIONS"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "SpendAllocationMerchantCategoryRestrictionsMappedFieldSchema",
        "type": "object"
      },
      "SpendAllocationMerchantRestrictionsAllowListMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "SPEND_ALLOCATION__MERCHANT_RESTRICTIONS_ALLOWLIST"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "SpendAllocationMerchantRestrictionsAllowListMappedFieldSchema",
        "type": "object"
      },
      "SpendAllocationMerchantRestrictionsBlockListMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "SPEND_ALLOCATION__MERCHANT_RESTRICTIONS_BLOCKLIST"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "SpendAllocationMerchantRestrictionsBlockListMappedFieldSchema",
        "type": "object"
      },
      "SpendAllocationMerchantRestrictionsMappedFieldResponseSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "SPEND_ALLOCATION__MERCHANT_RESTRICTIONS"
            ],
            "title": "Mapped Field",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/CustomFormFieldMappingMetadataRestrictionControlTypeSchema",
            "default": null,
            "nullable": true
          }
        },
        "title": "SpendAllocationMerchantRestrictionsMappedFieldResponseSchema",
        "type": "object"
      },
      "SpendAllocationMerchantRestrictionsMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "SPEND_ALLOCATION__MERCHANT_RESTRICTIONS"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "SpendAllocationMerchantRestrictionsMappedFieldSchema",
        "type": "object"
      },
      "SpendAllocationRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseUnifiedSpendRequestWithAmount"
          },
          {
            "properties": {
              "existing_spend_allocation_id": {
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "existing_spend_request": {
                "$ref": "#/components/schemas/ReducedExistingSpendWithAmountRequest",
                "nullable": true
              },
              "is_shareable": {
                "type": "boolean"
              },
              "issuance_parameters": {
                "$ref": "#/components/schemas/IssuanceParameters",
                "nullable": true,
                "readOnly": true
              },
              "lifecycle_preset": {
                "description": "The request's persisted lifecycle preset, or null when no preset is configured.",
                "enum": [
                  "SINGLE_USE"
                ],
                "nullable": true,
                "type": "string",
                "x-enum-descriptions": {
                  "SINGLE_USE": "The request is for a single-use card."
                }
              },
              "lock_date": {
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "lock_display": {
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "payment_restrictions": {
                "$ref": "#/components/schemas/PaymentRestrictions",
                "nullable": true,
                "readOnly": true
              },
              "post_spend_approval_instance_policy": {
                "$ref": "#/components/schemas/ApprovalPolicyLightSchema",
                "nullable": true,
                "readOnly": true
              },
              "prediction": {
                "$ref": "#/components/schemas/SpendAllocationRequestReviewPrediction",
                "nullable": true,
                "readOnly": true
              },
              "relative_lock_duration_count": {
                "nullable": true,
                "type": "integer"
              },
              "relative_lock_duration_unit": {
                "enum": [
                  "DAYS",
                  "MONTHS",
                  "WEEKS",
                  "YEARS"
                ],
                "nullable": true,
                "type": "string"
              },
              "restricted_request_type": {
                "default": "SPEND_ALLOCATION",
                "enum": [
                  "SPEND_ALLOCATION"
                ],
                "type": "string"
              },
              "resulting_spend_allocation_id": {
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "spend_allocation": {
                "$ref": "#/components/schemas/ReducedSpendAllocation",
                "nullable": true
              },
              "spend_eligibility_starts_at": {
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "spend_request_type": {
                "default": "SPEND_LIMIT",
                "enum": [
                  "SPEND_LIMIT"
                ],
                "type": "string"
              },
              "spending_restrictions": {
                "$ref": "#/components/schemas/SpendAllocationRequestListSpendingRestrictions",
                "readOnly": true
              },
              "travel_metadata": {
                "$ref": "#/components/schemas/TravelSpendRequestMetadata",
                "nullable": true,
                "readOnly": true
              },
              "unified_spend_request_type": {
                "default": "SPEND_ALLOCATION",
                "enum": [
                  "SPEND_ALLOCATION"
                ],
                "type": "string"
              }
            },
            "required": [
              "existing_spend_allocation_id",
              "existing_spend_request",
              "is_shareable",
              "issuance_parameters",
              "lifecycle_preset",
              "lock_display",
              "payment_restrictions",
              "post_spend_approval_instance_policy",
              "prediction",
              "relative_lock_duration_count",
              "relative_lock_duration_unit",
              "restricted_request_type",
              "resulting_spend_allocation_id",
              "spend_allocation",
              "spend_request_type",
              "travel_metadata",
              "unified_spend_request_type"
            ],
            "type": "object"
          }
        ]
      },
      "SpendAllocationRequestAvailableActionsSchema": {
        "properties": {
          "archive": {
            "$ref": "#/components/schemas/SpendRequestActionDetailSchema"
          },
          "edit": {
            "$ref": "#/components/schemas/SpendRequestActionDetailSchema"
          }
        },
        "required": [
          "archive",
          "edit"
        ],
        "title": "SpendAllocationRequestAvailableActionsSchema",
        "type": "object"
      },
      "SpendAllocationRequestDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseUnifiedSpendRequestDetail"
          },
          {
            "$ref": "#/components/schemas/SpendAllocationRequest"
          },
          {
            "properties": {
              "accounting_auto_mark_ready_rule_enabled": {
                "description": "Whether fund transactions are automatically marked ready for accounting.",
                "type": "boolean"
              },
              "accounting_rules": {
                "items": {
                  "$ref": "#/components/schemas/TrackingCategoryOptionMapping"
                },
                "readOnly": true,
                "type": "array"
              },
              "approval_chain_data": {
                "$ref": "#/components/schemas/ApprovalChainData",
                "readOnly": true
              },
              "approval_events": {
                "items": {
                  "$ref": "#/components/schemas/ApprovalEvent"
                },
                "readOnly": true,
                "type": "array"
              },
              "archive_date": {
                "description": "Date when the spend allocation will be automatically archived.",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "available_actions": {
                "$ref": "#/components/schemas/SpendAllocationRequestAvailableActionsSchema",
                "readOnly": true
              },
              "available_actions_v2": {
                "$ref": "#/components/schemas/SpendAllocationSpendRequestAvailableActionsV2Schema",
                "readOnly": true
              },
              "blank_canvas_execution_id": {
                "description": "Blank Canvas execution for this request's approvals, or null.",
                "format": "uuid",
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "default_transaction_memo": {
                "description": "Default memo applied to transactions using the fund.",
                "nullable": true,
                "type": "string"
              },
              "members": {
                "description": "Users currently assigned to the fund.",
                "items": {
                  "$ref": "#/components/schemas/UserDisplay"
                },
                "type": "array"
              },
              "spending_restrictions": {
                "$ref": "#/components/schemas/SpendRequestRequestDataSpendingRestrictions",
                "description": "Current transaction restrictions configured for the fund.",
                "readOnly": true
              },
              "submission_policy_id": {
                "description": "UUID of the fund's transaction submission policy, if configured.",
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "travel_metadata": {
                "$ref": "#/components/schemas/TravelSpendRequestMetadataDetail",
                "nullable": true,
                "readOnly": true
              },
              "trip": {
                "$ref": "#/components/schemas/ReducedTrip",
                "nullable": true,
                "readOnly": true
              }
            },
            "required": [
              "accounting_auto_mark_ready_rule_enabled",
              "accounting_rules",
              "approval_chain_data",
              "approval_events",
              "archive_date",
              "available_actions",
              "available_actions_v2",
              "blank_canvas_execution_id",
              "default_transaction_memo",
              "members",
              "spending_restrictions",
              "submission_policy_id",
              "travel_metadata",
              "trip"
            ],
            "type": "object"
          }
        ]
      },
      "SpendAllocationRequestListSpendingRestrictions": {
        "properties": {
          "interval": {
            "enum": [
              "ANNUAL",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ANNUAL": "The spend limit resets on an annual cycle based on the request or fund start date.",
              "DAILY": "The spend limit resets daily.",
              "MONTHLY": "The spend limit resets monthly.",
              "QUARTERLY": "The spend limit resets every three months.",
              "TERTIARY": "The spend limit resets every four months.",
              "TOTAL": "The spend limit does not reset.",
              "WEEKLY": "The spend limit resets weekly.",
              "YEARLY": "The spend limit resets on the calendar year."
            }
          }
        },
        "required": [
          "interval"
        ],
        "type": "object"
      },
      "SpendAllocationRequestReviewPrediction": {
        "properties": {
          "explanations": {
            "description": "Per-bullet rationale strings explaining the prediction, produced by the policy agent's justification stage. Includes policy-citation-backed bullets and non-policy context bullets. Empty if the prediction predates the justification stage.",
            "items": {
              "type": "string"
            },
            "title": "Explanations",
            "type": "array"
          },
          "feedback": {
            "items": {
              "$ref": "#/components/schemas/SpendAllocationRequestReviewPredictionFeedback"
            },
            "title": "Feedback",
            "type": "array"
          },
          "overall_decision": {
            "title": "Overall Decision",
            "type": "string"
          },
          "prediction_id": {
            "title": "Prediction Id",
            "type": "string"
          },
          "single_sentence_summary": {
            "default": "",
            "deprecated": true,
            "description": "Deprecated: use explanations instead.",
            "title": "Single Sentence Summary",
            "type": "string"
          },
          "system_string_rationale": {
            "deprecated": true,
            "description": "Deprecated: use explanations instead. The single synthesized rationale string from the policy agent's evaluation stage.",
            "title": "System String Rationale",
            "type": "string"
          }
        },
        "required": [
          "overall_decision",
          "prediction_id",
          "system_string_rationale"
        ],
        "title": "SpendAllocationRequestReviewPrediction",
        "type": "object"
      },
      "SpendAllocationRequestReviewPredictionFeedback": {
        "properties": {
          "acting_user_uuid": {
            "title": "Acting User Uuid",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "feedback_comment": {
            "nullable": true,
            "title": "Feedback Comment",
            "type": "string"
          },
          "feedback_type": {
            "$ref": "#/components/schemas/PredictionFeedbackType"
          }
        },
        "required": [
          "acting_user_uuid",
          "created_at",
          "feedback_comment",
          "feedback_type"
        ],
        "title": "SpendAllocationRequestReviewPredictionFeedback",
        "type": "object"
      },
      "SpendAllocationSpendRequestAvailableActionsV2Schema": {
        "properties": {
          "archive": {
            "$ref": "#/components/schemas/ActionDetailSchema_ArchiveDenialReason_"
          },
          "edit_primary_fields": {
            "$ref": "#/components/schemas/ActionDetailSchema_EditPrimaryFieldsDenialReason_"
          }
        },
        "required": [
          "archive",
          "edit_primary_fields"
        ],
        "title": "SpendAllocationSpendRequestAvailableActionsV2Schema",
        "type": "object"
      },
      "SpendAllocationStartDateMappedFieldSchema": {
        "properties": {
          "mapped_field": {
            "enum": [
              "SPEND_ALLOCATION__START_DATE"
            ],
            "title": "Mapped Field",
            "type": "string"
          }
        },
        "required": [
          "mapped_field"
        ],
        "title": "SpendAllocationStartDateMappedFieldSchema",
        "type": "object"
      },
      "SpendIntentAmountQuestionConfig": {
        "properties": {
          "dates_visible_by_default": {
            "default": false,
            "title": "Dates Visible By Default",
            "type": "boolean"
          },
          "description": {
            "default": null,
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "is_end_date_required": {
            "default": false,
            "title": "Is End Date Required",
            "type": "boolean"
          },
          "is_required": {
            "default": true,
            "title": "Is Required",
            "type": "boolean"
          },
          "is_retainage_required": {
            "default": false,
            "description": "Whether every purchase-order line item must provide a retainage value.",
            "title": "Is Retainage Required",
            "type": "boolean"
          },
          "is_start_date_required": {
            "default": false,
            "title": "Is Start Date Required",
            "type": "boolean"
          },
          "retainage_visible_by_default": {
            "default": false,
            "description": "Whether retainage is shown on purchase-order line items by default.",
            "title": "Retainage Visible By Default",
            "type": "boolean"
          },
          "should_show_question": {
            "default": true,
            "title": "Should Show Question",
            "type": "boolean"
          },
          "title": {
            "default": "How much?",
            "title": "Title",
            "type": "string"
          },
          "uses_line_items": {
            "default": true,
            "title": "Uses Line Items",
            "type": "boolean"
          }
        },
        "title": "SpendIntentAmountQuestionConfig",
        "type": "object"
      },
      "SpendIntentApiSpendingRestrictionsDump": {
        "properties": {
          "allowed_categories": {
            "description": "List of Ramp category codes allowed for the limit.",
            "items": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            },
            "type": "array"
          },
          "allowed_vendors": {
            "description": "List of merchants allowed for the limit.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "merchants",
                "type": "many-to-many"
              }
            },
            "type": "array"
          },
          "auto_lock_date": {
            "description": "Date to automatically to lock the limit.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "blocked_categories": {
            "description": "List of Ramp category codes blocked for the limit.",
            "items": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            },
            "type": "array"
          },
          "blocked_vendors": {
            "description": "List of merchants  blocked for the limit.",
            "items": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "merchants",
                "type": "many-to-many"
              }
            },
            "type": "array"
          },
          "interval": {
            "description": "Time interval the limit is applied on.",
            "enum": [
              "ANNUAL",
              "CUSTOM",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string"
          },
          "limit": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount limit total per interval denominated in the smallest currency unit (e.g. cents for USD).",
            "nullable": true,
            "readOnly": true
          },
          "next_interval_reset": {
            "description": "Date and time for the next interval reset.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "start_of_interval": {
            "description": "Date and time for the start of the current interval.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "temporary_limit": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Temporary limit total per interval.",
            "nullable": true,
            "readOnly": true
          },
          "transaction_amount_limit": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Max amount allowed on a single transaction.",
            "nullable": true,
            "readOnly": true
          }
        },
        "required": [
          "allowed_categories",
          "allowed_vendors",
          "auto_lock_date",
          "blocked_categories",
          "blocked_vendors",
          "interval",
          "limit",
          "next_interval_reset",
          "start_of_interval",
          "temporary_limit",
          "transaction_amount_limit"
        ],
        "type": "object"
      },
      "SpendIntentConfigSnapshot": {
        "description": "Snapshot of spend intent config at SpendRequest creation time.\n\nStored on SpendRequest to pin creation-time config, preventing later\nprogram changes from retroactively affecting existing requests.",
        "properties": {
          "purchase_order": {
            "$ref": "#/components/schemas/PurchaseOrderConfigSnapshot",
            "default": null,
            "nullable": true
          }
        },
        "title": "SpendIntentConfigSnapshot",
        "type": "object"
      },
      "SpendIntentDefaultQuestionConfigSummary": {
        "properties": {
          "amount_config": {
            "$ref": "#/components/schemas/SpendIntentAmountQuestionConfig",
            "default": {
              "dates_visible_by_default": false,
              "description": null,
              "is_end_date_required": false,
              "is_required": true,
              "is_retainage_required": false,
              "is_start_date_required": false,
              "retainage_visible_by_default": false,
              "should_show_question": true,
              "title": "How much?",
              "uses_line_items": true
            }
          },
          "estimated_amount_config": {
            "$ref": "#/components/schemas/SpendIntentEstimatedAmountQuestionConfig",
            "default": {
              "description": null,
              "is_required": false,
              "should_show_question": true,
              "title": "Let admins know total may be lower based on usage"
            },
            "description": "Question asking whether the request total is an estimated maximum."
          },
          "frequency_config": {
            "$ref": "#/components/schemas/SpendIntentFrequencyQuestionConfig",
            "default": {
              "description": null,
              "is_required": true,
              "should_show_frequency": true,
              "should_show_question": true,
              "title": "Is it one-time or recurring?"
            }
          },
          "funds_config": {
            "$ref": "#/components/schemas/SpendIntentFundsQuestionConfig",
            "default": {
              "description": null,
              "is_required": false,
              "should_show_question": false,
              "title": "Would you like to pay for this with a virtual card?"
            }
          },
          "multiple_purchase_orders_config": {
            "$ref": "#/components/schemas/SpendIntentMultiplePurchaseOrdersQuestionConfig",
            "default": {
              "description": null,
              "is_required": false,
              "should_show_question": true,
              "title": "Create multiple child POs for this PO"
            },
            "description": "Question asking whether the order needs multiple purchase orders."
          },
          "request_name_config": {
            "$ref": "#/components/schemas/SpendIntentRequestNameQuestionConfig",
            "default": {
              "description": null,
              "is_required": false,
              "should_show_question": false,
              "title": "Request name"
            }
          }
        },
        "title": "SpendIntentDefaultQuestionConfigSummary",
        "type": "object"
      },
      "SpendIntentEstimatedAmountQuestionConfig": {
        "description": "Lets the requester mark the total as an estimated maximum. Not configurable in\nprogram setup; only shown when the program uses line items.",
        "properties": {
          "description": {
            "default": null,
            "description": "Optional help text shown under the question.",
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "is_required": {
            "default": false,
            "description": "Whether the requester must answer the question.",
            "title": "Is Required",
            "type": "boolean"
          },
          "should_show_question": {
            "default": true,
            "description": "Whether the request form shows the estimated maximum question.",
            "title": "Should Show Question",
            "type": "boolean"
          },
          "title": {
            "default": "Let admins know total may be lower based on usage",
            "description": "Question title shown on the request form.",
            "title": "Title",
            "type": "string"
          }
        },
        "title": "SpendIntentEstimatedAmountQuestionConfig",
        "type": "object"
      },
      "SpendIntentFrequencyQuestionConfig": {
        "properties": {
          "description": {
            "default": null,
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "is_required": {
            "default": true,
            "title": "Is Required",
            "type": "boolean"
          },
          "should_show_frequency": {
            "default": true,
            "title": "Should Show Frequency",
            "type": "boolean"
          },
          "should_show_question": {
            "default": true,
            "title": "Should Show Question",
            "type": "boolean"
          },
          "title": {
            "default": "Is it one-time or recurring?",
            "title": "Title",
            "type": "string"
          }
        },
        "title": "SpendIntentFrequencyQuestionConfig",
        "type": "object"
      },
      "SpendIntentFundsQuestionConfig": {
        "properties": {
          "description": {
            "default": null,
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "is_required": {
            "default": false,
            "title": "Is Required",
            "type": "boolean"
          },
          "should_show_question": {
            "default": false,
            "title": "Should Show Question",
            "type": "boolean"
          },
          "title": {
            "default": "Would you like to pay for this with a virtual card?",
            "title": "Title",
            "type": "string"
          }
        },
        "title": "SpendIntentFundsQuestionConfig",
        "type": "object"
      },
      "SpendIntentMultiplePurchaseOrdersQuestionConfig": {
        "description": "Lets the requester ask for a blanket PO with child POs. Not configurable in\nprogram setup; only shown when the program uses line items and blanket POs are\nenabled for the business.",
        "properties": {
          "description": {
            "default": null,
            "description": "Optional help text shown under the question.",
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "is_required": {
            "default": false,
            "description": "Whether the requester must answer the question.",
            "title": "Is Required",
            "type": "boolean"
          },
          "should_show_question": {
            "default": true,
            "description": "Whether the request form shows the multiple purchase orders question.",
            "title": "Should Show Question",
            "type": "boolean"
          },
          "title": {
            "default": "Create multiple child POs for this PO",
            "description": "Question title shown on the request form.",
            "title": "Title",
            "type": "string"
          }
        },
        "title": "SpendIntentMultiplePurchaseOrdersQuestionConfig",
        "type": "object"
      },
      "SpendIntentRequestNameQuestionConfig": {
        "properties": {
          "description": {
            "default": null,
            "nullable": true,
            "title": "Description",
            "type": "string"
          },
          "is_required": {
            "default": false,
            "title": "Is Required",
            "type": "boolean"
          },
          "should_show_question": {
            "default": false,
            "title": "Should Show Question",
            "type": "boolean"
          },
          "title": {
            "default": "Request name",
            "title": "Title",
            "type": "string"
          }
        },
        "title": "SpendIntentRequestNameQuestionConfig",
        "type": "object"
      },
      "SpendLimitAccountingRulesDataRequestBody": {
        "properties": {
          "field_id": {
            "description": "UUID of the accounting field",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_fields",
              "type": "many-to-one"
            }
          },
          "field_option_id": {
            "description": "UUID of the accounting field selection",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "custom_field_options",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "field_id",
          "field_option_id"
        ],
        "type": "object"
      },
      "SpendRequestAISummary": {
        "description": "SpendRequest.ai_summary_data",
        "properties": {
          "generated_at": {
            "default": null,
            "description": "When this summary was generated; None for summaries persisted before this field existed",
            "format": "date-time",
            "nullable": true,
            "title": "Generated At",
            "type": "string"
          },
          "span_id": {
            "default": null,
            "description": "The span ID of the spend request",
            "nullable": true,
            "title": "Span Id",
            "type": "string"
          },
          "summary": {
            "default": null,
            "description": "The overall summary of the spend request",
            "nullable": true,
            "title": "Summary",
            "type": "string"
          },
          "takeaways": {
            "default": null,
            "description": "Up to 5 takeaways from the spend request",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "title": "Takeaways",
            "type": "array"
          },
          "title": {
            "default": null,
            "description": "The title of the spend request",
            "nullable": true,
            "title": "Title",
            "type": "string"
          }
        },
        "title": "SpendRequestAISummary",
        "type": "object"
      },
      "SpendRequestActionDetailSchema": {
        "deprecated": true,
        "properties": {
          "can_perform": {
            "title": "Can Perform",
            "type": "boolean"
          },
          "denial_reason": {
            "nullable": true,
            "title": "Denial Reason",
            "type": "string"
          }
        },
        "required": [
          "can_perform",
          "denial_reason"
        ],
        "title": "SpendRequestActionDetailSchema",
        "type": "object"
      },
      "SpendRequestDocumentTypeRequestBody": {
        "description": "Represents the type of the document.\n\n- SPEND_REQUEST: Document that is tied to the request\n- PURCHASE_ORDER: Document that is tied to the Purchase Order and will be included\n  in the generated Purchase Order PDF",
        "enum": [
          "PURCHASE_ORDER",
          "SPEND_REQUEST"
        ],
        "title": "SpendRequestDocumentType",
        "type": "string",
        "x-enum-descriptions": {
          "PURCHASE_ORDER": "Attached to the purchase order and included in the PO PDF sent to the vendor.",
          "SPEND_REQUEST": "Supporting document on the request; not shared with the vendor."
        }
      },
      "SpendRequestForms": {
        "properties": {
          "global_form_response_statuses": {
            "items": {
              "$ref": "#/components/schemas/GlobalFormResponseStatusDumpSchema"
            },
            "readOnly": true,
            "type": "array"
          },
          "vendor_onboarding": {
            "items": {
              "items": {
                "$ref": "#/components/schemas/VendorOnboardingStatusDump"
              },
              "type": "array"
            },
            "readOnly": true,
            "type": "array"
          },
          "vendor_onboarding_statuses": {
            "items": {
              "$ref": "#/components/schemas/VendorOnboardingStatusDump"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "required": [
          "global_form_response_statuses",
          "vendor_onboarding",
          "vendor_onboarding_statuses"
        ],
        "type": "object"
      },
      "SpendRequestFrequency": {
        "properties": {
          "data": {
            "type": "integer"
          },
          "frequency": {
            "enum": [
              "ANNUAL",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ANNUAL": "The spend limit resets on an annual cycle based on the request or fund start date.",
              "DAILY": "The spend limit resets daily.",
              "MONTHLY": "The spend limit resets monthly.",
              "QUARTERLY": "The spend limit resets every three months.",
              "TERTIARY": "The spend limit resets every four months.",
              "TOTAL": "The spend limit does not reset.",
              "WEEKLY": "The spend limit resets weekly.",
              "YEARLY": "The spend limit resets on the calendar year."
            }
          }
        },
        "required": [
          "frequency"
        ],
        "type": "object"
      },
      "SpendRequestRequestDataSpendingRestrictions": {
        "properties": {
          "amount": {
            "type": "number"
          },
          "amount_details": {
            "$ref": "#/components/schemas/Money",
            "nullable": true,
            "readOnly": true
          },
          "categories_blacklist": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "categories_whitelist": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "currency": {
            "$ref": "#/components/schemas/CurrencyDetails"
          },
          "interval": {
            "enum": [
              "ANNUAL",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ANNUAL": "The spend limit resets on an annual cycle based on the request or fund start date.",
              "DAILY": "The spend limit resets daily.",
              "MONTHLY": "The spend limit resets monthly.",
              "QUARTERLY": "The spend limit resets every three months.",
              "TERTIARY": "The spend limit resets every four months.",
              "TOTAL": "The spend limit does not reset.",
              "WEEKLY": "The spend limit resets weekly.",
              "YEARLY": "The spend limit resets on the calendar year."
            }
          },
          "lock_date": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "lock_display": {
            "nullable": true,
            "type": "string"
          },
          "relative_lock_duration_count": {
            "nullable": true,
            "type": "integer"
          },
          "relative_lock_duration_unit": {
            "enum": [
              "DAYS",
              "MONTHS",
              "WEEKS",
              "YEARS"
            ],
            "nullable": true,
            "type": "string"
          },
          "start_date": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "transaction_amount_limit": {
            "nullable": true,
            "type": "number"
          },
          "vendor_blacklist": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "vendor_whitelist": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          }
        },
        "required": [
          "amount_details",
          "interval"
        ],
        "type": "object"
      },
      "SpendRequestSavingResponse": {
        "description": "Response for a single SpendRequestSaving",
        "properties": {
          "amount_saved": {
            "title": "Amount Saved",
            "type": "number"
          },
          "attributed_users": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/AttributedUserResponse"
            },
            "title": "Attributed Users",
            "type": "array"
          },
          "comment": {
            "title": "Comment",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "amount_saved",
          "comment",
          "created_at",
          "id",
          "type",
          "updated_at"
        ],
        "title": "SpendRequestSavingResponse",
        "type": "object"
      },
      "SpendRequestSendBackResolution": {
        "enum": [
          "RESOLVED",
          "RETURNED",
          "SKIPPED"
        ],
        "title": "SpendRequestSendBackResolution",
        "type": "string",
        "x-enum-descriptions": {
          "RESOLVED": "An admin resolved the send-back on the assignee's behalf.",
          "RETURNED": "The assignee returned the request.",
          "SKIPPED": "The step was skipped or the workflow ended before a return."
        }
      },
      "SpendRequestSendBackStatus": {
        "description": "Lifecycle status for a procurement send-back cycle.",
        "enum": [
          "ACTIVE",
          "CANCELED",
          "RETURNED"
        ],
        "title": "SpendRequestSendBackStatus",
        "type": "string",
        "x-enum-descriptions": {
          "ACTIVE": "The assignee has not returned the request yet.",
          "CANCELED": "The send-back was resolved or canceled without a return.",
          "RETURNED": "The assignee returned the request to the workflow."
        }
      },
      "SpendRequestTask": {
        "discriminator": {
          "mapping": {
            "GLOBAL_FORM_RESPONSE": "#/components/schemas/GlobalFormResponseNodeTask",
            "LAUNCH_ESIGN_WORKFLOW": "#/components/schemas/ESignNodeTask",
            "LAUNCH_THIRD_PARTY_RISK_MANAGEMENT_VENDOR_REVIEW_WORKFLOW": "#/components/schemas/ThirdPartyRiskManagementVendorReviewTask",
            "ticket": "#/components/schemas/SpendRequestTicketTask"
          },
          "propertyName": "task_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ESignNodeTask"
          },
          {
            "$ref": "#/components/schemas/GlobalFormResponseNodeTask"
          },
          {
            "$ref": "#/components/schemas/SpendRequestTicketTask"
          },
          {
            "$ref": "#/components/schemas/ThirdPartyRiskManagementVendorReviewTask"
          }
        ],
        "title": "SpendRequestTask"
      },
      "SpendRequestTicketTask": {
        "description": "A ticket task associated with a spend request.",
        "properties": {
          "content": {
            "description": "Description describing what the ticket is about",
            "title": "Content",
            "type": "string"
          },
          "due_at": {
            "default": null,
            "description": "Due date for the ticket",
            "format": "date-time",
            "nullable": true,
            "title": "Due At",
            "type": "string"
          },
          "halt_reason": {
            "default": null,
            "description": "Human-readable reason why the workflow agent halted (for workflow agent tickets only)",
            "nullable": true,
            "title": "Halt Reason",
            "type": "string"
          },
          "node_title": {
            "nullable": true,
            "title": "Node Title",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/TicketStatus",
            "default": null,
            "description": "Current status of the ticket",
            "nullable": true
          },
          "submitted_at": {
            "format": "date-time",
            "title": "Submitted At",
            "type": "string"
          },
          "task_type": {
            "enum": [
              "ticket"
            ],
            "title": "Task Type",
            "type": "string"
          },
          "ticket_uuid": {
            "format": "uuid",
            "title": "Ticket Uuid",
            "type": "string"
          }
        },
        "required": [
          "content",
          "node_title",
          "submitted_at",
          "task_type",
          "ticket_uuid"
        ],
        "title": "SpendRequestTicketTask",
        "type": "object"
      },
      "StateObjectListReference": {
        "properties": {
          "display": {
            "readOnly": true,
            "type": "string"
          },
          "mask": {
            "enum": [
              "CURRENCY",
              "DAY",
              "PERCENTAGE"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "object_list_type": {
            "readOnly": true,
            "type": "string"
          },
          "operand_type": {
            "enum": [
              "STATE_OBJECT_LIST_REFERENCE"
            ],
            "type": "string"
          },
          "variable_name": {
            "type": "string"
          }
        },
        "required": [
          "display",
          "object_list_type",
          "operand_type",
          "variable_name"
        ],
        "type": "object"
      },
      "StateObjectReference": {
        "properties": {
          "display": {
            "readOnly": true,
            "type": "string"
          },
          "mask": {
            "enum": [
              "CURRENCY",
              "DAY",
              "PERCENTAGE"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "object_type": {
            "readOnly": true,
            "type": "string"
          },
          "operand_type": {
            "enum": [
              "STATE_OBJECT_REFERENCE"
            ],
            "type": "string"
          },
          "variable_name": {
            "type": "string"
          }
        },
        "required": [
          "display",
          "object_type",
          "operand_type",
          "variable_name"
        ],
        "type": "object"
      },
      "StateReference": {
        "properties": {
          "child_type": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "display": {
            "readOnly": true,
            "type": "string"
          },
          "mask": {
            "enum": [
              "CURRENCY",
              "DAY",
              "PERCENTAGE"
            ],
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "operand_type": {
            "enum": [
              "STATE_REFERENCE"
            ],
            "type": "string"
          },
          "type": {
            "enum": [
              "ARRAY",
              "BOOL",
              "INT",
              "JSONB",
              "NUMERIC",
              "STR"
            ],
            "readOnly": true,
            "type": "string"
          },
          "variable_name": {
            "type": "string"
          }
        },
        "required": [
          "display",
          "operand_type",
          "variable_name"
        ],
        "type": "object"
      },
      "Statement": {
        "example": {
          "balance_sections": [
            {
              "charges": {
                "amount": 180061925,
                "currency_code": "USD"
              },
              "credits": {
                "amount": 0,
                "currency_code": "USD"
              },
              "ending_balance": {
                "amount": 178098867,
                "currency_code": "USD"
              },
              "entity_id": "9d8abf0f-389c-4a18-816e-a6e1c5784624",
              "id": "6ff695fd-b09b-4529-a622-545d6c059129",
              "opening_balance": {
                "amount": 0,
                "currency_code": "USD"
              },
              "payments": {
                "amount": 1963058,
                "currency_code": "USD"
              }
            }
          ],
          "charges": {
            "amount": 180061925,
            "currency_code": "USD"
          },
          "credits": {
            "amount": 0,
            "currency_code": "USD"
          },
          "end_date": "2023-05-08T08:39:37+00:00",
          "ending_balance": {
            "amount": 178098867,
            "currency_code": "USD"
          },
          "id": "df44006c-410b-420e-80a2-1522a2e5b722",
          "opening_balance": {
            "amount": 0,
            "currency_code": "USD"
          },
          "payments": {
            "amount": 1963058,
            "currency_code": "USD"
          },
          "start_date": "2023-05-06T08:51:57+00:00",
          "statement_lines": [
            {
              "id": "06a09605-b0b8-4c89-b29f-d12c6aabac58",
              "type": "CARD_TRANSACTION"
            },
            {
              "id": "0f01bc2d-04cf-407a-8442-bcbdaf1c07f8",
              "type": "CARD_TRANSACTION"
            },
            {
              "id": "2682717d-8231-46f2-9e02-c0f4f7ef410a",
              "type": "TRANSFER_PAYMENT"
            },
            {
              "id": "415fe9fb-1608-4cd6-ac8b-d2fbb85bdc11",
              "type": "CARD_TRANSACTION"
            },
            {
              "id": "4c7700b6-1ff9-4228-9b13-73b38d5a7623",
              "type": "CARD_TRANSACTION"
            },
            {
              "id": "61b89311-f0b3-4689-91ee-8edb72054de4",
              "type": "CARD_TRANSACTION"
            },
            {
              "id": "78c9eac8-67ae-443d-998a-f416e959225c",
              "type": "CASHBACK"
            },
            {
              "id": "af87a6bd-929a-4de6-85f3-0105a046a608",
              "type": "CARD_TRANSACTION"
            }
          ],
          "statement_url": "https://customer-documents.ramp.com/card_statement/business_00000000-0000-4000-8000-000000000000/20230508_11111111-1111-7111-8111-111111111111.pdf?response-content-disposition=attachment%3B+filename%3D%222023-05-06-my-widget-store-overview.pdf%22&Expires=1704717900&Signature=EXAMPLESIGNATURE__&Key-Pair-Id=K1EXAMPLEKEYID&Hash-Algorithm=SHA256"
        },
        "properties": {
          "balance_sections": {
            "description": "Breakdown of statement balances by entity and currency.",
            "items": {
              "$ref": "#/components/schemas/StatementBalanceSection"
            },
            "type": "array"
          },
          "charges": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "deprecated": true,
            "description": "Total charges incurred during the statement period"
          },
          "credits": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "deprecated": true,
            "description": "Total credits accumulated during the statement period"
          },
          "end_date": {
            "description": "End date of the statement period.",
            "format": "date-time",
            "type": "string"
          },
          "ending_balance": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "deprecated": true,
            "description": "Balance at the end of the statement period"
          },
          "id": {
            "description": "Unique identifier for the statement.",
            "format": "uuid",
            "type": "string"
          },
          "opening_balance": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "deprecated": true,
            "description": "Balance at the beginning of the statement period"
          },
          "payments": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "deprecated": true,
            "description": "Total payments made during the statement period"
          },
          "preceding_statement_id": {
            "description": "Identifier of the previous statement in sequence.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "statements",
              "type": "one-to-one"
            }
          },
          "start_date": {
            "description": "Start date of the statement period.",
            "format": "date-time",
            "type": "string"
          },
          "statement_lines": {
            "description": "Financial activities including card transactions, transfers, and cashbacks during the statement period.",
            "items": {
              "$ref": "#/components/schemas/ApiStatementItem"
            },
            "type": "array"
          },
          "statement_url": {
            "description": "Pre-signed URL to download statement PDF, valid for 1 hour after generation.",
            "format": "url",
            "type": "string"
          }
        },
        "required": [
          "balance_sections",
          "charges",
          "credits",
          "end_date",
          "ending_balance",
          "id",
          "opening_balance",
          "payments",
          "start_date",
          "statement_lines"
        ],
        "type": "object",
        "x-resource-name": "statements"
      },
      "StatementBalanceSection": {
        "properties": {
          "charges": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total charges incurred during the statement period."
          },
          "credits": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total credits accumulated during the statement period."
          },
          "ending_balance": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Balance at the end of the statement period."
          },
          "entity_id": {
            "description": "Business entity this balance section belongs to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "id": {
            "description": "Unique identifier for the balance section.",
            "format": "uuid",
            "type": "string"
          },
          "opening_balance": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Balance at the beginning of the statement period."
          },
          "payments": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total payments made during the statement period."
          }
        },
        "required": [
          "charges",
          "credits",
          "ending_balance",
          "entity_id",
          "id",
          "opening_balance",
          "payments"
        ],
        "type": "object"
      },
      "StaticValue": {
        "properties": {
          "operand_type": {
            "enum": [
              "STATIC_VALUE"
            ],
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/TypedValue"
          }
        },
        "required": [
          "operand_type",
          "value"
        ],
        "type": "object"
      },
      "StrValue": {
        "properties": {
          "child_type": {
            "nullable": true,
            "type": "string"
          },
          "type": {
            "enum": [
              "STR"
            ],
            "type": "string"
          },
          "value": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "StringValueSchema": {
        "properties": {
          "value": {
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "value"
        ],
        "title": "StringValueSchema",
        "type": "object"
      },
      "TaxCodeOption": {
        "example": {
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "id": "tax_code_001",
          "name": "Standard Tax",
          "tax_rate_ids": [
            "tax_rate_001",
            "tax_rate_002"
          ]
        },
        "properties": {
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities created through POST /developer/v1/accounting/entities that this tax code option should be available for. Omit this field to make the option available for all connected entities on accounting connections with entity selection enabled.",
            "items": {
              "minLength": 1,
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "id": {
            "description": "The external ID of the tax code option. This is the ID in your ERP system.",
            "type": "string"
          },
          "name": {
            "description": "The name of the tax code option.",
            "type": "string"
          },
          "tax_rate_ids": {
            "description": "A list of external tax rate IDs (remote_id values) to associate with this tax code option.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "TaxRate": {
        "example": {
          "accounting_gl_account_id": "46910cc3-ab41-4b80-b4a7-94dab9f1b795",
          "id": "tax_rate_gst_5",
          "name": "GST",
          "rate": "0.05"
        },
        "properties": {
          "accounting_gl_account_id": {
            "description": "The Ramp ID (ramp_id) of the GL account associated with this tax rate. This is required if the accounting connection is API-based.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "ramp_id",
              "target_resource": "gl_accounts",
              "type": "many-to-one"
            }
          },
          "id": {
            "description": "Remote/external ID of the tax rate from your ERP system.",
            "type": "string"
          },
          "name": {
            "description": "Name of the tax rate.",
            "type": "string"
          },
          "rate": {
            "description": "The tax rate percentage expressed as a decimal (e.g. 0.10 for 10%).",
            "oneOf": [
              {
                "format": "decimal",
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "rate"
        ],
        "type": "object"
      },
      "TerminatedActionUpdateRequestBody": {
        "properties": {
          "type": {
            "description": "Marks the agreement as terminated.",
            "enum": [
              "TERMINATED"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "title": "TerminatedActionUpdate",
        "type": "object"
      },
      "TextCellContentsForDisplay": {
        "properties": {
          "display_name": {
            "type": "string"
          },
          "type": {
            "enum": [
              "text"
            ],
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "display_name",
          "type",
          "value"
        ],
        "type": "object"
      },
      "ThirdPartyRiskManagementAPIError": {
        "properties": {
          "error_message": {
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "API_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "$ref": "#/components/schemas/ThirdPartyRiskManagementProviderType"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "ThirdPartyRiskManagementAPIError",
        "type": "object"
      },
      "ThirdPartyRiskManagementAuthenticationError": {
        "properties": {
          "error_message": {
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "AUTHENTICATION_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "$ref": "#/components/schemas/ThirdPartyRiskManagementProviderType"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "ThirdPartyRiskManagementAuthenticationError",
        "type": "object"
      },
      "ThirdPartyRiskManagementProviderNotConfiguredError": {
        "properties": {
          "error_message": {
            "default": null,
            "nullable": true,
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "PROVIDER_NOT_CONFIGURED"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "$ref": "#/components/schemas/ThirdPartyRiskManagementProviderType"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "ThirdPartyRiskManagementProviderNotConfiguredError",
        "type": "object"
      },
      "ThirdPartyRiskManagementProviderType": {
        "enum": [
          "ARAVO",
          "DRATA",
          "LOGICGATE",
          "ONETRUST",
          "VANTA"
        ],
        "title": "ThirdPartyRiskManagementProviderType",
        "type": "string"
      },
      "ThirdPartyRiskManagementReviewStatus": {
        "enum": [
          "APPROVED",
          "CLOSED",
          "CONDITIONALLY_APPROVED",
          "PENDING_REVIEW_REQUEST_COMPLETION",
          "PENDING_REVIEW_REQUEST_START",
          "PRE_APPROVED",
          "PRE_CONDITIONALLY_APPROVED",
          "PRE_REJECTED",
          "REJECTED",
          "REVIEW_REQUESTED",
          "SKIPPED"
        ],
        "title": "ThirdPartyRiskManagementReviewStatus",
        "type": "string"
      },
      "ThirdPartyRiskManagementTriggerEntityMetadataError": {
        "properties": {
          "error": {
            "discriminator": {
              "mapping": {
                "API_ERROR": "#/components/schemas/ThirdPartyRiskManagementAPIError",
                "ARAVO_MULTIPLE_REPORT_ERROR": "#/components/schemas/AravoMultipleReportError",
                "AUTHENTICATION_ERROR": "#/components/schemas/ThirdPartyRiskManagementAuthenticationError",
                "FALLBACK_ERROR": "#/components/schemas/FallbackThirdPartyRiskManagementTriggerEntityError",
                "PROVIDER_NOT_CONFIGURED": "#/components/schemas/ThirdPartyRiskManagementProviderNotConfiguredError"
              },
              "propertyName": "error_type"
            },
            "oneOf": [
              {
                "$ref": "#/components/schemas/AravoMultipleReportError"
              },
              {
                "$ref": "#/components/schemas/FallbackThirdPartyRiskManagementTriggerEntityError"
              },
              {
                "$ref": "#/components/schemas/ThirdPartyRiskManagementAPIError"
              },
              {
                "$ref": "#/components/schemas/ThirdPartyRiskManagementAuthenticationError"
              },
              {
                "$ref": "#/components/schemas/ThirdPartyRiskManagementProviderNotConfiguredError"
              }
            ],
            "title": "Error"
          },
          "trigger_type": {
            "default": "LAUNCH_THIRD_PARTY_RISK_MANAGEMENT_VENDOR_REVIEW_WORKFLOW",
            "enum": [
              "LAUNCH_THIRD_PARTY_RISK_MANAGEMENT_VENDOR_REVIEW_WORKFLOW"
            ],
            "title": "Trigger Type",
            "type": "string"
          }
        },
        "required": [
          "error",
          "trigger_type"
        ],
        "title": "ThirdPartyRiskManagementTriggerEntityMetadataError",
        "type": "object"
      },
      "ThirdPartyRiskManagementVendorReviewTask": {
        "properties": {
          "due_date": {
            "default": null,
            "description": "Due date for the vendor review",
            "format": "date-time",
            "nullable": true,
            "title": "Due Date",
            "type": "string"
          },
          "external_review_link": {
            "description": "External link to the vendor review in the TPRM provider",
            "title": "External Review Link",
            "type": "string"
          },
          "node_title": {
            "nullable": true,
            "title": "Node Title",
            "type": "string"
          },
          "provider_type": {
            "$ref": "#/components/schemas/ThirdPartyRiskManagementProviderType",
            "description": "The TPRM provider type (e.g., Vanta)"
          },
          "submitted_at": {
            "format": "date-time",
            "title": "Submitted At",
            "type": "string"
          },
          "task_type": {
            "enum": [
              "LAUNCH_THIRD_PARTY_RISK_MANAGEMENT_VENDOR_REVIEW_WORKFLOW"
            ],
            "title": "Task Type",
            "type": "string"
          },
          "vendor_review_id": {
            "description": "UUID of the vendor review",
            "title": "Vendor Review Id",
            "type": "string"
          }
        },
        "required": [
          "external_review_link",
          "node_title",
          "provider_type",
          "submitted_at",
          "task_type",
          "vendor_review_id"
        ],
        "title": "ThirdPartyRiskManagementVendorReviewTask",
        "type": "object"
      },
      "ThirdPartyRiskManagementVendorReviewTriggerEntityMetadata": {
        "properties": {
          "due_date": {
            "default": null,
            "nullable": true,
            "title": "Due Date",
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/ThirdPartyRiskManagementTriggerEntityMetadataError",
            "default": null,
            "nullable": true
          },
          "external_review_link": {
            "default": null,
            "nullable": true,
            "title": "External Review Link",
            "type": "string"
          },
          "provider_type": {
            "$ref": "#/components/schemas/ThirdPartyRiskManagementProviderType",
            "default": null,
            "nullable": true
          },
          "review_id": {
            "default": null,
            "nullable": true,
            "title": "Review Id",
            "type": "string"
          },
          "review_status": {
            "$ref": "#/components/schemas/ThirdPartyRiskManagementReviewStatus",
            "default": null,
            "nullable": true
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/ThirdPartyRiskManagementVendorReviewTriggerEntityWorkflowStep"
            },
            "title": "Steps",
            "type": "array"
          },
          "trigger_type": {
            "enum": [
              "LAUNCH_THIRD_PARTY_RISK_MANAGEMENT_VENDOR_REVIEW_WORKFLOW"
            ],
            "title": "Trigger Type",
            "type": "string"
          }
        },
        "required": [
          "steps"
        ],
        "title": "ThirdPartyRiskManagementVendorReviewTriggerEntityMetadata",
        "type": "object"
      },
      "ThirdPartyRiskManagementVendorReviewTriggerEntityWorkflowStep": {
        "description": "A single step in the TPRM vendor review workflow.\n\nSteps are provider-specific and decoupled from the review status enum,\nallowing each provider to define custom workflow progression.",
        "properties": {
          "display_text": {
            "title": "Display Text",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/ApprovalEntityStatus"
          }
        },
        "required": [
          "display_text",
          "status"
        ],
        "title": "ThirdPartyRiskManagementVendorReviewTriggerEntityWorkflowStep",
        "type": "object"
      },
      "TicketAssignee": {
        "properties": {
          "display_name": {
            "default": null,
            "nullable": true,
            "title": "Display Name",
            "type": "string"
          },
          "email": {
            "default": null,
            "nullable": true,
            "title": "Email",
            "type": "string"
          }
        },
        "title": "TicketAssignee",
        "type": "object"
      },
      "TicketStatus": {
        "enum": [
          "blocked",
          "canceled",
          "completed",
          "in_progress",
          "in_review",
          "todo",
          "waiting_on_assignee"
        ],
        "title": "TicketStatus",
        "type": "string"
      },
      "TicketingAPIError": {
        "properties": {
          "collection_id": {
            "default": null,
            "nullable": true,
            "title": "Collection Id",
            "type": "string"
          },
          "error_message": {
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "API_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "collection_id",
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "TicketingAPIError",
        "type": "object"
      },
      "TicketingAuthenticationError": {
        "properties": {
          "error_message": {
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "AUTHENTICATION_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "provider_type"
        ],
        "title": "TicketingAuthenticationError",
        "type": "object"
      },
      "TicketingCollectionNotFoundError": {
        "properties": {
          "collection_id": {
            "title": "Collection Id",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "COLLECTION_NOT_FOUND"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "collection_id",
          "error_type",
          "provider_type"
        ],
        "title": "TicketingCollectionNotFoundError",
        "type": "object"
      },
      "TicketingProviderNotConfiguredError": {
        "properties": {
          "collection_id": {
            "title": "Collection Id",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "PROVIDER_NOT_CONFIGURED"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "collection_id",
          "error_type",
          "provider_type"
        ],
        "title": "TicketingProviderNotConfiguredError",
        "type": "object"
      },
      "TicketingProviderType": {
        "enum": [
          "asana",
          "jira",
          "linear",
          "zendesk"
        ],
        "title": "TicketingProviderType",
        "type": "string"
      },
      "TicketingTriggerEntityMetadata": {
        "properties": {
          "collection_name": {
            "default": null,
            "nullable": true,
            "title": "Collection Name",
            "type": "string"
          },
          "custom_status": {
            "default": null,
            "nullable": true,
            "title": "Custom Status",
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/TicketingTriggerEntityMetadataError",
            "default": null,
            "nullable": true
          },
          "provider_type": {
            "default": null,
            "nullable": true,
            "title": "Provider Type",
            "type": "string"
          },
          "ticket_data": {
            "$ref": "#/components/schemas/RemoteTicketData",
            "default": null,
            "nullable": true
          },
          "ticket_id": {
            "default": null,
            "nullable": true,
            "title": "Ticket Id",
            "type": "string"
          },
          "ticket_status": {
            "$ref": "#/components/schemas/RemoteTicketStatus",
            "default": null,
            "nullable": true
          },
          "ticket_url": {
            "default": null,
            "nullable": true,
            "title": "Ticket Url",
            "type": "string"
          },
          "trigger_type": {
            "enum": [
              "LAUNCH_TICKETING_WORKFLOW"
            ],
            "title": "Trigger Type",
            "type": "string"
          }
        },
        "title": "TicketingTriggerEntityMetadata",
        "type": "object"
      },
      "TicketingTriggerEntityMetadataError": {
        "properties": {
          "error": {
            "discriminator": {
              "mapping": {
                "API_ERROR": "#/components/schemas/TicketingAPIError",
                "AUTHENTICATION_ERROR": "#/components/schemas/TicketingAuthenticationError",
                "COLLECTION_NOT_FOUND": "#/components/schemas/TicketingCollectionNotFoundError",
                "FALLBACK_ERROR": "#/components/schemas/FallbackTicketingTriggerEntityError",
                "PROVIDER_NOT_CONFIGURED": "#/components/schemas/TicketingProviderNotConfiguredError",
                "VALIDATION_ERROR": "#/components/schemas/TicketingValidationError"
              },
              "propertyName": "error_type"
            },
            "oneOf": [
              {
                "$ref": "#/components/schemas/FallbackTicketingTriggerEntityError"
              },
              {
                "$ref": "#/components/schemas/TicketingAPIError"
              },
              {
                "$ref": "#/components/schemas/TicketingAuthenticationError"
              },
              {
                "$ref": "#/components/schemas/TicketingCollectionNotFoundError"
              },
              {
                "$ref": "#/components/schemas/TicketingProviderNotConfiguredError"
              },
              {
                "$ref": "#/components/schemas/TicketingValidationError"
              }
            ],
            "title": "Error"
          },
          "trigger_type": {
            "default": "LAUNCH_TICKETING_WORKFLOW",
            "enum": [
              "LAUNCH_TICKETING_WORKFLOW"
            ],
            "title": "Trigger Type",
            "type": "string"
          }
        },
        "required": [
          "error",
          "trigger_type"
        ],
        "title": "TicketingTriggerEntityMetadataError",
        "type": "object"
      },
      "TicketingValidationError": {
        "properties": {
          "error_message": {
            "title": "Error Message",
            "type": "string"
          },
          "error_type": {
            "enum": [
              "VALIDATION_ERROR"
            ],
            "title": "Error Type",
            "type": "string"
          },
          "field_errors": {
            "additionalProperties": {
              "type": "string"
            },
            "default": null,
            "nullable": true,
            "title": "Field Errors",
            "type": "object"
          },
          "provider_type": {
            "title": "Provider Type",
            "type": "string"
          }
        },
        "required": [
          "error_message",
          "error_type",
          "field_errors",
          "provider_type"
        ],
        "title": "TicketingValidationError",
        "type": "object"
      },
      "TokenRequestBody": {
        "example": {
          "code": "wUvTfJmrDiTogz3dRNsUJdBRtSl658ibsH8xLKwKQ2PbttRr",
          "grant_type": "authorization_code",
          "redirect_uri": "https://www.yourawesomeapp.com",
          "refresh_token": "ramp_business_tok_IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk",
          "scope": "users:read users:write"
        },
        "properties": {
          "code": {
            "description": "Authorization code obtained from request to https://app.ramp.com/v1/authorize, to be exchanged for access token. Field is required if grant_type=authorization_code.",
            "type": "string"
          },
          "grant_type": {
            "description": "Grant type, must be one of: ['authorization_code', 'client_credentials', 'refresh_token']. Refresh token and client credentials grants must be added to app's permitted Grant Types.",
            "enum": [
              "authorization_code",
              "client_credentials",
              "refresh_token"
            ],
            "type": "string"
          },
          "redirect_uri": {
            "description": "The redirect URI previously used in the authorization request, used to verify app. Field is required if grant_type=authorization_code.",
            "type": "string"
          },
          "refresh_token": {
            "description": "The refresh token issued to you to get a new access token.",
            "type": "string"
          },
          "scope": {
            "description": "Space-separated list of scopes to be granted to the returned token. These must be a subset (including full set) of the app's allowed scopes. If omitted for grant_type=client_credentials, the returned token has no scopes.",
            "type": "string"
          }
        },
        "required": [
          "grant_type"
        ],
        "type": "object"
      },
      "TokenResponse": {
        "example": {
          "access_token": "ramp_business_tok_o4bfbrfhDBdXcjjTBMD1iTTXdprRuHdcmne8gR5zfSV78uPe",
          "expires_in": 3600,
          "refresh_token": "ramp_business_tok_IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk",
          "refresh_token_expires_in": 86400,
          "scope": "business:read transactions:read",
          "token_type": "Bearer"
        },
        "properties": {
          "access_token": {
            "description": "The access token string. Prefixed with ramp_business_tok_, ramp_user_tok_, ramp_business_jwt_, or ramp_user_jwt_.",
            "type": "string"
          },
          "expires_in": {
            "description": "The duration of which the token is valid, measured in seconds.",
            "type": "integer"
          },
          "id_token": {
            "description": "An OpenID Connect ID token.",
            "type": "string"
          },
          "refresh_token": {
            "description": "Refresh token can be used to get a new access token. Note that refresh token won't appear in the response for client_credentials grant type. Prefixed with ramp_business_tok_ or ramp_user_tok_.",
            "type": "string"
          },
          "refresh_token_expires_in": {
            "description": "The duration of which the refresh token is valid, measured in seconds. This field only appears for clients configured with a refresh token TTL and only when a refresh token is returned.",
            "nullable": true,
            "type": "integer"
          },
          "scope": {
            "description": "Space-separated list of scopes of the access token.",
            "type": "string"
          },
          "token_type": {
            "description": "The type of the token. This should always be 'Bearer'. ",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TokenRevokeRequestBody": {
        "example": {
          "token": "ramp_business_tok_IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk",
          "token_type_hint": "refresh_token"
        },
        "properties": {
          "token": {
            "description": "Access token or refresh token to be revoked.",
            "type": "string"
          },
          "token_type_hint": {
            "description": "Type of the token to be revoked.",
            "enum": [
              "access_token",
              "refresh_token"
            ],
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "type": "object"
      },
      "TrackingCategory": {
        "properties": {
          "additional_data": {
            "$ref": "#/components/schemas/TrackingCategorySchemaAdditionalData",
            "nullable": true
          },
          "cardholder_edits_allowed": {
            "type": "boolean"
          },
          "default_option": {
            "$ref": "#/components/schemas/TrackingCategoryOption",
            "nullable": true
          },
          "display_name": {
            "readOnly": true,
            "type": "string"
          },
          "display_name_short": {
            "type": "string"
          },
          "entity_settings": {
            "items": {
              "$ref": "#/components/schemas/TrackingCategoryEntitySetting"
            },
            "type": "array"
          },
          "helper_text": {
            "nullable": true,
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "input_type": {
            "enum": [
              "BOOLEAN",
              "DATE",
              "FREE_FORM_TEXT",
              "SINGLE_CHOICE"
            ],
            "type": "string"
          },
          "is_active": {
            "type": "boolean"
          },
          "is_custom_field": {
            "type": "boolean"
          },
          "is_erp_sourced": {
            "description": "Whether this tracking category participates in ERP sync, including fields supplied through CSV uploads or API integrations.",
            "type": "boolean"
          },
          "is_hidden": {
            "type": "boolean"
          },
          "is_internal": {
            "type": "boolean"
          },
          "is_splittable": {
            "type": "boolean"
          },
          "refresh_status": {
            "$ref": "#/components/schemas/TrackingCategoryRefreshStatusItem",
            "nullable": true
          },
          "remote_field_locations": {
            "items": {
              "enum": [
                "BODY",
                "EXPENSE_LINE",
                "ITEM_LINE",
                "LINE_ITEM"
              ],
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "remote_id": {
            "type": "string"
          },
          "remote_name": {
            "type": "string"
          },
          "remote_type": {
            "enum": [
              "AMORTIZATION_TEMPLATE",
              "BILLABLE",
              "COST_CENTER",
              "CUSTOMERS_JOBS",
              "DEFERRAL_CODE",
              "EXPENSE_ENTITY",
              "GL_ACCOUNT",
              "INVENTORY_ITEM",
              "JOURNAL",
              "MERCHANT",
              "NON_ERP",
              "OTHER",
              "PAYROLL_PROVIDER",
              "PROJECT",
              "REPORTING_TAG",
              "SALES_TAX_CODE",
              "SUBSIDIARY",
              "TAX_CODE",
              "UNIT_OF_MEASURE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "SALES_TAX_CODE": "A sales tax code from the accounting provider."
            }
          },
          "settings": {
            "$ref": "#/components/schemas/TrackingCategorySettings",
            "readOnly": true
          },
          "sync_with_erp": {
            "deprecated": true,
            "description": "Deprecated. Use is_erp_sourced instead.",
            "type": "boolean"
          },
          "uuid": {
            "format": "uuid",
            "type": "string"
          }
        },
        "required": [
          "additional_data",
          "cardholder_edits_allowed",
          "default_option",
          "display_name",
          "display_name_short",
          "entity_settings",
          "helper_text",
          "id",
          "input_type",
          "is_active",
          "is_custom_field",
          "is_erp_sourced",
          "is_hidden",
          "is_internal",
          "is_splittable",
          "refresh_status",
          "remote_field_locations",
          "remote_id",
          "remote_name",
          "remote_type",
          "settings",
          "uuid"
        ],
        "type": "object"
      },
      "TrackingCategoryEntitySetting": {
        "properties": {
          "entity_type": {
            "enum": [
              "ADVANCED_INTERCOMPANY_JOURNAL_ENTRY",
              "BILL",
              "BILL_PAYMENT",
              "CHECK",
              "DEPOSIT",
              "INVOICE",
              "JOURNAL",
              "PURCHASE_ORDER",
              "TRANSACTION",
              "UNUSED"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ADVANCED_INTERCOMPANY_JOURNAL_ENTRY": "The tracking category applies to advanced intercompany journal entries.",
              "CHECK": "The tracking category applies to checks.",
              "DEPOSIT": "The tracking category applies to bank deposits.",
              "INVOICE": "The tracking category applies to invoices."
            }
          },
          "is_required": {
            "type": "boolean"
          },
          "ramp_entity_type": {
            "enum": [
              "BILL",
              "BILL_PAYMENT",
              "CUSTOMER",
              "INVOICE",
              "PURCHASE_ORDER",
              "REIMBURSEMENT",
              "SPEND_PROGRAM",
              "TRANSACTION",
              "TRANSFER_LEDGER_ENTRY_MAPPING",
              "VENDOR_CREDIT"
            ],
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "TrackingCategoryMetadata": {
        "properties": {
          "accounting_provider_is_connected": {
            "description": "Whether the tracking category's accounting provider is currently connected",
            "type": "boolean"
          },
          "display_name": {
            "default": null,
            "description": "The display name of the tracking category",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "The tracking category integer ID",
            "type": "integer"
          },
          "is_active": {
            "description": "Whether the tracking category is active",
            "type": "boolean"
          },
          "uuid": {
            "description": "The tracking category UUID (ramp_id)",
            "type": "string"
          }
        },
        "required": [
          "accounting_provider_is_connected",
          "display_name",
          "id",
          "is_active",
          "uuid"
        ],
        "type": "object"
      },
      "TrackingCategoryOption": {
        "properties": {
          "additional_data": {
            "$ref": "#/components/schemas/TrackingCategoryOptionAdditionalData",
            "nullable": true
          },
          "display_name": {
            "description": "Base display name for the option. label, title, and subtitle are derived from this field. Prefer those instead of display_name field for display purposes.",
            "nullable": true,
            "type": "string"
          },
          "display_name_prefix": {
            "description": "Optional provider-supplied prefix used to distinguish options with the same title. Surfaces that need disambiguation should display `{display_name_prefix} - {title}`; otherwise use `title`.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "is_active": {
            "type": "boolean"
          },
          "label": {
            "description": "Displays the code and title. This is meant to be used when there is only one line displayed in the UI.",
            "type": "string"
          },
          "parent": {
            "$ref": "#/components/schemas/TrackingCategoryOptionLight"
          },
          "receiving_types": {
            "$ref": "#/components/schemas/InventoryItemReceivingTypes",
            "description": "Present only on inventory item options, in responses that look up receiving types.",
            "readOnly": true
          },
          "remote_code": {
            "nullable": true,
            "type": "string"
          },
          "remote_id": {
            "description": "The provider-side identifier for the option. Usually ERP-owned; for universal_csv it can be updated via the PATCH endpoint.",
            "nullable": true,
            "type": "string"
          },
          "remote_name": {
            "description": "The provider-side name for the option. Usually ERP-owned; for universal_csv it can be updated via the PATCH endpoint. Do not use this field for display purposes.",
            "type": "string"
          },
          "subtitle": {
            "description": "Displays the code, and any hierarchical relationships. This is meant to be used in conjunction with title when two lines displayed in the UI.",
            "nullable": true,
            "type": "string"
          },
          "title": {
            "description": "The simplest name of the option. Does not include code and hierarchical relationships. This is meant to be used in conjunction with subtitle when two lines displayed in the UI.",
            "type": "string"
          },
          "uuid": {
            "format": "uuid",
            "type": "string"
          },
          "visibility": {
            "enum": [
              "HIDDEN",
              "VISIBLE"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "HIDDEN": "The option is hidden from selection in Ramp.",
              "VISIBLE": "The option is available for selection in Ramp."
            }
          }
        },
        "required": [
          "additional_data",
          "display_name",
          "id",
          "is_active",
          "label",
          "remote_code",
          "remote_id",
          "remote_name",
          "subtitle",
          "title",
          "uuid",
          "visibility"
        ],
        "type": "object"
      },
      "TrackingCategoryOptionAdditionalData": {
        "properties": {
          "account_classification": {
            "enum": [
              "ANY",
              "ASSET",
              "CREDCARD",
              "EQUITY",
              "EXPENSE",
              "LIABILITY",
              "REVENUE",
              "UNKNOWN"
            ],
            "nullable": true,
            "type": "string"
          },
          "cost": {
            "type": "number"
          },
          "currency_iso": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "group_title": {
            "type": "string"
          },
          "is_job": {
            "type": "boolean"
          },
          "is_lot_numbered": {
            "description": "Whether this inventory item is lot-numbered in the ERP.",
            "type": "boolean"
          },
          "item_receipt_unapplicable": {
            "type": "boolean"
          },
          "quantity_decimal_places": {
            "type": "integer"
          },
          "subsidiary": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tax_rates": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "TrackingCategoryOptionLight": {
        "properties": {
          "remote_name": {
            "type": "string"
          }
        },
        "required": [
          "remote_name"
        ],
        "type": "object"
      },
      "TrackingCategoryOptionMapping": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "tracking_category": {
            "$ref": "#/components/schemas/TrackingCategory"
          },
          "tracking_category_id": {
            "type": "integer"
          },
          "tracking_category_option": {
            "$ref": "#/components/schemas/TrackingCategoryOption"
          }
        },
        "required": [
          "tracking_category",
          "tracking_category_id",
          "tracking_category_option"
        ],
        "type": "object"
      },
      "TrackingCategoryRefreshStatusItem": {
        "properties": {
          "completed_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "state": {
            "enum": [
              "FAILURE",
              "IN_PROGRESS",
              "NOT_STARTED",
              "SKIPPED",
              "SUCCESS"
            ],
            "type": "string"
          }
        },
        "required": [
          "completed_at",
          "state"
        ],
        "type": "object"
      },
      "TrackingCategorySchemaAdditionalData": {
        "properties": {
          "is_payment_terms": {
            "type": "boolean"
          },
          "is_suitetax_enabled": {
            "type": "boolean"
          },
          "vendor_creation_enabled": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "TrackingCategorySettings": {
        "properties": {
          "allow_none": {
            "nullable": true,
            "type": "boolean"
          },
          "default_tracking_category_option": {
            "$ref": "#/components/schemas/TrackingCategoryOption",
            "nullable": true
          },
          "display_name": {
            "description": "Nullable raw settings override. Do not use for display; use the top-level TrackingCategory.display_name canonical effective label.",
            "nullable": true,
            "type": "string"
          },
          "display_order": {
            "nullable": true,
            "type": "integer"
          },
          "exclude_bill_payments_from_ai_suggestions": {
            "description": "Exclude bill payments from AI suggestions. Null inherits is_excluded_from_ai_suggestions.",
            "nullable": true,
            "type": "boolean"
          },
          "exclude_bills_from_ai_suggestions": {
            "description": "Exclude bills from AI suggestions. Null inherits is_excluded_from_ai_suggestions.",
            "nullable": true,
            "type": "boolean"
          },
          "exclude_purchase_orders_from_ai_suggestions": {
            "description": "Exclude purchase orders from AI suggestions. Null inherits is_excluded_from_ai_suggestions.",
            "nullable": true,
            "type": "boolean"
          },
          "exclude_reimbursements_from_ai_suggestions": {
            "description": "Exclude reimbursements from AI suggestions. Null inherits is_excluded_from_ai_suggestions.",
            "nullable": true,
            "type": "boolean"
          },
          "exclude_transactions_from_ai_suggestions": {
            "description": "Exclude transactions from AI suggestions. Null inherits is_excluded_from_ai_suggestions.",
            "nullable": true,
            "type": "boolean"
          },
          "exclude_wallet_transfers_from_ai_suggestions": {
            "description": "Exclude wallet transfers from AI suggestions. Null inherits is_excluded_from_ai_suggestions.",
            "nullable": true,
            "type": "boolean"
          },
          "helper_text": {
            "nullable": true,
            "type": "string"
          },
          "is_excluded_from_ai_suggestions": {
            "type": "boolean"
          },
          "is_hidden": {
            "type": "boolean"
          },
          "is_receipt_extra_schema_enabled": {
            "type": "boolean"
          },
          "option_filter_workflow_id": {
            "format": "uuid",
            "nullable": true,
            "type": "string"
          },
          "receipt_extra_schema_description": {
            "default": null,
            "nullable": true,
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "allow_none",
          "default_tracking_category_option",
          "display_name",
          "display_order",
          "helper_text",
          "is_excluded_from_ai_suggestions",
          "is_hidden",
          "is_receipt_extra_schema_enabled",
          "option_filter_workflow_id",
          "receipt_extra_schema_description",
          "updated_at"
        ],
        "type": "object"
      },
      "Transaction": {
        "example": {
          "accounting_categories": [],
          "accounting_date": "2022-05-03T00:00:00+00:00",
          "accounting_field_selections": [
            {
              "category_info": {
                "external_id": "Category",
                "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                "name": "Category",
                "type": "GL_ACCOUNT"
              },
              "display_name": "Ramp Category",
              "external_id": "Category",
              "id": "07b4ce4d-2750-412e-aef4-6b7815f1411c",
              "name": "Category",
              "type": "GL_ACCOUNT"
            }
          ],
          "all_requirements_met_and_approved": true,
          "amount": 90,
          "attendees": [
            {
              "name": "Jack Johnson",
              "user_id": null
            },
            {
              "name": "Joe Johnson",
              "user_id": "7979392e-8d41-4f97-815b-ccd7584802bf"
            }
          ],
          "card_holder": {
            "department_id": "d471d830-2e73-4082-8a75-68540f83e86e",
            "department_name": "Executive",
            "first_name": "Patrick",
            "last_name": "Robinson",
            "location_id": "4fcf3423-a2e6-42f6-8dd8-9b3a8c51e069",
            "location_name": "San Francisco",
            "user_id": "a26c82c9-6b7d-4022-bc4b-a55b4c4743c7"
          },
          "card_id": "6bc41b14-f853-4862-bae5-4f122f123f6e",
          "currency_code": "USD",
          "disputes": [],
          "entity_amount": {
            "currency": "USD",
            "value": 9000
          },
          "entity_id": "24850cdb-1b3f-4eb9-bf20-967ca9f97605",
          "fund_id": "5e25f547-bd09-40ad-aab3-b8fefdf16885",
          "id": "fd14cd6a-846e-4994-9315-5a59e6bb465f",
          "limit_id": "5e25f547-bd09-40ad-aab3-b8fefdf16885",
          "line_items": [
            {
              "accounting_field_selections": [
                {
                  "category_info": {
                    "external_id": "Subsidiary",
                    "id": "15e9565d-7e73-40d8-9fbc-5f6f89b1c075",
                    "name": "Subsidiary",
                    "type": "SUBSIDIARY"
                  },
                  "display_name": "Ramp BV - EMEA",
                  "external_id": "426",
                  "id": "07b4ce4d-2750-412e-aef4-6b7815f1411a",
                  "name": "Ramp BV",
                  "type": "SUBSIDIARY"
                }
              ],
              "amount": {
                "amount": 5000,
                "currency_code": "USD"
              },
              "converted_amount": {
                "amount": 5000,
                "currency_code": "USD"
              },
              "id": "11111111-1111-1111-1111-111111111111"
            },
            {
              "accounting_field_selections": [
                {
                  "category_info": {
                    "external_id": "Subsidiary",
                    "id": "15e9565d-7e73-40d8-9fbc-5f6f89b1c075",
                    "name": "Subsidiary",
                    "type": "SUBSIDIARY"
                  },
                  "display_name": null,
                  "external_id": "425",
                  "id": "07b4ce4d-2750-412e-aef4-6b7815f1411b",
                  "name": "Ramp LP",
                  "type": "Subsidiary"
                }
              ],
              "amount": {
                "amount": 4000,
                "currency_code": "USD"
              },
              "converted_amount": {
                "amount": 4000,
                "currency_code": "USD"
              }
            }
          ],
          "memo": null,
          "merchant_amount": {
            "currency": "EUR",
            "value": 9000
          },
          "merchant_category_code": null,
          "merchant_category_code_description": null,
          "merchant_data": {
            "auto_rental": null,
            "flight": null,
            "fuel": null,
            "lodging": null,
            "receipt": [
              {
                "commodity_code": null,
                "description": "Vanta Automated Compliance",
                "discount": null,
                "quantity": 1,
                "tax": null,
                "total": 5000,
                "unit_cost": 5000
              },
              {
                "commodity_code": null,
                "description": "Vanta Risk Management",
                "discount": null,
                "quantity": 1,
                "tax": null,
                "total": 4000,
                "unit_cost": 4000
              }
            ],
            "reference": "343165593943"
          },
          "merchant_descriptor": "VANTA",
          "merchant_id": "2907e304-cac2-4abf-84c4-b3b454ae3b8c",
          "merchant_location": {
            "city": "SAN FRANCISCO",
            "country": "USA",
            "postal_code": "941050000",
            "state": "06"
          },
          "merchant_name": "Vanta",
          "network_merchant_id": "1234567890",
          "original_transaction_amount": {
            "amount": 9000,
            "currency_code": "EUR"
          },
          "original_transaction_id": null,
          "policy_violations": [],
          "receipts": [],
          "settlement_date": "2022-05-03T00:00:00+00:00",
          "sk_category_id": "40,41",
          "sk_category_name": "SaaS / Software",
          "spend_program_id": "4a2b8c1e-9f63-4d75-ae12-3b9d47f85e29",
          "state": "CLEARED",
          "synced_at": "2022-05-04T00:00:00+00:00",
          "trip_id": "ec6aae2b-38c6-4eeb-adf0-80f25dbf9aad",
          "trip_name": "Trip to Europe",
          "updated_at": "2022-05-03T00:00:00+00:00",
          "user_transaction_time": "2022-04-28T00:00:00+00:00"
        },
        "properties": {
          "accounting_categories": {
            "deprecated": true,
            "description": "[Deprecated - use accounting_field_selections instead] Accounting categories related to the transaction.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingCategory"
            },
            "readOnly": true,
            "type": "array"
          },
          "accounting_date": {
            "description": "The date for the transaction for accounting purposes, in ISO8601 format. Based on the cleared date, transaction date, or a manually overridden date, depending on your accounting preferences in Ramp.",
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "accounting_field_selections": {
            "description": "List of accounting fields selected to code the transaction.",
            "items": {
              "$ref": "#/components/schemas/ApiTransactionAccountingFieldSelection"
            },
            "type": "array"
          },
          "all_requirements_met_and_approved": {
            "description": "Whether the transaction is fully approved and all cardholder requirements are met, including receipts, memos, and tracking categories.",
            "readOnly": true,
            "type": "boolean"
          },
          "amount": {
            "deprecated": true,
            "description": "Deprecated. Use `entity_amount`.",
            "type": "number"
          },
          "attendees": {
            "description": "List of attendees for the transaction",
            "items": {
              "$ref": "#/components/schemas/ApiTransactionAttendee"
            },
            "type": "array"
          },
          "card_holder": {
            "$ref": "#/components/schemas/ApiTransactionCardHolder",
            "description": "Information about the card holder."
          },
          "card_id": {
            "description": "Identifier of the physical or virtual card associated with the transaction.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "cards",
              "type": "many-to-one"
            }
          },
          "card_present": {
            "description": "Whether the transaction was processed using a card present terminal.",
            "type": "boolean"
          },
          "currency_code": {
            "deprecated": true,
            "description": "Deprecated. Use `entity_amount.currency`.",
            "type": "string"
          },
          "decline_details": {
            "$ref": "#/components/schemas/ApiTransactionDeclineDetails",
            "description": "Details about a transaction decline."
          },
          "disputes": {
            "description": "A list of disputes sorted in descending order by their creation time.",
            "items": {
              "$ref": "#/components/schemas/ApiTransactionDispute"
            },
            "readOnly": true,
            "type": "array"
          },
          "entity_amount": {
            "$ref": "#/components/schemas/ApiSignedAmount",
            "description": "The amount that settled to the entity, in the entity's settlement currency. The value is in the smallest denomination of the currency (e.g. cents for USD) and is signed: refunds and credits can be negative. Null when the transaction has no valid settlement currency recorded.",
            "nullable": true,
            "readOnly": true
          },
          "entity_id": {
            "description": "Unique identifier of business entity associated with the transaction.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "fund_id": {
            "description": "Unique identifier of the fund associated with the transaction. Returns the same value as `limit_id`.",
            "format": "uuid",
            "readOnly": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "funds",
              "type": "many-to-one"
            }
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "limit_id": {
            "deprecated": true,
            "description": "Alias of fund (`fund_id`). Unique identifier of the spend limit associated with the transaction. Returns the same value as `fund_id`.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "limits",
              "type": "many-to-one"
            }
          },
          "line_items": {
            "description": "List of line items related to the transaction.",
            "items": {
              "$ref": "#/components/schemas/ApiTransactionLineItem"
            },
            "type": "array"
          },
          "memo": {
            "nullable": true,
            "type": "string"
          },
          "merchant_amount": {
            "$ref": "#/components/schemas/ApiSignedAmount",
            "description": "The original amount charged by the merchant, in the currency the merchant charged. The value is in the smallest denomination of that currency (e.g. cents) and is signed: refunds and credits can be negative. Equal to `entity_amount` when no currency conversion occurred. Null when the original amount data is unavailable or invalid.",
            "nullable": true,
            "readOnly": true
          },
          "merchant_category_code": {
            "description": "Merchant category code is a four-digit number in ISP 18245 used to classify a business by the types of goods and services it provides.",
            "type": "string"
          },
          "merchant_category_code_description": {
            "description": "Description about the merchant category code.",
            "type": "string"
          },
          "merchant_data": {
            "$ref": "#/components/schemas/ApiTransactionPurchaseData",
            "description": "Purchase data associated related to a transaction provided by the merchant"
          },
          "merchant_descriptor": {
            "description": "A merchant descriptor is the name that appears on a customer's bank statement when they make a purchase from that merchant.",
            "type": "string"
          },
          "merchant_id": {
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "merchants",
              "type": "many-to-one"
            }
          },
          "merchant_location": {
            "$ref": "#/components/schemas/ApiMerchantLocation",
            "description": "Card acceptor data such as country, city, state, and postal code if available.",
            "nullable": true
          },
          "merchant_name": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "minor_unit_conversion_rate": {
            "description": "The conversion factor to convert from the integer amount to the actual currency value. Divide amount by this value to get the real currency amount. For USD, this is 100 (e.g., 12034 / 100 = 120.34 USD).",
            "nullable": true,
            "readOnly": true,
            "type": "integer"
          },
          "network_merchant_id": {
            "description": "Network merchant identifier from the card acceptor.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "original_transaction_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "the original transaction amount before the currency conversion.",
            "nullable": true
          },
          "original_transaction_id": {
            "description": "Original transaction id for refund transactions.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "policy_violations": {
            "description": "A list of policy violations sorted in descending order by their creation time.",
            "items": {
              "$ref": "#/components/schemas/ApiTransactionPolicyViolation"
            },
            "readOnly": true,
            "type": "array"
          },
          "receipts": {
            "description": "Receipts listed in ascending order by their creation time, related to the transaction.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "requires_accounting_vendor_creation_to_sync": {
            "description": "Whether the integrator must create an accounting vendor and code it to this transaction before syncing. True when the connection has transaction_accounting_vendor_creation_on_sync_enabled=true and the transaction has no vendor accounting field selection. Omitted when transaction_accounting_vendor_creation_on_sync_enabled=false.",
            "readOnly": true,
            "type": "boolean"
          },
          "settlement_date": {
            "description": "Time when funds were moved for a transaction, in ISO8601 format.",
            "format": "date-time",
            "type": "string"
          },
          "sk_category_id": {
            "description": "Ramp category code.",
            "enum": [
              1,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              2,
              20,
              21,
              23,
              24,
              25,
              26,
              27,
              28,
              29,
              3,
              30,
              31,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              4,
              40,
              41,
              42,
              43,
              44,
              5,
              6,
              7,
              8,
              9
            ],
            "nullable": true,
            "readOnly": true,
            "type": "integer",
            "x-enum-descriptions": {
              "1": "Pet",
              "2": "Other",
              "3": "Office",
              "4": "Airlines",
              "5": "Car rental",
              "6": "Lodging",
              "7": "Travel miscellaneous",
              "8": "Taxi and rideshare",
              "9": "Freight, moving and delivery services",
              "10": "Shipping",
              "11": "Utilities",
              "12": "Office supplies and cleaning",
              "13": "General merchandise",
              "14": "Electronics",
              "15": "Clothing",
              "16": "Books and newspapers",
              "17": "Supermarkets and grocery stores",
              "18": "Fuel and gas",
              "19": "Restaurants",
              "20": "Alcohol and bars",
              "21": "Medical",
              "23": "Fees and financial institutions",
              "24": "Entertainment",
              "25": "Professional services",
              "26": "Taxes and tax preparation",
              "27": "Advertising",
              "28": "Parking",
              "29": "Car services",
              "30": "Gambling",
              "31": "Clubs and memberships",
              "32": "Legal",
              "33": "Education",
              "34": "Charitable donations",
              "35": "Political organizations",
              "36": "Religious organizations",
              "37": "Fines",
              "38": "Government services",
              "39": "Intra-company purchases",
              "40": "SaaS / Software",
              "41": "Cloud computing",
              "42": "Streaming services",
              "43": "Internet and phone",
              "44": "Insurance"
            }
          },
          "sk_category_name": {
            "description": "Ramp category name.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "spend_program_id": {
            "description": "Unique identifier of the spend program from which this limit was issued.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "spend_programs",
              "type": "many-to-one"
            }
          },
          "state": {
            "description": "transaction state.",
            "enum": [
              "ALL",
              "CLEARED",
              "COMPLETION",
              "DECLINED",
              "ERROR",
              "PENDING",
              "PENDING_INITIATION"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ALL": "Special filter value to include all transaction states",
              "CLEARED": "Transaction has been cleared and settled",
              "COMPLETION": "Transaction has completed processing",
              "DECLINED": "Transaction was declined",
              "ERROR": "Transaction encountered an error during processing",
              "PENDING": "Transaction is pending and has not yet cleared",
              "PENDING_INITIATION": "Transaction has not yet been initiated"
            }
          },
          "statement_id": {
            "description": "Statement ID associated with the transaction if one is available.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "statements",
              "type": "many-to-one"
            }
          },
          "sync_status": {
            "enum": [
              "NOT_SYNC_READY",
              "SYNCED",
              "SYNC_READY"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "NOT_SYNC_READY": "The object is missing required accounting setup and is not ready to sync.",
              "SYNCED": "The object has already been synced to the accounting provider.",
              "SYNC_READY": "The object is ready to sync to the accounting provider."
            }
          },
          "synced_at": {
            "description": "Time when transaction has been synced, in ISO8601 format. Will be None if the transaction is not synced.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "trip_id": {
            "description": "Trip ID associated with the transaction if one is available.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "trips",
              "type": "many-to-one"
            }
          },
          "trip_name": {
            "description": "Trip name associated with the transaction if one is available.",
            "nullable": true,
            "type": "string"
          },
          "updated_at": {
            "description": "Approximate transaction updated timestamp used by the `updated_after` filter. Computed as the latest of user transaction time, settlement time, and transaction interaction state update time.",
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "user_transaction_time": {
            "description": "Time when the transaction was created by the user, in ISO8601 format.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "accounting_date",
          "all_requirements_met_and_approved",
          "card_present",
          "entity_amount",
          "entity_id",
          "merchant_amount",
          "merchant_id",
          "merchant_location",
          "minor_unit_conversion_rate",
          "network_merchant_id",
          "original_transaction_amount",
          "original_transaction_id",
          "sk_category_id",
          "sk_category_name",
          "sync_status",
          "synced_at",
          "trip_id",
          "trip_name",
          "updated_at"
        ],
        "type": "object",
        "x-resource-name": "transactions"
      },
      "Transfer": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the transfer."
          },
          "bank_account_id": {
            "description": "Unique identifier of the bank account used for this transfer payment.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "created_at": {
            "description": "Timestamp when the transfer was created.",
            "format": "date-time",
            "type": "string"
          },
          "entity_id": {
            "description": "Business entity associated with this transfer.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "id": {
            "description": "Unique identifier for the transfer.",
            "format": "uuid",
            "type": "string"
          },
          "payment_id": {
            "description": "Unique payment identifier for the transfer.",
            "type": "string"
          },
          "status": {
            "description": "Status of the transfer. See [Transfers Guide](/developer-api/v1/guides/transfers) for definitions.",
            "enum": [
              "ACH_CONFIRMED",
              "CANCELED",
              "COMPLETED",
              "ERROR",
              "INITIATED",
              "NOT_ACKED",
              "NOT_ENOUGH_FUNDS",
              "PROCESSING_BY_ODFI",
              "REJECTED_BY_ODFI",
              "RETURNED_BY_RDFI",
              "SUBMITTED_TO_FED",
              "SUBMITTED_TO_RDFI",
              "UNNECESSARY",
              "UPLOADED"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "CANCELED": "The transfer has been canceled and will not be processed. This state is terminal and indicates the transfer was intentionally stopped, either by the customer or due to an operational decision.",
              "COMPLETED": "The transfer has successfully settled and reached its final state. Funds have moved as intended, and no further actions are required. Any subsequent issues would require a new transfer or reversal process.",
              "ERROR": "The transfer encountered a terminal error and could not be completed. This can happen due to issues like invalid account information or system errors. The transfer will need to be retried with corrected details.",
              "INITIATED": "A record of the transfer has been created in Ramp's system. The process of moving funds has started, but no external actions have been taken yet.",
              "NOT_ACKED": "Ramp did not receive an acknowledgment from the bank after submitting the transfer. The transfer may need to be retried or investigated for connectivity issues with the bank.",
              "NOT_ENOUGH_FUNDS": "The transfer could not proceed due to insufficient funds in the originating account. Additional funds need to be added to the account before re-attempting the transfer.",
              "PROCESSING_BY_ODFI": "The transfer file has been submitted to the Originating Bank (ODFI), and the cutoff time for same-day processing has passed. The ODFI has accepted the file and will proceed with sending it to the Fed.",
              "REJECTED_BY_ODFI": "The transfer was rejected by the ODFI before it was sent to the Federal Reserve. The rejection usually occurs due to formatting errors or invalid account information in the transfer file.",
              "RETURNED_BY_RDFI": "The transfer failed at the Receiving Bank (RDFI) due to an issue provided by the receiving bank. Common reasons include closed accounts or incorrect account numbers. This requires corrective action to resolve.",
              "SUBMITTED_TO_FED": "The transfer file has been sent to the Federal Reserve and is awaiting routing to the RDFI. The transfer is now in the Fed's hands and will soon be sent to the receiving bank.",
              "SUBMITTED_TO_RDFI": "The transfer has been delivered to the Receiving Bank (RDFI), and we are awaiting the final transfer of funds. This is the final step before the funds are made available to the receiving party.",
              "UNNECESSARY": "The transfer is for $0 and does not require processing through the ACH system. This is a terminal state, indicating no further actions are required."
            }
          },
          "sync_status": {
            "description": "Current sync status of the transfer.",
            "enum": [
              "NOT_SYNC_READY",
              "SYNCED",
              "SYNC_READY"
            ],
            "readOnly": true,
            "type": "string",
            "x-enum-descriptions": {
              "NOT_SYNC_READY": "The object is missing required accounting setup and is not ready to sync.",
              "SYNCED": "The object has already been synced to the accounting provider.",
              "SYNC_READY": "The object is ready to sync to the accounting provider."
            }
          }
        },
        "required": [
          "bank_account_id",
          "sync_status"
        ],
        "type": "object",
        "x-resource-name": "transfers"
      },
      "TravelLocationResource": {
        "properties": {
          "city": {
            "nullable": true,
            "type": "string"
          },
          "country": {
            "nullable": true,
            "type": "string"
          },
          "latitude": {
            "nullable": true,
            "type": "number"
          },
          "longitude": {
            "nullable": true,
            "type": "number"
          },
          "state": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "city",
          "country",
          "latitude",
          "longitude",
          "state"
        ],
        "type": "object"
      },
      "TravelRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseUnifiedSpendRequest"
          },
          {
            "properties": {
              "resulting_spend_allocation_id": {
                "nullable": true,
                "readOnly": true,
                "type": "string"
              },
              "spend_allocation_outcome_settings": {
                "$ref": "#/components/schemas/TravelRequestSpendAllocationOutcomeSettings",
                "nullable": true,
                "readOnly": true
              },
              "spend_request_type": {
                "default": "TRAVEL",
                "enum": [
                  "TRAVEL"
                ],
                "type": "string"
              },
              "travel_metadata": {
                "$ref": "#/components/schemas/TravelSpendRequestMetadata",
                "readOnly": true
              },
              "unified_spend_request_type": {
                "default": "TRAVEL",
                "enum": [
                  "TRAVEL"
                ],
                "type": "string"
              }
            },
            "required": [
              "resulting_spend_allocation_id",
              "spend_allocation_outcome_settings",
              "spend_request_type",
              "travel_metadata",
              "unified_spend_request_type"
            ],
            "type": "object"
          }
        ]
      },
      "TravelRequestAvailableActionsSchema": {
        "properties": {
          "archive": {
            "$ref": "#/components/schemas/SpendRequestActionDetailSchema"
          },
          "edit": {
            "$ref": "#/components/schemas/SpendRequestActionDetailSchema"
          }
        },
        "required": [
          "archive",
          "edit"
        ],
        "title": "TravelRequestAvailableActionsSchema",
        "type": "object"
      },
      "TravelRequestDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseUnifiedSpendRequestDetail"
          },
          {
            "$ref": "#/components/schemas/TravelRequest"
          },
          {
            "properties": {
              "approval_chain_data": {
                "$ref": "#/components/schemas/ApprovalChainData",
                "readOnly": true
              },
              "attendees_count": {
                "readOnly": true,
                "type": "integer"
              },
              "available_actions": {
                "$ref": "#/components/schemas/TravelRequestAvailableActionsSchema",
                "readOnly": true
              },
              "group_trip": {
                "$ref": "#/components/schemas/ReducedGroupTrip",
                "nullable": true,
                "readOnly": true
              },
              "members": {
                "items": {
                  "$ref": "#/components/schemas/UserDisplay"
                },
                "type": "array"
              },
              "spend_allocation_outcome_settings": {
                "$ref": "#/components/schemas/TravelRequestSpendAllocationOutcomeSettingsDetail",
                "nullable": true,
                "readOnly": true
              },
              "travel_metadata": {
                "$ref": "#/components/schemas/TravelSpendRequestMetadataDetail",
                "readOnly": true
              },
              "trip": {
                "$ref": "#/components/schemas/ReducedTrip",
                "nullable": true,
                "readOnly": true
              }
            },
            "required": [
              "approval_chain_data",
              "attendees_count",
              "available_actions",
              "group_trip",
              "members",
              "spend_allocation_outcome_settings",
              "travel_metadata",
              "trip"
            ],
            "type": "object"
          }
        ]
      },
      "TravelRequestSpendAllocationOutcomeSettings": {
        "properties": {
          "amount_details": {
            "$ref": "#/components/schemas/Money",
            "readOnly": true
          },
          "is_shareable": {
            "type": "boolean"
          },
          "lock_date": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "payment_restrictions": {
            "$ref": "#/components/schemas/PaymentRestrictions",
            "readOnly": true
          },
          "spend_eligibility_starts_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "spend_frequency": {
            "enum": [
              "ANNUAL",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ANNUAL": "The spend limit resets on an annual cycle based on the request or fund start date.",
              "DAILY": "The spend limit resets daily.",
              "MONTHLY": "The spend limit resets monthly.",
              "QUARTERLY": "The spend limit resets every three months.",
              "TERTIARY": "The spend limit resets every four months.",
              "TOTAL": "The spend limit does not reset.",
              "WEEKLY": "The spend limit resets weekly.",
              "YEARLY": "The spend limit resets on the calendar year."
            }
          }
        },
        "required": [
          "amount_details",
          "is_shareable",
          "lock_date",
          "payment_restrictions",
          "spend_eligibility_starts_at",
          "spend_frequency"
        ],
        "type": "object"
      },
      "TravelRequestSpendAllocationOutcomeSettingsDetail": {
        "properties": {
          "accounting_auto_mark_ready_rule_enabled": {
            "type": "boolean"
          },
          "accounting_rules": {
            "items": {
              "$ref": "#/components/schemas/TrackingCategoryOptionMapping"
            },
            "readOnly": true,
            "type": "array"
          },
          "amount_details": {
            "$ref": "#/components/schemas/Money",
            "readOnly": true
          },
          "categories_blacklist": {
            "items": {
              "type": "integer"
            },
            "readOnly": true,
            "type": "array"
          },
          "categories_whitelist": {
            "items": {
              "type": "integer"
            },
            "readOnly": true,
            "type": "array"
          },
          "is_shareable": {
            "type": "boolean"
          },
          "lock_date": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "payment_restrictions": {
            "$ref": "#/components/schemas/PaymentRestrictions",
            "readOnly": true
          },
          "post_spend_approval_instance_policy": {
            "$ref": "#/components/schemas/ApprovalPolicyLightSchema",
            "readOnly": true
          },
          "spend_eligibility_starts_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "spend_frequency": {
            "enum": [
              "ANNUAL",
              "DAILY",
              "MONTHLY",
              "QUARTERLY",
              "TERTIARY",
              "TOTAL",
              "WEEKLY",
              "YEARLY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "ANNUAL": "The spend limit resets on an annual cycle based on the request or fund start date.",
              "DAILY": "The spend limit resets daily.",
              "MONTHLY": "The spend limit resets monthly.",
              "QUARTERLY": "The spend limit resets every three months.",
              "TERTIARY": "The spend limit resets every four months.",
              "TOTAL": "The spend limit does not reset.",
              "WEEKLY": "The spend limit resets weekly.",
              "YEARLY": "The spend limit resets on the calendar year."
            }
          },
          "submission_policy": {
            "$ref": "#/components/schemas/PolicyLight",
            "readOnly": true
          },
          "vendor_blacklist": {
            "items": {
              "type": "integer"
            },
            "readOnly": true,
            "type": "array"
          },
          "vendor_whitelist": {
            "items": {
              "type": "integer"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "required": [
          "accounting_auto_mark_ready_rule_enabled",
          "accounting_rules",
          "amount_details",
          "categories_blacklist",
          "categories_whitelist",
          "is_shareable",
          "lock_date",
          "payment_restrictions",
          "post_spend_approval_instance_policy",
          "spend_eligibility_starts_at",
          "spend_frequency",
          "submission_policy",
          "vendor_blacklist",
          "vendor_whitelist"
        ],
        "type": "object"
      },
      "TravelSpendEstimateLineItem": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/BasicMoney",
            "readOnly": true
          },
          "category": {
            "enum": [
              "CUSTOM",
              "FLIGHT",
              "LODGING",
              "PER_DIEM"
            ],
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        },
        "required": [
          "amount",
          "category",
          "id",
          "label"
        ],
        "type": "object"
      },
      "TravelSpendRequestMetadata": {
        "properties": {
          "origin": {
            "$ref": "#/components/schemas/PublicTravelLocation",
            "nullable": true
          },
          "payment_method": {
            "enum": [
              "NONE",
              "SPEND_ALLOCATION"
            ],
            "type": "string"
          },
          "travel_location": {
            "$ref": "#/components/schemas/PublicTravelLocation"
          },
          "travel_request_type": {
            "enum": [
              "GROUP",
              "INDIVIDUAL"
            ],
            "type": "string"
          },
          "trip_end_date": {
            "format": "date",
            "type": "string"
          },
          "trip_start_date": {
            "format": "date",
            "type": "string"
          }
        },
        "required": [
          "origin",
          "payment_method",
          "travel_location",
          "travel_request_type",
          "trip_end_date",
          "trip_start_date"
        ],
        "type": "object"
      },
      "TravelSpendRequestMetadataDetail": {
        "properties": {
          "origin": {
            "$ref": "#/components/schemas/PublicTravelLocation",
            "nullable": true
          },
          "payment_method": {
            "enum": [
              "NONE",
              "SPEND_ALLOCATION"
            ],
            "type": "string"
          },
          "spend_estimate_line_items": {
            "items": {
              "$ref": "#/components/schemas/TravelSpendEstimateLineItem"
            },
            "type": "array"
          },
          "travel_location": {
            "$ref": "#/components/schemas/PublicTravelLocation"
          },
          "travel_request_type": {
            "enum": [
              "GROUP",
              "INDIVIDUAL"
            ],
            "type": "string"
          },
          "trip_end_date": {
            "format": "date",
            "type": "string"
          },
          "trip_start_date": {
            "format": "date",
            "type": "string"
          }
        },
        "required": [
          "origin",
          "payment_method",
          "spend_estimate_line_items",
          "travel_location",
          "travel_request_type",
          "trip_end_date",
          "trip_start_date"
        ],
        "type": "object"
      },
      "TreasuryAccountResponse": {
        "example": {
          "account_type": "WALLET_ACCOUNT",
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "name": "Ramp Checking Account"
        },
        "properties": {
          "account_type": {
            "description": "Type of financial account (WALLET_ACCOUNT, BROKERAGE_ACCOUNT, MANAGED_PORTFOLIO_ACCOUNT)",
            "enum": [
              "BROKERAGE_ACCOUNT",
              "MANAGED_PORTFOLIO_ACCOUNT",
              "WALLET_ACCOUNT"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "BROKERAGE_ACCOUNT": "A self-directed Ramp Treasury brokerage account.",
              "MANAGED_PORTFOLIO_ACCOUNT": "A managed Ramp Treasury portfolio account.",
              "WALLET_ACCOUNT": "A Ramp Treasury checking account."
            }
          },
          "id": {
            "description": "Identifier of the treasury account",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "description": "Name of the treasury account",
            "type": "string"
          }
        },
        "required": [
          "account_type",
          "id",
          "name"
        ],
        "type": "object"
      },
      "TreasuryBalanceHistoryItemResponse": {
        "example": {
          "amount": {
            "amount": 1250000,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "date": "2024-02-15"
        },
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Available balance and currency for the account on this date"
          },
          "date": {
            "description": "Date of the account balance",
            "format": "date",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "date"
        ],
        "type": "object"
      },
      "TreasuryTransactionResponse": {
        "example": {
          "amount": {
            "amount": 50000,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "date": "2024-02-15T14:30:00",
          "description": "Transfer to brokerage",
          "destination_account_name": "Apex Brokerage",
          "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa7",
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "source_account_name": "Ramp Checking Account",
          "sync_status": "SYNC_READY",
          "treasury_transfer_type": "WALLET_TRANSFER"
        },
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Transaction amount and currency"
          },
          "date": {
            "description": "Date when the transaction was initiated",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Description signifying the type of transfer",
            "type": "string"
          },
          "destination_account_name": {
            "description": "Destination account for the transaction",
            "nullable": true,
            "type": "string"
          },
          "entity_id": {
            "description": "Business entity this treasury transaction is associated with",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "id": {
            "description": "Unique identifier for the treasury transaction",
            "format": "uuid",
            "type": "string"
          },
          "source_account_name": {
            "description": "Source account for the transaction",
            "nullable": true,
            "type": "string"
          },
          "sync_status": {
            "description": "Synchronization status of the treasury transaction",
            "enum": [
              "NOT_SYNC_READY",
              "SYNCED",
              "SYNC_READY"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "NOT_SYNC_READY": "The object is missing required accounting setup and is not ready to sync.",
              "SYNCED": "The object has already been synced to the accounting provider.",
              "SYNC_READY": "The object is ready to sync to the accounting provider."
            }
          },
          "treasury_transfer_type": {
            "description": "Type of treasury transfer",
            "enum": [
              "BROKERAGE_ORDER",
              "MANAGED_PORTFOLIO_ACTIVITY",
              "MANAGED_PORTFOLIO_TRANSFER",
              "WALLET_TRANSFER"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "BROKERAGE_ORDER": "A self-directed brokerage order.",
              "MANAGED_PORTFOLIO_ACTIVITY": "An activity inside a managed portfolio account.",
              "MANAGED_PORTFOLIO_TRANSFER": "A transfer to or from a managed portfolio account.",
              "WALLET_TRANSFER": "A transfer to or from a Ramp Checking Account."
            }
          }
        },
        "required": [
          "amount",
          "date",
          "description",
          "destination_account_name",
          "entity_id",
          "id",
          "source_account_name",
          "sync_status",
          "treasury_transfer_type"
        ],
        "type": "object"
      },
      "TriggerEntityMetadata": {
        "discriminator": {
          "mapping": {
            "GLOBAL_FORM_RESPONSE": "#/components/schemas/GlobalFormResponseTriggerEntityMetadata",
            "IRONCLAD_WORKFLOW_GATE": "#/components/schemas/IroncladWorkflowGateTriggerEntityMetadata",
            "LAUNCH_ESIGN_WORKFLOW": "#/components/schemas/ESignTriggerEntityMetadata",
            "LAUNCH_EXTERNAL_APPROVAL": "#/components/schemas/ExternalApprovalTriggerEntityMetadata",
            "LAUNCH_IRONCLAD_WORKFLOW": "#/components/schemas/IroncladTriggerEntityMetadata",
            "LAUNCH_THIRD_PARTY_RISK_MANAGEMENT_VENDOR_REVIEW_WORKFLOW": "#/components/schemas/ThirdPartyRiskManagementVendorReviewTriggerEntityMetadata",
            "LAUNCH_TICKETING_WORKFLOW": "#/components/schemas/TicketingTriggerEntityMetadata",
            "LAUNCH_VENDOR_ONBOARDING": "#/components/schemas/VendorOnboardingTriggerEntityMetadata",
            "SEND_BACK": "#/components/schemas/SendBackTriggerEntityMetadata"
          },
          "propertyName": "trigger_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ESignTriggerEntityMetadata"
          },
          {
            "$ref": "#/components/schemas/ExternalApprovalTriggerEntityMetadata"
          },
          {
            "$ref": "#/components/schemas/GlobalFormResponseTriggerEntityMetadata"
          },
          {
            "$ref": "#/components/schemas/IroncladTriggerEntityMetadata"
          },
          {
            "$ref": "#/components/schemas/IroncladWorkflowGateTriggerEntityMetadata"
          },
          {
            "$ref": "#/components/schemas/SendBackTriggerEntityMetadata"
          },
          {
            "$ref": "#/components/schemas/ThirdPartyRiskManagementVendorReviewTriggerEntityMetadata"
          },
          {
            "$ref": "#/components/schemas/TicketingTriggerEntityMetadata"
          },
          {
            "$ref": "#/components/schemas/VendorOnboardingTriggerEntityMetadata"
          }
        ],
        "title": "TriggerEntityMetadata"
      },
      "TripLocationSegmentResource": {
        "properties": {
          "end_date": {
            "description": "The date the trip segment ends",
            "format": "date-time",
            "type": "string"
          },
          "location": {
            "$ref": "#/components/schemas/TravelLocationResource",
            "description": "The location of the trip segment"
          },
          "start_date": {
            "description": "The date the trip segment starts",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "end_date",
          "location",
          "start_date"
        ],
        "type": "object"
      },
      "TripResource": {
        "properties": {
          "created_at": {
            "description": "The date the trip was created",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "The description for the trip",
            "nullable": true,
            "type": "string"
          },
          "end_date": {
            "description": "The date the trip ends",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier for the trip",
            "format": "uuid",
            "type": "string"
          },
          "length_in_days": {
            "description": "Number of days for the trip",
            "type": "integer"
          },
          "locations": {
            "description": "Destinations and location segments for the trip",
            "items": {
              "$ref": "#/components/schemas/TripLocationSegmentResource"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the trip",
            "type": "string"
          },
          "spend_events": {
            "description": "Spend events for the trip",
            "items": {
              "$ref": "#/components/schemas/TripSpendEventResource"
            },
            "type": "array"
          },
          "start_date": {
            "description": "The date the trip starts",
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "description": "Current trip status",
            "enum": [
              "cancelled",
              "completed",
              "ongoing",
              "upcoming"
            ],
            "type": "string"
          },
          "total_spend": {
            "deprecated": true,
            "description": "Total spend for the trip. Deprecated: use `total_spend_amount` instead.",
            "readOnly": true,
            "type": "number"
          },
          "total_spend_amount": {
            "$ref": "#/components/schemas/ApiSignedAmount",
            "description": "Total spend for the trip in minor units with an explicit ISO 4217 currency code. May be negative for refund-dominated trips. `null` when the trip has no spend events or its spend events do not share a single recognized currency.",
            "nullable": true,
            "readOnly": true
          },
          "travel_types": {
            "description": "Types of travel for this trip (flights, hotels, cars)",
            "items": {
              "enum": [
                "CAR",
                "FLIGHT",
                "HOTEL"
              ],
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "updated_at": {
            "description": "The date the trip was last updated",
            "format": "date-time",
            "type": "string"
          },
          "user_id": {
            "description": "User/traveler's ID",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "created_at",
          "description",
          "end_date",
          "id",
          "length_in_days",
          "locations",
          "name",
          "spend_events",
          "start_date",
          "status",
          "total_spend",
          "total_spend_amount",
          "travel_types",
          "updated_at",
          "user_id"
        ],
        "type": "object",
        "x-resource-name": "trips"
      },
      "TripSpendEventResource": {
        "properties": {
          "id": {
            "description": "The ID of the spend event",
            "format": "uuid",
            "readOnly": true,
            "type": "string"
          },
          "spend_type": {
            "description": "The type of the spend event",
            "enum": [
              "BILL",
              "REIMBURSEMENT",
              "TRANSACTION"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "spend_type"
        ],
        "type": "object"
      },
      "TypedValue": {
        "discriminator": {
          "mapping": {
            "ARRAY": "#/components/schemas/ArrayValue",
            "BOOL": "#/components/schemas/BoolValue",
            "INT": "#/components/schemas/IntValue",
            "JSONB": "#/components/schemas/JSONBValue",
            "NUMERIC": "#/components/schemas/NumericValue",
            "STR": "#/components/schemas/StrValue"
          },
          "propertyName": "type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ArrayValue"
          },
          {
            "$ref": "#/components/schemas/BoolValue"
          },
          {
            "$ref": "#/components/schemas/IntValue"
          },
          {
            "$ref": "#/components/schemas/JSONBValue"
          },
          {
            "$ref": "#/components/schemas/NumericValue"
          },
          {
            "$ref": "#/components/schemas/StrValue"
          }
        ]
      },
      "UUIDStrRequestBody": {
        "format": "uuid",
        "type": "string"
      },
      "UnifiedRequestDetail": {
        "discriminator": {
          "mapping": {
            "SPEND_REQUEST": "#/components/schemas/UnifiedSpendRequestDetail"
          },
          "propertyName": "unified_request_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/UnifiedSpendRequestDetail"
          }
        ]
      },
      "UnifiedRequestResource": {
        "discriminator": {
          "mapping": {
            "SPEND_REQUEST": "#/components/schemas/UnifiedSpendRequest"
          },
          "propertyName": "unified_request_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/UnifiedSpendRequest"
          }
        ]
      },
      "UnifiedSpendRequest": {
        "discriminator": {
          "mapping": {
            "APPROVAL_ONLY": "#/components/schemas/ApprovalOnlyRequest",
            "FUND_UNARCHIVE": "#/components/schemas/FundUnarchiveRequest",
            "PROCUREMENT_SPEND_ALLOCATION": "#/components/schemas/ProcurementSpendAllocationRequest",
            "PURCHASE_ORDER": "#/components/schemas/PurchaseOrderRequest",
            "SPEND_ALLOCATION": "#/components/schemas/SpendAllocationRequest",
            "TRAVEL": "#/components/schemas/TravelRequest"
          },
          "propertyName": "unified_spend_request_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ApprovalOnlyRequest"
          },
          {
            "$ref": "#/components/schemas/FundUnarchiveRequest"
          },
          {
            "$ref": "#/components/schemas/ProcurementSpendAllocationRequest"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderRequest"
          },
          {
            "$ref": "#/components/schemas/SpendAllocationRequest"
          },
          {
            "$ref": "#/components/schemas/TravelRequest"
          }
        ]
      },
      "UnifiedSpendRequestDetail": {
        "discriminator": {
          "mapping": {
            "APPROVAL_ONLY": "#/components/schemas/ApprovalOnlyRequestDetail",
            "FUND_UNARCHIVE": "#/components/schemas/FundUnarchiveRequestDetail",
            "PROCUREMENT_SPEND_ALLOCATION": "#/components/schemas/ProcurementSpendAllocationRequestDetail",
            "PURCHASE_ORDER": "#/components/schemas/PurchaseOrderRequestDetail",
            "SPEND_ALLOCATION": "#/components/schemas/SpendAllocationRequestDetail",
            "TRAVEL": "#/components/schemas/TravelRequestDetail"
          },
          "propertyName": "unified_spend_request_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/ApprovalOnlyRequestDetail"
          },
          {
            "$ref": "#/components/schemas/FundUnarchiveRequestDetail"
          },
          {
            "$ref": "#/components/schemas/ProcurementSpendAllocationRequestDetail"
          },
          {
            "$ref": "#/components/schemas/PurchaseOrderRequestDetail"
          },
          {
            "$ref": "#/components/schemas/SpendAllocationRequestDetail"
          },
          {
            "$ref": "#/components/schemas/TravelRequestDetail"
          }
        ]
      },
      "UploadBillDenialReason": {
        "title": "UploadBillDenialReason",
        "type": "string",
        "x-enum-descriptions": {
          "archived": "The purchase order has been archived.",
          "no_permission": "The user does not have permission to upload a bill for the purchase order.",
          "not_purchase_order": "The spend request is not associated with a purchase order.",
          "parent_blanket_purchase_order": "The purchase order is a blanket PO with child POs. Bills are linked to its child POs instead.",
          "po_has_change_order": "The purchase order already has a pending change order."
        },
        "x-extensible-enum": [
          "archived",
          "no_permission",
          "not_purchase_order",
          "parent_blanket_purchase_order",
          "po_has_change_order"
        ]
      },
      "UploadedFileRequestBody": {
        "format": "binary",
        "title": "UploadedFile",
        "type": "string"
      },
      "User": {
        "example": {
          "business_id": "9abffcf0-dd7d-42f0-b806-ce0502ab6496",
          "custom_fields": [
            {
              "name": "Cost Center",
              "value": "R&D - Data"
            },
            {
              "name": "Employee ID",
              "value": "f4efe11c-337f-49a5-86b3-5df128233f2c"
            },
            {
              "name": "Region",
              "value": "EMEA"
            },
            {
              "name": "Team",
              "value": "Core Platform"
            }
          ],
          "department_id": "2d68eb67-f6eb-4284-8683-7d530c77a5a6",
          "email": "cardholder_7@company.com",
          "employee_id": "f4efe11c-337f-49a5-86b3-5df128233f2c",
          "entity_id": "0e90959a-28ba-4f7d-a75b-9c241f384b9a",
          "first_name": "Linda",
          "id": "bde8334e-042e-4f39-9a5d-355ae17342e6",
          "is_manager": false,
          "last_name": "Gu",
          "location_id": "f4efe11c-221f-4b49-a1e4-33eaf96a49ee",
          "manager_id": "ccc5d4cc-337f-49a5-86b3-5df128233f2c",
          "phone": 8004559999,
          "role": "BUSINESS_USER",
          "scheduled_deactivation_date": null,
          "scheduled_invitation_date": null,
          "status": "USER_ACTIVE"
        },
        "properties": {
          "business_id": {
            "description": "Unique identifier of the company that the employee's working for.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "businesses",
              "type": "many-to-one"
            }
          },
          "custom_fields": {
            "description": "A list of custom fields of the user.",
            "items": {
              "$ref": "#/components/schemas/ApiUserCustomField"
            },
            "readOnly": true,
            "type": "array"
          },
          "department_id": {
            "description": "Unique identifier of the employee's department",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "departments",
              "type": "many-to-one"
            }
          },
          "email": {
            "description": "The employee's email address",
            "type": "string"
          },
          "employee_id": {
            "description": "An alternative identifier for an employee, coming from external systems, which can be used in place of an email.",
            "nullable": true,
            "type": "string"
          },
          "entity_id": {
            "description": "Unique identifier of business entity user is associated with.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "first_name": {
            "description": "First name of the employee",
            "type": "string"
          },
          "id": {
            "description": "Unique employee identifier",
            "format": "uuid",
            "type": "string"
          },
          "is_manager": {
            "description": "Whether the employee is a manager",
            "readOnly": true,
            "type": "boolean"
          },
          "last_name": {
            "description": "Last name of the employee",
            "type": "string"
          },
          "location_id": {
            "description": "Unique identifier of the employee's location",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "locations",
              "type": "many-to-one"
            }
          },
          "manager_id": {
            "description": "Unique identifier of the employee's manager",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          },
          "phone": {
            "description": "The employee's phone number",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "role": {
            "description": "The employee's role",
            "enum": [
              "AUDITOR",
              "BUSINESS_ADMIN",
              "BUSINESS_BOOKKEEPER",
              "BUSINESS_OWNER",
              "BUSINESS_USER",
              "GUEST_USER",
              "IT_ADMIN",
              "UNBUNDLED_ADMIN",
              "UNBUNDLED_BOOKKEEPER",
              "UNBUNDLED_OWNER",
              "UNBUNDLED_USER"
            ],
            "type": "string"
          },
          "scheduled_deactivation_date": {
            "description": "The date when the user is scheduled to be deactivated. Presented in ISO8601 format.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "scheduled_invitation_date": {
            "description": "The date when the user (currently in USER_DRAFT status) is scheduled to be invited to Ramp. Presented in ISO8601 format. Null if no invitation is scheduled.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "status": {
            "enum": [
              "INVITE_EXPIRED",
              "INVITE_PENDING",
              "USER_ACTIVE",
              "USER_DRAFT",
              "USER_INACTIVE",
              "USER_ONBOARDING",
              "USER_SUSPENDED"
            ],
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "business_id",
          "custom_fields",
          "department_id",
          "employee_id",
          "entity_id",
          "is_manager",
          "location_id",
          "manager_id",
          "phone",
          "scheduled_deactivation_date",
          "scheduled_invitation_date",
          "status"
        ],
        "type": "object",
        "x-resource-name": "users"
      },
      "UserDeferredTask": {
        "example": {
          "context": {
            "acting_user_id": "c45f22e0-4c15-4a64-8580-3819e89baf6d"
          },
          "data": {
            "user_id": "f4efe11c-221f-4b49-a1e4-33eaf96a49ee"
          },
          "id": "2d68eb67-f6eb-4284-8683-7d530c77a5a6",
          "status": "SUCCESS"
        },
        "properties": {
          "context": {
            "$ref": "#/components/schemas/ApiUserDeferredTaskContext",
            "description": "Further context for the deferred task."
          },
          "data": {
            "$ref": "#/components/schemas/ApiUserDeferredTaskData",
            "description": "Detailed data of the deferred task."
          },
          "id": {
            "description": "Unique identifier of the deferred task.",
            "format": "uuid",
            "type": "string"
          },
          "status": {
            "description": "Status of the deferred task. It could be one of the following values: STARTED, IN_PROGRESS, ERROR, SUCCESS",
            "type": "string"
          }
        },
        "type": "object"
      },
      "UserDisplay": {
        "properties": {
          "email": {
            "type": "string"
          },
          "first_name": {
            "type": "string"
          },
          "has_set_name": {
            "readOnly": true,
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "is_deleted": {
            "type": "boolean"
          },
          "is_inactive": {
            "type": "boolean"
          },
          "is_preloaded": {
            "type": "boolean"
          },
          "last_name": {
            "type": "string"
          },
          "profile_picture_url": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email",
          "first_name",
          "id",
          "is_deleted",
          "is_inactive",
          "is_preloaded",
          "last_name",
          "profile_picture_url"
        ],
        "type": "object"
      },
      "UserEntity": {
        "properties": {
          "entity_type": {
            "enum": [
              "USER"
            ],
            "title": "Entity Type",
            "type": "string"
          },
          "user": {
            "$ref": "#/components/schemas/ApprovalUser"
          }
        },
        "required": [
          "entity_type",
          "user"
        ],
        "title": "UserEntity",
        "type": "object"
      },
      "UserLifecycleStatus": {
        "description": "Represents the lifecycle stage that a user is in.\n\nDraft: User record exists but cannot accept invites or take any actions.\nPending: User has not yet accepted their invite or is marked as preloaded.\nActive: User has accepted their invite and has access to Ramp.\nInactive: The user has been deactivated.\nDeleted: The user has been soft-deleted.",
        "enum": [
          "ACTIVE",
          "DELETED",
          "DRAFT",
          "INACTIVE",
          "PENDING"
        ],
        "title": "UserLifecycleStatus",
        "type": "string"
      },
      "UserResource": {
        "properties": {
          "email": {
            "title": "Email",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "email",
          "name"
        ],
        "title": "UserResource",
        "type": "object"
      },
      "UserValueDumpSchema": {
        "properties": {
          "email": {
            "description": "Email address of the selected user.",
            "title": "Email",
            "type": "string"
          },
          "first_name": {
            "description": "First name of the selected user.",
            "title": "First Name",
            "type": "string"
          },
          "last_name": {
            "description": "Last name of the selected user.",
            "title": "Last Name",
            "type": "string"
          },
          "user_uuid": {
            "description": "UUID of the selected user.",
            "title": "User Uuid",
            "type": "string"
          }
        },
        "required": [
          "email",
          "first_name",
          "last_name",
          "user_uuid"
        ],
        "title": "UserValueDumpSchema",
        "type": "object"
      },
      "Vendor": {
        "example": {
          "accounting_vendor_remote_id": "1234",
          "address": {
            "address_line_1": "442 Good St",
            "address_line_2": null,
            "city": "San Diego",
            "country": "US",
            "postal_code": "94105",
            "state": "CA"
          },
          "addresses": [
            {
              "address_line_1": "442 Good St",
              "address_line_2": null,
              "city": "San Diego",
              "country": "US",
              "id": "0b1a0d92-3f07-4e02-9f2c-2b3b6f6e2a25",
              "is_default": true,
              "postal_code": "94105",
              "state": "CA"
            }
          ],
          "billing_frequency": null,
          "contacts": [
            "315eb85a-3a60-45ba-8d1c-67385cd0281f",
            "5453d095-38ad-4656-8d73-df4e204a51b4"
          ],
          "country": "US",
          "created_at": "2024-05-12T02:23:00+00:00",
          "default_entity_id": "90b73fdf-e058-4cad-970d-0ed5a6949792",
          "default_payment_method": {
            "policy": {
              "data": {
                "account_nickname": "Primary",
                "currency": "USD",
                "id": "0b1a0d92-3f07-4e02-9f2c-2b3b6f6e2a25",
                "is_default": true,
                "payment_method": "ACH"
              },
              "kind": "BANK_ACCOUNT"
            },
            "update_source": "MANUAL"
          },
          "description": "Vendor for art supplies",
          "external_vendor_id": "EXT-12345",
          "federal_tax_classification": "C_CORPORATION",
          "id": "4f08baf7-e3f0-4271-aedd-4d2c2214ed9a",
          "is_active": true,
          "is_deletable": false,
          "merchant_id": null,
          "name": "Ali's Art shop",
          "name_legal": "Ali's Art shop LLC",
          "net_payment_terms": 30,
          "parent_vendor_id": null,
          "sk_category_id": 30,
          "sk_category_name": "General merchandise",
          "state": "CA",
          "subsidiary": [
            "USMF"
          ],
          "tax_address": {
            "address_line_1": "1234 Main St",
            "address_line_2": "Suite 200",
            "city": "San Diego",
            "country": "US",
            "postal_code": "94105",
            "state": "CA"
          },
          "total_spend_all_time": {
            "amount": 18500,
            "currency_code": "USD"
          },
          "total_spend_last_30_days": {
            "amount": 18500,
            "currency_code": "USD"
          },
          "total_spend_last_365_days": {
            "amount": 18500,
            "currency_code": "USD"
          },
          "total_spend_ytd": {
            "amount": 18500,
            "currency_code": "USD"
          },
          "updated_at": "2024-05-14T02:23:00+00:00",
          "vendor_owner_id": "8ca6cfe2-2bea-46f9-998b-56c1a8ac9454",
          "vendor_type": "BUSINESS"
        },
        "properties": {
          "accounting_vendor_remote_id": {
            "description": "The accounting remote id of the vendor.",
            "nullable": true,
            "type": "string"
          },
          "address": {
            "$ref": "#/components/schemas/ApiAddressResource",
            "description": "The default address of the vendor."
          },
          "addresses": {
            "description": "The addresses of the vendor.",
            "items": {
              "$ref": "#/components/schemas/ApiVendorAddressResource"
            },
            "type": "array"
          },
          "billing_frequency": {
            "description": "The billing frequency for this vendor.",
            "enum": [
              "ANNUAL",
              "MONTHLY",
              "MULTIPLE",
              "NA",
              "OTHER",
              "QUARTERLY",
              "ROLLING",
              "TBD",
              "TWICE_A_YEAR"
            ],
            "type": "string"
          },
          "contacts": {
            "description": "Unique identifiers of contacts associated with this vendor.",
            "items": {
              "description": "Unique identifier of the vendor contact.",
              "format": "uuid",
              "type": "string"
            },
            "type": "array"
          },
          "country": {
            "description": "The 2-letter country of the vendor.",
            "type": "string"
          },
          "created_at": {
            "description": "The date and time when this vendor was created.",
            "format": "date-time",
            "type": "string"
          },
          "default_entity_id": {
            "description": "Unique identifier of the default business entity associated with this vendor.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "default_payment_method": {
            "$ref": "#/components/schemas/DefaultPaymentMethodResource",
            "description": "Default payment method for this vendor, including update source and policy.",
            "nullable": true,
            "readOnly": true
          },
          "description": {
            "description": "Description of the vendor.",
            "type": "string"
          },
          "external_vendor_id": {
            "description": "Customer-defined external identifier for the vendor. This is independent of accounting system remote IDs.",
            "nullable": true,
            "type": "string"
          },
          "federal_tax_classification": {
            "description": "The federal tax classification of the vendor.",
            "enum": [
              "C_CORPORATION",
              "INDIVIDUAL_SOLE_PROPRIETOR_SINGLE_MEMBER_LLC",
              "INTERNATIONAL",
              "LLC_C_CORPORATION",
              "LLC_PARTNERSHIP",
              "LLC_S_CORPORATION",
              "OTHER",
              "PARTNERSHIP",
              "S_CORPORATION",
              "TRUST_ESTATE"
            ],
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the vendor.",
            "format": "uuid",
            "type": "string"
          },
          "is_active": {
            "description": "Whether this vendor is active.",
            "type": "boolean"
          },
          "is_deletable": {
            "description": "Whether this vendor is deletable.",
            "readOnly": true,
            "type": "boolean"
          },
          "merchant_id": {
            "description": "The id of the card merchant.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "merchants",
              "type": "many-to-many"
            }
          },
          "name": {
            "description": "Name of the vendor.",
            "type": "string"
          },
          "name_legal": {
            "description": "Legal name of the vendor.",
            "type": "string"
          },
          "net_payment_terms": {
            "description": "Number of days after receipt that payment is due. 0 means due on receipt.",
            "nullable": true,
            "type": "integer"
          },
          "parent_vendor_id": {
            "description": "Unique identifier of the parent vendor, if this vendor has one.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "sk_category_id": {
            "description": "Ramp category code of the vendor.",
            "enum": [
              1,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              2,
              20,
              21,
              23,
              24,
              25,
              26,
              27,
              28,
              29,
              3,
              30,
              31,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              4,
              40,
              41,
              42,
              43,
              44,
              5,
              6,
              7,
              8,
              9
            ],
            "type": "integer",
            "x-enum-descriptions": {
              "1": "Pet",
              "2": "Other",
              "3": "Office",
              "4": "Airlines",
              "5": "Car rental",
              "6": "Lodging",
              "7": "Travel miscellaneous",
              "8": "Taxi and rideshare",
              "9": "Freight, moving and delivery services",
              "10": "Shipping",
              "11": "Utilities",
              "12": "Office supplies and cleaning",
              "13": "General merchandise",
              "14": "Electronics",
              "15": "Clothing",
              "16": "Books and newspapers",
              "17": "Supermarkets and grocery stores",
              "18": "Fuel and gas",
              "19": "Restaurants",
              "20": "Alcohol and bars",
              "21": "Medical",
              "23": "Fees and financial institutions",
              "24": "Entertainment",
              "25": "Professional services",
              "26": "Taxes and tax preparation",
              "27": "Advertising",
              "28": "Parking",
              "29": "Car services",
              "30": "Gambling",
              "31": "Clubs and memberships",
              "32": "Legal",
              "33": "Education",
              "34": "Charitable donations",
              "35": "Political organizations",
              "36": "Religious organizations",
              "37": "Fines",
              "38": "Government services",
              "39": "Intra-company purchases",
              "40": "SaaS / Software",
              "41": "Cloud computing",
              "42": "Streaming services",
              "43": "Internet and phone",
              "44": "Insurance"
            }
          },
          "sk_category_name": {
            "description": "The category name of the vendor.",
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "subsidiary": {
            "description": "ERP subsidiary identifiers associated with this vendor. Only returned when `include_subsidiary=true`.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "tax_address": {
            "$ref": "#/components/schemas/ApiAddressResource",
            "description": "The tax address of the vendor."
          },
          "total_spend_all_time": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total spend for all time for this vendor.",
            "readOnly": true
          },
          "total_spend_last_30_days": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total spend for the last 30 days for this vendor.",
            "readOnly": true
          },
          "total_spend_last_365_days": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total spend for the last 365 days for this vendor.",
            "readOnly": true
          },
          "total_spend_ytd": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total spend year-to-date for this vendor.",
            "readOnly": true
          },
          "updated_at": {
            "description": "The date and time when this vendor was last updated.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "vendor_owner_id": {
            "description": "Unique identifier of the user which owns this vendor.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "vendor_type": {
            "description": "The type of vendor if bill pay.",
            "enum": [
              "BUSINESS",
              "INDIVIDUAL"
            ],
            "type": "string"
          }
        },
        "required": [
          "accounting_vendor_remote_id",
          "addresses",
          "contacts",
          "country",
          "created_at",
          "default_entity_id",
          "default_payment_method",
          "external_vendor_id",
          "id",
          "is_active",
          "is_deletable",
          "name",
          "parent_vendor_id",
          "total_spend_all_time",
          "total_spend_last_30_days",
          "total_spend_last_365_days",
          "total_spend_ytd",
          "updated_at",
          "vendor_owner_id"
        ],
        "type": "object",
        "x-resource-name": "vendors"
      },
      "VendorACHDetailsRequestBody": {
        "properties": {
          "account_name": {
            "default": "Checking Account",
            "description": "Account name",
            "type": "string"
          },
          "account_number": {
            "description": "ACH account number",
            "type": "string"
          },
          "account_owner_type": {
            "default": "BUSINESS",
            "description": "Account owner type",
            "enum": [
              "BUSINESS",
              "INDIVIDUAL"
            ],
            "type": "string"
          },
          "account_type": {
            "default": "Checking",
            "description": "Account type",
            "enum": [
              "Checking",
              "Savings"
            ],
            "type": "string"
          },
          "routing_number": {
            "description": "ACH routing number",
            "type": "string"
          }
        },
        "required": [
          "account_number",
          "routing_number"
        ],
        "type": "object"
      },
      "VendorAccount": {
        "example": {
          "accounting_connection_id": "85e1fa6c-1fe9-432e-83d8-80971a91f903",
          "code": "19566",
          "created_at": "2019-08-28T14:15:22+00:00",
          "entity_remote_ids": [
            "sub-001",
            "sub-002"
          ],
          "id": "123",
          "is_active": true,
          "is_synced": true,
          "name": "Amazon",
          "provider_name": "QuickBooks",
          "ramp_id": "649b6731-33c6-4ff5-8a5d-2333fcc90ace",
          "updated_at": "2020-08-28T14:40:12+00:00",
          "vendor_category_info": {
            "id": "Merchant",
            "name": "Merchant",
            "ramp_id": "96bb7007-eec5-430f-8d09-e033cbc000c2"
          }
        },
        "properties": {
          "accounting_connection_id": {
            "description": "ID of the accounting connection that the vendor is uploaded to.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "accounting_connections",
              "type": "one-to-many"
            }
          },
          "code": {
            "description": "e.g. 19566",
            "type": "string"
          },
          "created_at": {
            "description": "Date time at which the vendor account was created on Ramp.",
            "format": "date-time",
            "type": "string"
          },
          "entity_remote_ids": {
            "description": "Remote/external IDs of entities that this vendor is available for. Null means the vendor is available for all connected entities.",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "readOnly": true,
            "type": "array"
          },
          "id": {
            "description": "Remote/external ID of accounting vendor in ERP system.",
            "type": "string"
          },
          "is_active": {
            "description": "Whether this vendor account is active on Ramp",
            "type": "boolean"
          },
          "is_synced": {
            "description": "Whether this vendor has been synced to remote ERP.",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the vendor.",
            "type": "string"
          },
          "provider_name": {
            "description": "Name of the accounting connection that the vendor is uploaded to.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "ramp_id": {
            "description": "id to uniquely identify a vendor account within Ramp system",
            "format": "uuid",
            "type": "string"
          },
          "updated_at": {
            "description": "Date time at which the vendor account was most recently updated.",
            "format": "date-time",
            "type": "string"
          },
          "vendor_category_info": {
            "$ref": "#/components/schemas/ApiAccountingCategoryInfo",
            "description": "Category info of the general ledger account."
          }
        },
        "required": [
          "accounting_connection_id",
          "created_at",
          "entity_remote_ids",
          "is_active",
          "is_synced",
          "name",
          "provider_name",
          "ramp_id",
          "updated_at"
        ],
        "type": "object"
      },
      "VendorContactValueDumpSchema": {
        "properties": {
          "email": {
            "title": "Email",
            "type": "string"
          },
          "first_name": {
            "default": null,
            "nullable": true,
            "title": "First Name",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "is_default": {
            "title": "Is Default",
            "type": "boolean"
          },
          "last_name": {
            "default": null,
            "nullable": true,
            "title": "Last Name",
            "type": "string"
          },
          "phone": {
            "default": null,
            "nullable": true,
            "title": "Phone",
            "type": "string"
          }
        },
        "required": [
          "email",
          "id",
          "is_default"
        ],
        "title": "VendorContactValueDumpSchema",
        "type": "object"
      },
      "VendorCreditAppliedBill": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of this Vendor Credit that has been applied to the given bill. Currently only USD is supported for Vendor Credits.",
            "readOnly": true
          },
          "bill_id": {
            "description": "UUID of the bill or draft bill that this vendor credit is applied to",
            "format": "uuid",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "amount",
          "bill_id"
        ],
        "type": "object"
      },
      "VendorCreditExpenseLineItem": {
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the line item.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the line item. Currently only USD is supported for Vendor Credits.",
            "readOnly": true
          },
          "memo": {
            "description": "Memo of the line item",
            "type": "string"
          }
        },
        "required": [
          "accounting_field_selections",
          "amount"
        ],
        "type": "object"
      },
      "VendorCreditInventoryLineItem": {
        "properties": {
          "accounting_field_selections": {
            "description": "List of accounting field options selected to code the line item.",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "type": "array"
          },
          "amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Amount of the line item, equal to the product of unit quantity and unit price. Currently only USD is supported for Vendor Credits.",
            "readOnly": true
          },
          "memo": {
            "description": "Memo of the line item",
            "type": "string"
          },
          "unit_price": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Unit price of the line item. Currently only USD is supported for Vendor Credits.",
            "readOnly": true
          },
          "unit_quantity": {
            "description": "Unit quantity of the line item",
            "type": "integer"
          }
        },
        "required": [
          "accounting_field_selections",
          "amount",
          "unit_price",
          "unit_quantity"
        ],
        "type": "object"
      },
      "VendorCreditResource": {
        "example": {
          "accounting_date": "2022-08-22",
          "accounting_field_selections": [
            {
              "category_info": {
                "external_id": "GL_ACCOUNT",
                "id": "0c0d0bcc-8716-4e05-a651-4ad5e64d2b3e",
                "name": "GL Account",
                "type": "GL_ACCOUNT"
              },
              "display_name": "Office Expenses - Renamed",
              "external_id": "601000",
              "id": "07b4ce4d-2750-412e-aef4-6b7815f1411c",
              "name": "Office Expenses",
              "type": "GL_ACCOUNT"
            }
          ],
          "applied_bills": [
            {
              "amount": {
                "amount": 4000,
                "currency_code": "USD",
                "minor_unit_conversion_rate": 100
              },
              "bill_id": "b4ff2c24-9832-4e97-8035-ca22488d7b62"
            }
          ],
          "applied_draft_bills": [
            {
              "amount": {
                "amount": 3000,
                "currency_code": "USD",
                "minor_unit_conversion_rate": 100
              },
              "bill_id": "08256ee8-de1e-4ac7-8cf2-b413fcebc14a"
            }
          ],
          "archived_at": null,
          "created_at": "2022-08-22T10:30:00.000000+00:00",
          "entity_id": "0f1e2d3c-4b5a-6789-0123-4567890abcde",
          "expense_line_items": [
            {
              "accounting_field_selections": [
                {
                  "category_info": {
                    "external_id": "GL_ACCOUNT",
                    "id": "396d543c-cbc4-40e9-b39e-2f70904ca1fc",
                    "name": "GL Account",
                    "type": "GL_ACCOUNT"
                  },
                  "display_name": "Meals and Entertainment",
                  "external_id": "702000",
                  "id": "0ac28cc6-aff2-42c1-962f-e860511ecc92",
                  "name": "Food and Drink",
                  "type": "GL_ACCOUNT"
                }
              ],
              "amount": {
                "amount": 50000,
                "currency_code": "USD",
                "minor_unit_conversion_rate": 100
              },
              "memo": "Expense line item memo"
            }
          ],
          "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
          "inventory_line_items": [
            {
              "accounting_field_selections": [
                {
                  "category_info": {
                    "external_id": "GL_ACCOUNT",
                    "id": "966e61ca-f54e-4c62-813e-4f5b4050bb22",
                    "name": "GL Account",
                    "type": "GL_ACCOUNT"
                  },
                  "display_name": null,
                  "external_id": "601000",
                  "id": "3353e3e9-c6ed-4bcf-8349-0668cf351d97",
                  "name": "Office Supplies",
                  "type": "GL_ACCOUNT"
                }
              ],
              "amount": {
                "amount": 25000,
                "currency_code": "USD",
                "minor_unit_conversion_rate": 100
              },
              "memo": "Inventory line item memo",
              "unit_price": {
                "amount": 5000,
                "currency_code": "USD",
                "minor_unit_conversion_rate": 100
              },
              "unit_quantity": 5
            }
          ],
          "reference_bill_id": "b1a2c3d4-e5f6-7890-1234-567890abcdef",
          "reference_number": "VENDORCREDITREF_12345",
          "remaining_amount": {
            "amount": 100000,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "total_amount": {
            "amount": 200000,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "total_applied_amount": {
            "amount": 100000,
            "currency_code": "USD",
            "minor_unit_conversion_rate": 100
          },
          "vendor_id": "f1e2d3c4-b5a6-7890-1234-567890fedcba"
        },
        "properties": {
          "accounting_date": {
            "description": "Accounting date of the vendor credit",
            "format": "date",
            "type": "string"
          },
          "accounting_field_selections": {
            "description": "List of accounting field selections associated with this vendor credit",
            "items": {
              "$ref": "#/components/schemas/ApiAccountingFieldSelection"
            },
            "readOnly": true,
            "type": "array"
          },
          "applied_bills": {
            "description": "Bills that this Vendor Credit has been applied to. A Vendor Credit can be applied to multiple Bills",
            "items": {
              "$ref": "#/components/schemas/VendorCreditAppliedBill"
            },
            "readOnly": true,
            "type": "array"
          },
          "applied_draft_bills": {
            "description": "Draft Bills that this Vendor Credit has been applied to. A Vendor Credit can be applied to multiple Draft Bills",
            "items": {
              "$ref": "#/components/schemas/VendorCreditAppliedBill"
            },
            "readOnly": true,
            "type": "array"
          },
          "archived_at": {
            "description": "The datetime the vendor credit was archived. Null for active credits. Archived credits cannot be applied to bills, even when remaining_amount is positive.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "created_at": {
            "description": "Date and time when the vendor credit was created",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "entity_id": {
            "description": "UUID of the business entity associated with this vendor credit",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "entities",
              "type": "many-to-one"
            }
          },
          "expense_line_items": {
            "description": "Expense line items of the vendor credit. Expense line items contain an overall amount.",
            "items": {
              "$ref": "#/components/schemas/VendorCreditExpenseLineItem"
            },
            "type": "array"
          },
          "id": {
            "description": "Unique identifier for the vendor credit",
            "type": "string"
          },
          "inventory_line_items": {
            "description": "Inventory line items of the vendor credit. Inventory line items are tied to a particular good or service.",
            "items": {
              "$ref": "#/components/schemas/VendorCreditInventoryLineItem"
            },
            "type": "array"
          },
          "reference_bill_id": {
            "description": "UUID of the bill that was the origin of this vendor credit, if any",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "bills",
              "type": "many-to-one"
            }
          },
          "reference_number": {
            "description": "Reference number from the vendor credit memo",
            "nullable": true,
            "type": "string"
          },
          "remaining_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Unapplied amount, equal to total_amount minus total_applied_amount. This amount is retained for archived credits and does not indicate eligibility to apply the credit. Credits with a non-null archived_at cannot be applied. Currently only USD is supported for Vendor Credits.",
            "readOnly": true
          },
          "total_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total amount of the vendor credit, sum of all line items. Currently only USD is supported for Vendor Credits.",
            "readOnly": true
          },
          "total_applied_amount": {
            "$ref": "#/components/schemas/CurrencyAmount",
            "description": "Total amount that has been applied to bills and/or draft bills. Currently only USD is supported for Vendor Credits.",
            "readOnly": true
          },
          "vendor_id": {
            "description": "UUID of the payee associated with this vendor credit",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "vendors",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "accounting_date",
          "accounting_field_selections",
          "applied_bills",
          "applied_draft_bills",
          "archived_at",
          "created_at",
          "entity_id",
          "expense_line_items",
          "id",
          "inventory_line_items",
          "reference_bill_id",
          "reference_number",
          "remaining_amount",
          "total_amount",
          "total_applied_amount",
          "vendor_id"
        ],
        "type": "object",
        "x-resource-name": "vendor_credits"
      },
      "VendorCryptoWalletDetailsRequestBody": {
        "properties": {
          "account_name": {
            "default": null,
            "description": "Name of the wallet's account holder.",
            "nullable": true,
            "type": "string"
          },
          "network": {
            "description": "Blockchain network the wallet receives stablecoin payouts on.",
            "enum": [
              "ARBITRUM_MAINNET",
              "AVALANCHE_MAINNET",
              "BASE_MAINNET",
              "ETHEREUM_MAINNET",
              "OPTIMISM_MAINNET",
              "PLASMA_MAINNET",
              "POLYGON_MAINNET",
              "SOLANA_MAINNET",
              "STELLAR_MAINNET",
              "SUI_MAINNET",
              "TEMPO_MAINNET"
            ],
            "type": "string"
          },
          "wallet_address": {
            "description": "Destination crypto wallet address.",
            "type": "string"
          }
        },
        "required": [
          "network",
          "wallet_address"
        ],
        "type": "object"
      },
      "VendorOnboardingRequestDetail": {
        "properties": {
          "detail_type": {
            "$ref": "#/components/schemas/ProcurementPayeeDetailsRequestField"
          },
          "display_text": {
            "title": "Display Text",
            "type": "string"
          },
          "submitted_at": {
            "default": null,
            "format": "date-time",
            "nullable": true,
            "title": "Submitted At",
            "type": "string"
          }
        },
        "required": [
          "detail_type",
          "display_text"
        ],
        "title": "VendorOnboardingRequestDetail",
        "type": "object"
      },
      "VendorOnboardingStatusDump": {
        "properties": {
          "custom_form_collection_response_uuid": {
            "nullable": true,
            "type": "string"
          },
          "status": {
            "enum": [
              "NOT_REQUESTED",
              "NOT_SENT",
              "REQUESTED",
              "SUBMITTED"
            ],
            "type": "string"
          },
          "status_display_description": {
            "nullable": true,
            "type": "string"
          },
          "status_display_text": {
            "type": "string"
          },
          "submitted_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "enum": [
              "CUSTOM_FORM",
              "PAYMENT",
              "TAX"
            ],
            "type": "string"
          }
        },
        "required": [
          "custom_form_collection_response_uuid",
          "status",
          "status_display_description",
          "status_display_text",
          "submitted_at",
          "type"
        ],
        "type": "object"
      },
      "VendorOnboardingTriggerEntityMetadata": {
        "properties": {
          "payee_uuid": {
            "nullable": true,
            "title": "Payee Uuid",
            "type": "string"
          },
          "request_details": {
            "items": {
              "$ref": "#/components/schemas/VendorOnboardingRequestDetail"
            },
            "title": "Request Details",
            "type": "array"
          },
          "trigger_type": {
            "enum": [
              "LAUNCH_VENDOR_ONBOARDING"
            ],
            "title": "Trigger Type",
            "type": "string"
          }
        },
        "required": [
          "payee_uuid",
          "request_details",
          "trigger_type"
        ],
        "title": "VendorOnboardingTriggerEntityMetadata",
        "type": "object"
      },
      "VendorValueDumpSchema": {
        "properties": {
          "payee_uuid": {
            "default": null,
            "nullable": true,
            "title": "Payee Uuid",
            "type": "string"
          },
          "vendor_contact": {
            "$ref": "#/components/schemas/VendorContactValueDumpSchema",
            "default": null,
            "nullable": true
          },
          "vendor_logo": {
            "default": null,
            "nullable": true,
            "title": "Vendor Logo",
            "type": "string"
          },
          "vendor_name": {
            "title": "Vendor Name",
            "type": "string"
          }
        },
        "required": [
          "vendor_name"
        ],
        "title": "VendorValueDumpSchema",
        "type": "object"
      },
      "VendorWireBeneficiaryAddressRequestBody": {
        "example": {
          "address_line_1": "100 Main St",
          "address_line_2": "Suite 200",
          "city": "Boston",
          "country": "US",
          "postal_code": "02101",
          "state": "MA"
        },
        "properties": {
          "address_line_1": {
            "description": "Primary address line of the vendor.",
            "type": "string"
          },
          "address_line_2": {
            "description": "Secondary address line or suite number of the vendor.",
            "nullable": true,
            "type": "string"
          },
          "city": {
            "description": "City of the recipient address.",
            "pattern": "\\S",
            "type": "string"
          },
          "country": {
            "description": "Two-letter ISO 3166-1 country code of the recipient address.",
            "type": "string"
          },
          "postal_code": {
            "description": "Postal or ZIP code of the recipient address.",
            "pattern": "\\S",
            "type": "string"
          },
          "state": {
            "description": "Address state/province abbreviation. For US addresses, use the two-letter state abbreviation, such as VA. Required for addresses in US, CA, and AU. Ignored for other countries.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "address_line_1",
          "city",
          "country",
          "postal_code"
        ],
        "type": "object"
      },
      "VendorWireDetailsRequestBody": {
        "properties": {
          "account_name": {
            "description": "Account holder name. If omitted, the account is labeled Checking Account and any saved beneficiary address uses the vendor name.",
            "type": "string"
          },
          "account_number": {
            "description": "Wire account number",
            "type": "string"
          },
          "beneficiary_address": {
            "$ref": "#/components/schemas/VendorWireBeneficiaryAddressRequestBody",
            "description": "Recipient's mailing address, not the bank's address. If omitted and automatic address copying is enabled for your business, the vendor's default mailing address is copied when complete and valid. If copying is disabled or no usable default exists, wire details are saved without an address. Later vendor address changes do not update this copy."
          },
          "routing_number": {
            "description": "Wire routing number",
            "type": "string"
          }
        },
        "required": [
          "account_number",
          "routing_number"
        ],
        "type": "object"
      },
      "Vertex": {
        "discriminator": {
          "mapping": {
            "ACTION": "#/components/schemas/Action",
            "BLOCK_GROUP": "#/components/schemas/BlockGroup",
            "CONDITION": "#/components/schemas/ConditionVertex",
            "SDK_CONDITION": "#/components/schemas/SDKCondition"
          },
          "propertyName": "vertex_type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/Action"
          },
          {
            "$ref": "#/components/schemas/BlockGroup"
          },
          {
            "$ref": "#/components/schemas/ConditionVertex"
          },
          {
            "$ref": "#/components/schemas/SDKCondition"
          }
        ]
      },
      "ViewAgreementDenialReason": {
        "enum": [
          "NO_PERMISSION"
        ],
        "title": "ViewAgreementDenialReason",
        "type": "string"
      },
      "VirtualCard": {
        "example": {
          "created_at": "2022-05-04T00:00:00+00:00",
          "fund_id": "506a7096-98c0-4ab5-86ef-20c884a78e74",
          "id": "d8135cfe-0396-4b2d-b2cf-ad809fb04731",
          "is_card_suspended": false,
          "user_id": "3a5b1f62-988f-4190-bf31-b7ae87c5df42"
        },
        "properties": {
          "created_at": {
            "description": "Date time at which the card is created. It conforms to ISO8601 format",
            "format": "date-time",
            "type": "string"
          },
          "fund_id": {
            "description": "Unique identifier of the associated fund.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "funds",
              "type": "many-to-one"
            }
          },
          "id": {
            "description": "Unique identifier of the card.",
            "format": "uuid",
            "type": "string"
          },
          "is_card_suspended": {
            "description": "Whether the virtual card has been locked.",
            "readOnly": true,
            "type": "boolean"
          },
          "user_id": {
            "description": "Unique identifier of the card owner.",
            "format": "uuid",
            "type": "string",
            "x-relationship": {
              "inverse_field_name": null,
              "reference_field_name": "id",
              "target_resource": "users",
              "type": "many-to-one"
            }
          }
        },
        "required": [
          "fund_id",
          "is_card_suspended"
        ],
        "type": "object",
        "x-resource-name": "virtual_cards"
      },
      "WbpApprovalRefSchema": {
        "properties": {
          "is_for_current_user": {
            "description": "Whether the approval belongs to the requesting user. Null when not yet known",
            "nullable": true,
            "title": "Is For Current User",
            "type": "boolean"
          },
          "is_generating": {
            "description": "Whether the approval's summary is still being generated",
            "title": "Is Generating",
            "type": "boolean"
          },
          "progression_node_id": {
            "description": "Blank-canvas progression node this approval is wired to.",
            "title": "Progression Node Id",
            "type": "string"
          },
          "wbp_approval_id": {
            "description": "ID of the WBP approval.",
            "title": "Wbp Approval Id",
            "type": "string"
          }
        },
        "required": [
          "is_for_current_user",
          "is_generating",
          "progression_node_id",
          "wbp_approval_id"
        ],
        "title": "WbpApprovalRefSchema",
        "type": "object"
      },
      "WbpFieldAttributionResponseSchema": {
        "properties": {
          "actor": {
            "description": "Who wrote the field value.",
            "enum": [
              "agent",
              "user"
            ],
            "title": "Actor",
            "type": "string",
            "x-enum-descriptions": {
              "agent": "The field value was filled by an AI agent.",
              "user": "The field value was provided by a user."
            }
          },
          "name": {
            "description": "Custom form field id.",
            "title": "Name",
            "type": "string"
          },
          "source_detail": {
            "default": null,
            "description": "Short user-facing note on where the value came from.",
            "nullable": true,
            "title": "Source Detail",
            "type": "string"
          },
          "source_type": {
            "$ref": "#/components/schemas/FieldValueSourceType",
            "default": null,
            "description": "Where an agent-written value came from; null for user-written values.",
            "nullable": true
          },
          "source_url": {
            "default": null,
            "description": "Link to the exact source when one exists (e.g. Slack permalink, Notion page).",
            "nullable": true,
            "title": "Source Url",
            "type": "string"
          }
        },
        "required": [
          "actor",
          "name"
        ],
        "title": "WbpFieldAttributionResponseSchema",
        "type": "object"
      },
      "WbpInfoResponseSchema": {
        "properties": {
          "approvals": {
            "description": "WBP approvals for this request, with status and ownership.",
            "items": {
              "$ref": "#/components/schemas/WbpApprovalRefSchema"
            },
            "title": "Approvals",
            "type": "array"
          },
          "blank_canvas_execution_id": {
            "default": null,
            "description": "Blank-canvas progression execution backing this request",
            "nullable": true,
            "title": "Blank Canvas Execution Id",
            "type": "string"
          },
          "field_attributions": {
            "description": "Per-field attribution of how each value was provided.",
            "items": {
              "$ref": "#/components/schemas/WbpFieldAttributionResponseSchema"
            },
            "title": "Field Attributions",
            "type": "array"
          },
          "wbp_request_id": {
            "description": "ID of the backing WBP request.",
            "title": "Wbp Request Id",
            "type": "string"
          },
          "workflow_backed_policy_display_name": {
            "description": "Display name of the workflow-backed policy.",
            "title": "Workflow Backed Policy Display Name",
            "type": "string"
          },
          "workflow_backed_policy_id": {
            "description": "ID of the workflow-backed policy.",
            "title": "Workflow Backed Policy Id",
            "type": "string"
          }
        },
        "required": [
          "approvals",
          "blank_canvas_execution_id",
          "field_attributions",
          "wbp_request_id",
          "workflow_backed_policy_display_name",
          "workflow_backed_policy_id"
        ],
        "title": "WbpInfoResponseSchema",
        "type": "object"
      },
      "WbxMigrationInfo": {
        "properties": {
          "assigned_program_name": {
            "description": "Name of the spend program currently associated with the request.",
            "nullable": true,
            "title": "Assigned Program Name",
            "type": "string"
          },
          "migrated_at": {
            "description": "Time the original request moved from its policy to a spend program.",
            "format": "date-time",
            "title": "Migrated At",
            "type": "string"
          },
          "original_policy_name": {
            "description": "Name of the policy under which the request was submitted.",
            "title": "Original Policy Name",
            "type": "string"
          }
        },
        "required": [
          "assigned_program_name",
          "migrated_at",
          "original_policy_name"
        ],
        "title": "WbxMigrationInfo",
        "type": "object"
      },
      "WorkflowExecutionPollStatus": {
        "properties": {
          "last_updated": {
            "title": "Last Updated",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/WorkflowExecutionStatus"
          }
        },
        "required": [
          "last_updated",
          "status"
        ],
        "title": "WorkflowExecutionPollStatus",
        "type": "object"
      },
      "WorkflowExecutionStatus": {
        "enum": [
          "cancelled",
          "failed",
          "finished",
          "finished_early",
          "not_started",
          "running",
          "scheduled"
        ],
        "title": "WorkflowExecutionStatus",
        "type": "string"
      },
      "WorkflowsCondition": {
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/ConditionGroup"
          },
          "then": {
            "items": {
              "$ref": "#/components/schemas/Vertex"
            },
            "type": "array"
          }
        },
        "required": [
          "condition",
          "then"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "oauth2": {
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://api.ramp.com/v1/authorize",
            "scopes": {
              "accounting:read": "Grant read access to accounting",
              "accounting:write": "Grant write access to accounting",
              "ai_spend:read": "Grant read access to ai_spend",
              "ai_spend:write": "Grant write access to ai_spend",
              "ai_usage:write": "Grant write access to ai_usage",
              "applications:read": "Grant read access to applications",
              "applications:write": "Grant write access to applications",
              "approval_chains:write": "Grant write access to approval_chains",
              "approvals:read": "Grant read access to approvals",
              "approvals:write": "Grant write access to approvals",
              "attendee_types:read": "Grant read access to attendee_types",
              "attendee_types:write": "Grant write access to attendee_types",
              "audit_logs:read": "Grant read access to audit_logs",
              "bank_accounts:read": "Grant read access to bank_accounts",
              "bank_accounts:write": "Grant write access to bank_accounts",
              "bank_feeds:read": "Grant read access to bank_feeds",
              "billing_statements:read": "Grant read access to billing_statements",
              "bills:read": "Grant read access to bills",
              "bills:write": "Grant write access to bills",
              "blank_canvas:write": "Grant write access to blank_canvas",
              "budgets:read": "Grant read access to budgets",
              "business:read": "Grant read access to business",
              "cards:read": "Grant read access to cards",
              "cards:read_vault": "Grant read_vault access to cards",
              "cards:write": "Grant write access to cards",
              "cashbacks:read": "Grant read access to cashbacks",
              "comments:write": "Grant write access to comments",
              "custom_forms:read": "Grant read access to custom_forms",
              "custom_records:read": "Grant read access to custom_records",
              "custom_records:write": "Grant write access to custom_records",
              "departments:read": "Grant read access to departments",
              "departments:write": "Grant write access to departments",
              "embedded_cards:write": "Grant write access to embedded_cards",
              "entities:read": "Grant read access to entities",
              "external_attendees:read": "Grant read access to external_attendees",
              "external_attendees:write": "Grant write access to external_attendees",
              "funds:read": "Grant read access to funds",
              "funds:write": "Grant write access to funds",
              "incorporation:read": "Grant read access to incorporation",
              "incorporation:write": "Grant write access to incorporation",
              "item_receipts:read": "Grant read access to item_receipts",
              "item_receipts:write": "Grant write access to item_receipts",
              "limits:read": "Grant read access to limits",
              "limits:write": "Grant write access to limits",
              "locations:read": "Grant read access to locations",
              "locations:write": "Grant write access to locations",
              "memos:read": "Grant read access to memos",
              "memos:write": "Grant write access to memos",
              "merchants:read": "Grant read access to merchants",
              "offline_access": "Grant access to offline_access",
              "openid": "Grant access to openid",
              "payments:read": "Grant read access to payments",
              "payments:write": "Grant write access to payments",
              "purchase_orders:read": "Grant read access to purchase_orders",
              "purchase_orders:write": "Grant write access to purchase_orders",
              "receipt_integrations:read": "Grant read access to receipt_integrations",
              "receipt_integrations:write": "Grant write access to receipt_integrations",
              "receipts:read": "Grant read access to receipts",
              "receipts:write": "Grant write access to receipts",
              "reimbursements:read": "Grant read access to reimbursements",
              "reimbursements:write": "Grant write access to reimbursements",
              "repayments:read": "Grant read access to repayments",
              "sourcing:read": "Grant read access to sourcing",
              "sourcing:write": "Grant write access to sourcing",
              "spend_programs:read": "Grant read access to spend_programs",
              "spend_programs:write": "Grant write access to spend_programs",
              "spend_requests:read": "Grant read access to spend_requests",
              "spend_requests:write": "Grant write access to spend_requests",
              "statements:read": "Grant read access to statements",
              "tasks:read": "Grant read access to tasks",
              "transactions:read": "Grant read access to transactions",
              "transactions:write": "Grant write access to transactions",
              "transfers:read": "Grant read access to transfers",
              "treasury:read": "Grant read access to treasury",
              "trips:read": "Grant read access to trips",
              "unified_requests:read": "Grant read access to unified_requests",
              "unified_requests:write": "Grant write access to unified_requests",
              "users:read": "Grant read access to users",
              "users:write": "Grant write access to users",
              "vendors:read": "Grant read access to vendors",
              "vendors:write": "Grant write access to vendors",
              "workflows:read": "Grant read access to workflows",
              "x402:write": "Grant write access to x402",
              "x402_provisioning:write": "Grant write access to x402_provisioning"
            },
            "tokenUrl": "https://api.ramp.com/developer/v1/token"
          },
          "clientCredentials": {
            "scopes": {
              "accounting:read": "Grant read access to accounting",
              "accounting:write": "Grant write access to accounting",
              "ai_spend:read": "Grant read access to ai_spend",
              "ai_spend:write": "Grant write access to ai_spend",
              "ai_usage:write": "Grant write access to ai_usage",
              "applications:read": "Grant read access to applications",
              "applications:write": "Grant write access to applications",
              "approval_chains:write": "Grant write access to approval_chains",
              "approvals:read": "Grant read access to approvals",
              "approvals:write": "Grant write access to approvals",
              "attendee_types:read": "Grant read access to attendee_types",
              "attendee_types:write": "Grant write access to attendee_types",
              "audit_logs:read": "Grant read access to audit_logs",
              "bank_accounts:read": "Grant read access to bank_accounts",
              "bank_accounts:write": "Grant write access to bank_accounts",
              "bank_feeds:read": "Grant read access to bank_feeds",
              "billing_statements:read": "Grant read access to billing_statements",
              "bills:read": "Grant read access to bills",
              "bills:write": "Grant write access to bills",
              "blank_canvas:write": "Grant write access to blank_canvas",
              "budgets:read": "Grant read access to budgets",
              "business:read": "Grant read access to business",
              "cards:read": "Grant read access to cards",
              "cards:read_vault": "Grant read_vault access to cards",
              "cards:write": "Grant write access to cards",
              "cashbacks:read": "Grant read access to cashbacks",
              "comments:write": "Grant write access to comments",
              "custom_forms:read": "Grant read access to custom_forms",
              "custom_records:read": "Grant read access to custom_records",
              "custom_records:write": "Grant write access to custom_records",
              "departments:read": "Grant read access to departments",
              "departments:write": "Grant write access to departments",
              "embedded_cards:write": "Grant write access to embedded_cards",
              "entities:read": "Grant read access to entities",
              "external_attendees:read": "Grant read access to external_attendees",
              "external_attendees:write": "Grant write access to external_attendees",
              "funds:read": "Grant read access to funds",
              "funds:write": "Grant write access to funds",
              "incorporation:read": "Grant read access to incorporation",
              "incorporation:write": "Grant write access to incorporation",
              "item_receipts:read": "Grant read access to item_receipts",
              "item_receipts:write": "Grant write access to item_receipts",
              "limits:read": "Grant read access to limits",
              "limits:write": "Grant write access to limits",
              "locations:read": "Grant read access to locations",
              "locations:write": "Grant write access to locations",
              "memos:read": "Grant read access to memos",
              "memos:write": "Grant write access to memos",
              "merchants:read": "Grant read access to merchants",
              "offline_access": "Grant access to offline_access",
              "openid": "Grant access to openid",
              "payments:read": "Grant read access to payments",
              "payments:write": "Grant write access to payments",
              "purchase_orders:read": "Grant read access to purchase_orders",
              "purchase_orders:write": "Grant write access to purchase_orders",
              "receipt_integrations:read": "Grant read access to receipt_integrations",
              "receipt_integrations:write": "Grant write access to receipt_integrations",
              "receipts:read": "Grant read access to receipts",
              "receipts:write": "Grant write access to receipts",
              "reimbursements:read": "Grant read access to reimbursements",
              "reimbursements:write": "Grant write access to reimbursements",
              "repayments:read": "Grant read access to repayments",
              "sourcing:read": "Grant read access to sourcing",
              "sourcing:write": "Grant write access to sourcing",
              "spend_programs:read": "Grant read access to spend_programs",
              "spend_programs:write": "Grant write access to spend_programs",
              "spend_requests:read": "Grant read access to spend_requests",
              "spend_requests:write": "Grant write access to spend_requests",
              "statements:read": "Grant read access to statements",
              "tasks:read": "Grant read access to tasks",
              "transactions:read": "Grant read access to transactions",
              "transactions:write": "Grant write access to transactions",
              "transfers:read": "Grant read access to transfers",
              "treasury:read": "Grant read access to treasury",
              "trips:read": "Grant read access to trips",
              "unified_requests:read": "Grant read access to unified_requests",
              "unified_requests:write": "Grant write access to unified_requests",
              "users:read": "Grant read access to users",
              "users:write": "Grant write access to users",
              "vendors:read": "Grant read access to vendors",
              "vendors:write": "Grant write access to vendors",
              "workflows:read": "Grant read access to workflows",
              "x402:write": "Grant write access to x402",
              "x402_provisioning:write": "Grant write access to x402_provisioning"
            },
            "tokenUrl": "https://api.ramp.com/developer/v1/token"
          }
        },
        "type": "oauth2"
      }
    }
  },
  "info": {
    "title": "Ramp Developer API",
    "version": "v1"
  },
  "openapi": "3.0.2",
  "paths": {
    "/developer/v1/accounting/accounts": {
      "get": {
        "operationId": "get_gl_account_list_resource",
        "parameters": [
          {
            "description": "Filter by Remote/external ID",
            "in": "query",
            "name": "remote_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by active status. If not provided, returns all objects. If true, returns only active objects. If false, returns only inactive objects.",
            "in": "query",
            "name": "is_active",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter by code.",
            "in": "query",
            "name": "code",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If this object belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "is_synced",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiAccountingGLAccountResourceSchema"
                }
              }
            },
            "description": "Accounts"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "List general ledger accounts",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "You can upload up to 500 general ledger accounts in an all-or-nothing fashion. If a general ledger accounts within a batch is malformed or violates a database constraint, the entire batch containing that account will be disregarded.\nAccounts with matching external IDs on this connection are updated and reactivated if inactive. Accounts omitted from the upload are unchanged.",
        "operationId": "post_gl_account_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingGLAccountUploadRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingGLAccountUploadResponse"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Upload general ledger accounts",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/accounts/{gl_account_id}": {
      "delete": {
        "operationId": "delete_gl_account_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingConnectionIdParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Delete a general ledger account",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_gl_account_resource",
        "parameters": [
          {
            "description": "If this GL account belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GeneralLedgerAccount"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "Fetch a general ledger account",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "gl_account_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "description": "This endpoint can be used to update the name or code of a GL account;",
        "operationId": "patch_gl_account_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingGLAccountUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GeneralLedgerAccount"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update a general ledger account",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/all-connections": {
      "get": {
        "operationId": "get_accounting_all_connections_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingProviderAccessListResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "Fetch all accounting connections for the current business",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/accounting/codings": {
      "post": {
        "operationId": "post_codings_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingCodingCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingCodingCreate"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Post accounting coding selections to an object",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/connection": {
      "delete": {
        "description": "This endpoint only allows disconnecting API based connections.",
        "operationId": "delete_accounting_connection_resource",
        "responses": {
          "204": {
            "description": "Success, No content"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises NotFound",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Disconnect an accounting connection",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "deprecated": true,
        "description": "This endpoint is now deprecated. Please use the `/all-connections` endpoint instead here.",
        "operationId": "get_accounting_current_connection_resource_deprecated",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AccountingProvider"
                    },
                    {
                      "$ref": "#/components/schemas/ApiEmptyResponse"
                    }
                  ]
                }
              }
            },
            "description": "Success"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises NotFound",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "Fetch the current active accounting connection",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "A connection is required in order to use our accounting API functionality.\nIf a Universal CSV connection already exists, it will be upgraded to an API based connection.",
        "operationId": "post_accounting_connection_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingProviderAccessCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountingProvider"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Register a new API based accounting connection",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/connection/{connection_id}": {
      "get": {
        "operationId": "get_accounting_connection_detail_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountingProvider"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "Fetch an accounting connection by ID",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "connection_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "description": "This endpoint is restricted to Accounting API based connections.",
        "operationId": "patch_accounting_connection_detail_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingProviderAccessUpdateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountingProvider"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update an accounting connection",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/connection/{connection_id}/reactivate": {
      "parameters": [
        {
          "in": "path",
          "name": "connection_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "This endpoint allows reactivating a previously disconnected accounting connection\nby changing its status back to linked. This preserves all previous accounting\nfield configurations and settings.\n\nThe business must not have any other active accounting connections.",
        "operationId": "post_reactivate_connection_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountingProvider"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Reactivate a previously unlinked accounting connection",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/connection/{connection_id}/ready-to-migrate": {
      "parameters": [
        {
          "in": "path",
          "name": "connection_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "There must be a different active accounting connection that the customer\nwill migrate away from. Marking an inactive accounting API based\nconnection as ready to migrate makes it available to the customer in the\nERP migration flow UI. See\nhttps://docs.ramp.com/developer-api/v1/accounting-erp-migration for more\ninformation.",
        "operationId": "post_accounting_connection_ready_to_migrate_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountingProvider"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Mark an inactive accounting API based connection as ready to migrate",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/entities": {
      "post": {
        "description": "You can upload up to 500 entities in an all-or-nothing fashion.\nEntities with matching external IDs on this connection are updated and reactivated if inactive. Entities omitted from the upload are unchanged.",
        "operationId": "post_accounting_entity_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingEntityUploadParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingEntityUploadResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Upload entities",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/field-option-filter-rules": {
      "delete": {
        "description": "Removes specific rules identified by their target option and required selections.\nRules that don't exist are counted as duplicates (no-op).",
        "operationId": "delete_field_option_filter_rules_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkDeleteFilterRulesRequestParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkDeleteFilterRulesResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Bulk delete field option filter rules",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      },
      "get": {
        "description": "Returns rules that define which options of a target field are available\nbased on selected options of trigger fields.\nFilterable by target_field_remote_id and target_field_option_remote_id.",
        "operationId": "get_field_option_filter_rules_list_resource",
        "parameters": [
          {
            "description": "Filter by target field option remote ID.",
            "in": "query",
            "name": "target_field_option_remote_id",
            "required": false,
            "schema": {
              "default": null,
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter by target field remote ID.",
            "in": "query",
            "name": "target_field_remote_id",
            "required": false,
            "schema": {
              "default": null,
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "If these filter rules belong to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseFieldOptionFilterRuleResourceSchema"
                }
              }
            },
            "description": "Field option filter rules"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "List field option filter rules",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "Rules define which options of a target tracking category are available\nbased on selected options of trigger tracking categories.\nMultiple rules for the same target option use OR logic between them.\nMultiple required_selections within a single rule use AND logic.",
        "operationId": "post_field_option_filter_rules_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkCreateFilterRulesRequestParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkCreateFilterRulesResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Bulk create field option filter rules",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/accounting/field-options": {
      "get": {
        "operationId": "get_custom_field_option_list_resource",
        "parameters": [
          {
            "description": "Filter by Remote/external ID of custom accounting field options in ERP system.",
            "in": "query",
            "name": "remote_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by active status. If not provided, returns all custom accounting field options. If true, returns only active options. If false, returns only inactive options.",
            "in": "query",
            "name": "is_active",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter by code of custom accounting field options.",
            "in": "query",
            "name": "code",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by visibility of custom accounting field options. If not provided, returns options with any visibility.",
            "in": "query",
            "name": "visibility",
            "required": false,
            "schema": {
              "enum": [
                "HIDDEN",
                "VISIBLE"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "HIDDEN": "The option is hidden from selection in Ramp.",
                "VISIBLE": "The option is available for selection in Ramp."
              }
            }
          },
          {
            "description": "If this custom field option belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Remote/external ID of the custom accounting field in the ERP system. Mutually exclusive with field_id.",
            "in": "query",
            "name": "field_remote_id",
            "required": false,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "The ID of the custom accounting field that this custom accounting field option belongs to. This is the ramp_id returned from custom field endpoints. Mutually exclusive with field_remote_id.",
            "in": "query",
            "name": "field_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiAccountingCustomFieldOptionResourceSchema"
                }
              }
            },
            "description": "FieldOptions"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "List options for a given custom accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "You can upload up to 500 new field options for a given custom accounting field in an all-or-nothing fashion. If a field option within a batch is malformed or violates a database constraint, the entire batch containing that field option will be disregarded.\nTo have a successful upload, please sanitize the data and ensure the field options that you are trying to upload do not already exist on Ramp.\nIf a field option is already on Ramp but you want to update its attributes, please use the PATCH developer/v1/accounting/field-options/{id} endpoint instead.",
        "operationId": "post_custom_field_option_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingCustomFieldOptionUploadRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingCustomFieldOptionUploadResponse"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Upload new options",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/field-options/{field_option_id}": {
      "delete": {
        "operationId": "delete_custom_field_option_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingConnectionIdParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Delete a custom accounting field option",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_custom_field_option_resource",
        "parameters": [
          {
            "description": "If this custom field option belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldOption"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "Fetch a custom accounting field option",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "field_option_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_custom_field_option_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingCustomFieldOptionUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldOption"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update a custom accounting field option",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "put": {
        "operationId": "put_custom_field_option_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingCustomFieldOptionUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldOption"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update a custom accounting field option",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/fields": {
      "get": {
        "operationId": "get_custom_field_list_resource",
        "parameters": [
          {
            "description": "Filter by Remote/external ID of custom accounting fields in ERP system.",
            "in": "query",
            "name": "remote_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by active status. If not provided, returns all custom accounting fields. If true, returns only active fields. If false, returns only inactive fields.",
            "in": "query",
            "name": "is_active",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "If this accounting field belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiAccountingCustomFieldResourceSchema"
                }
              }
            },
            "description": "Fields"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "List custom accounting fields",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "If a custom field with the same id already exists on Ramp, then that existing one will be returned instead of creating a new one; If the existing custom field is inactive, it will be reactivated.\nIf you want to update the existing custom field, please use the PATCH developer/v1/accounting/fields/{id} endpoint instead.",
        "operationId": "post_custom_field_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingCustomFieldCreateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingCustomFieldResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Create a new custom accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/fields/{field_id}": {
      "delete": {
        "operationId": "delete_custom_field_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingConnectionIdParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Delete a custom accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_custom_field_resource",
        "parameters": [
          {
            "description": "If this accounting field belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingCustomFieldResource"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "Fetch a custom accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "field_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_custom_field_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingCustomFieldUpdateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingCustomFieldResource"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update a custom accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/inventory-item": {
      "delete": {
        "operationId": "delete_inventory_item_field_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingConnectionIdParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Delete inventory item accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "description": "Returns the inventory item accounting field for the current accounting connection.",
        "operationId": "get_inventory_item_field_list_resource",
        "parameters": [
          {
            "description": "If this resource belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingInventoryItemFieldResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "Fetch inventory item accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "patch": {
        "operationId": "patch_inventory_item_field_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingInventoryItemFieldUpdateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingInventoryItemFieldResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update inventory item accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "post": {
        "description": "There can only be one active inventory item accounting field per accounting connection.",
        "operationId": "post_inventory_item_field_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingInventoryItemFieldCreateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingInventoryItemFieldResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Create a new inventory item accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/inventory-item/options": {
      "get": {
        "operationId": "get_inventory_item_field_options_list_resource",
        "parameters": [
          {
            "description": "Filter by Remote/external ID",
            "in": "query",
            "name": "remote_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by active status. If not provided, returns all objects. If true, returns only active objects. If false, returns only inactive objects.",
            "in": "query",
            "name": "is_active",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter by code.",
            "in": "query",
            "name": "code",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If this object belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "is_synced",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiAccountingInventoryItemOptionResourceSchema"
                }
              }
            },
            "description": "Inventory Item Options"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "List inventory item options",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "There must be an active inventory item accounting field for the accounting connection.",
        "operationId": "post_inventory_item_field_options_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingInventoryItemOptionsCreateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingInventoryItemOptionsUploadResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Upload inventory item options",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/inventory-item/options/{option_id}": {
      "delete": {
        "operationId": "delete_inventory_item_field_option_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingConnectionIdParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Delete an inventory item option",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "parameters": [
        {
          "in": "path",
          "name": "option_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_inventory_item_field_option_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingInventoryItemOptionUpdateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingInventoryItemOptionResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update an inventory item option",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/ramp-field-options": {
      "post": {
        "operationId": "post_ramp_field_option_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiRampAccountingCustomFieldOptionUploadRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingCustomFieldOptionUploadResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Upload new options for a Ramp-only field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/ramp-field-options/{field_option_id}": {
      "delete": {
        "operationId": "delete_ramp_field_option_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiRequiredAccountingConnectionIdRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Delete a Ramp-only field option",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "parameters": [
        {
          "in": "path",
          "name": "field_option_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_ramp_field_option_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiRampAccountingCustomFieldOptionUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldOption"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update a Ramp-only field option",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/ramp-fields": {
      "get": {
        "operationId": "get_ramp_field_list_resource",
        "parameters": [
          {
            "description": "Filter by Remote/external ID of custom accounting fields in ERP system.",
            "in": "query",
            "name": "remote_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by active status. If not provided, returns all custom accounting fields. If true, returns only active fields. If false, returns only inactive fields.",
            "in": "query",
            "name": "is_active",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "If this accounting field belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiAccountingCustomFieldResourceSchema"
                }
              }
            },
            "description": "Ramp-only fields"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "List Ramp-only accounting fields",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "operationId": "post_ramp_field_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingCustomFieldCreateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingCustomFieldResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Create a Ramp-only accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/ramp-fields/{field_id}": {
      "delete": {
        "operationId": "delete_ramp_field_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingConnectionIdParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Delete a Ramp-only accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_ramp_field_resource",
        "parameters": [
          {
            "description": "If this accounting field belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingCustomFieldResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "Fetch a Ramp-only accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "field_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_ramp_field_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingCustomFieldUpdateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingCustomFieldResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update a Ramp-only accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/ready-to-sync": {
      "post": {
        "description": "Marking an object (for example a transaction) as ready to sync flags it\nas reviewed and complete, so it will be included in the next accounting\nsync that exports data from Ramp to your connected accounting provider\n(ERP), such as NetSuite, QuickBooks, Xero, or Sage Intacct.",
        "operationId": "post_ready_to_sync_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingReadyToSyncParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Objects marked ready to sync"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Mark objects as ready to sync to your accounting provider",
        "tags": [
          "Accounting",
          "accounting"
        ],
        "x-alias": "mark-ready-to-sync",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp",
          "third_party"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": false
      }
    },
    "/developer/v1/accounting/syncs": {
      "post": {
        "description": "This endpoint allows customers to notify Ramp of a list of sync results.\nAn idempotency key is required to ensure that subsequent requests are properly handled.",
        "operationId": "post_sync_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingSyncCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingSyncResource"
                }
              }
            },
            "description": "Object synced"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Post sync status",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/tax/code": {
      "delete": {
        "operationId": "delete_tax_code_field_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingConnectionIdParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Delete tax code accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "description": "Returns the tax code accounting field for the current accounting connection.",
        "operationId": "get_tax_code_field_resource",
        "parameters": [
          {
            "description": "If this resource belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingTaxCodeResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "Fetch tax code accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "patch": {
        "operationId": "patch_tax_code_field_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingTaxCodeUpdateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingTaxCodeResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update tax code accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "post": {
        "description": "There can only be one active tax code accounting field per accounting connection.",
        "operationId": "post_tax_code_field_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingTaxCodeCreateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingTaxCodeResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Create a new tax code accounting field",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/tax/code/options": {
      "get": {
        "operationId": "get_tax_code_field_options_list_resource",
        "parameters": [
          {
            "description": "Filter by Remote/external ID",
            "in": "query",
            "name": "remote_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by active status. If not provided, returns all objects. If true, returns only active objects. If false, returns only inactive objects.",
            "in": "query",
            "name": "is_active",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter by code.",
            "in": "query",
            "name": "code",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If this object belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "is_synced",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiAccountingTaxCodeOptionResourceSchema"
                }
              }
            },
            "description": "Tax Code Options"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "List tax code options",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "There must be an active tax code accounting field for the accounting connection.",
        "operationId": "post_tax_code_field_options_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingTaxCodeOptionsCreateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingTaxCodeOptionsUploadResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Upload tax code options",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/tax/code/options/{option_id}": {
      "delete": {
        "operationId": "delete_tax_code_field_option_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingConnectionIdParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Delete a tax code option",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "parameters": [
        {
          "in": "path",
          "name": "option_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_tax_code_field_option_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingTaxCodeOptionUpdateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingTaxCodeOptionResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update a tax code option",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/tax/rates": {
      "get": {
        "operationId": "get_tax_code_rates_list_resource",
        "parameters": [
          {
            "description": "If this tax rate belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiAccountingTaxRateResourceSchema"
                }
              }
            },
            "description": "Tax rates"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "List tax rates",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "You can upload up to 500 tax rates in an all-or-nothing fashion. If a tax rate within a batch is malformed or violates a database constraint, the entire batch will be disregarded.\nTo have a successful upload, please sanitize the data and ensure the tax rates that you are trying to upload do not already exist on Ramp.",
        "operationId": "post_tax_code_rates_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingTaxRateUploadParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingTaxRateUploadResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Upload tax rates",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/tax/rates/{tax_rate_id}": {
      "delete": {
        "operationId": "delete_tax_rate_detail_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingConnectionIdParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Tax rate deleted"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Delete a tax rate",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "parameters": [
        {
          "in": "path",
          "name": "tax_rate_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_tax_rate_detail_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingTaxRateUpdateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingTaxRateResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update a tax rate",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/vendors": {
      "get": {
        "operationId": "get_accounting_vendor_list_resource",
        "parameters": [
          {
            "description": "Filter by Remote/external ID",
            "in": "query",
            "name": "remote_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by active status. If not provided, returns all objects. If true, returns only active objects. If false, returns only inactive objects.",
            "in": "query",
            "name": "is_active",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter by code.",
            "in": "query",
            "name": "code",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If this object belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "is_synced",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiAccountingVendorResourceSchema"
                }
              }
            },
            "description": "Vendors"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "List vendors",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "You can upload up to 500 vendors in an all-or-nothing fashion. If a vendors within a batch is malformed or violates a database constraint, the entire batch containing that vendors will be disregarded.\nVendors with matching external IDs on this connection are updated and reactivated if inactive. Vendors omitted from the upload are unchanged.",
        "operationId": "post_accounting_vendor_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingVendorUploadRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiAccountingVendorUploadResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Upload vendors",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/accounting/vendors/{vendor_id}": {
      "delete": {
        "operationId": "delete_accounting_vendor_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingConnectionIdParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Delete a vendor",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_accounting_vendor_resource",
        "parameters": [
          {
            "description": "If this vendor belongs to an inactive accounting connection, you must specify that accounting connection's ID.",
            "in": "query",
            "name": "accounting_connection_id",
            "required": false,
            "schema": {
              "default": null,
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "accounting_connections",
                "type": "many-to-one"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorAccount"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:read"
            ]
          }
        ],
        "summary": "Fetch a vendor",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_accounting_vendor_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAccountingVendorUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorAccount"
                }
              }
            },
            "description": "Update vendor"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "accounting:write"
            ]
          }
        ],
        "summary": "Update a vendor",
        "tags": [
          "Accounting"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/ai-spend/api-keys": {
      "get": {
        "description": "Results are sorted by estimated cost in descending order, then by API key\nID in ascending order. A request can match at most 10,000 API keys. Use\nthe providers or statuses filter to narrow larger result sets.\n\nEstimated cost is calculated for the requested period. All other fields\nreflect current metadata for the API key, independent of the requested\ndates. The statuses filter applies to each API key's current status.",
        "operationId": "get_ai_spend_api_key_list_resource",
        "parameters": [
          {
            "description": "Comma-separated current API key statuses to include. Omit to exclude terminated API keys.",
            "explode": false,
            "in": "query",
            "name": "statuses",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "active",
                  "expired",
                  "locked",
                  "terminated"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "active": "The API key is active.",
                  "expired": "The API key has expired.",
                  "locked": "The API key is locked.",
                  "terminated": "The API key was terminated or archived."
                }
              },
              "nullable": false,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated providers to include. Omit to include all supported providers.",
            "explode": false,
            "in": "query",
            "name": "providers",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "ANTHROPIC",
                  "OPENAI",
                  "RAMP"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "ANTHROPIC": "Anthropic",
                  "OPENAI": "OpenAI",
                  "RAMP": "Ramp Router"
                }
              },
              "nullable": false,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "End date of the requested period in UTC, exclusive. The period can span up to 365 days.",
            "in": "query",
            "name": "to_date",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Number of results to return per page. Defaults to 20. Must be between 2 and 100.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 2,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned in page.next from the previous page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Start date of the requested period in UTC, inclusive. Must be on or after 2023-01-01. The period can span up to 365 days.",
            "in": "query",
            "name": "from_date",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseAiSpendApiKeyResourceSchema"
                }
              }
            },
            "description": "AI spend by API key"
          }
        },
        "security": [
          {
            "oauth2": [
              "ai_spend:read"
            ]
          }
        ],
        "summary": "List provider API keys and their estimated spend",
        "tags": [
          "AI Spend",
          "ai-token-spend"
        ],
        "x-alias": "api-key-spend",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": true,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/ai-spend/settings": {
      "delete": {
        "operationId": "delete_ai_spend_settings_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiSpendSettings"
                }
              }
            },
            "description": "Reset AI spend settings"
          }
        },
        "security": [
          {
            "oauth2": [
              "ai_spend:write"
            ]
          }
        ],
        "summary": "Reset the business's AI spend settings to defaults",
        "tags": [
          "AI Spend"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_ai_spend_settings_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiSpendSettings"
                }
              }
            },
            "description": "AI spend settings"
          }
        },
        "security": [
          {
            "oauth2": [
              "ai_spend:read"
            ]
          }
        ],
        "summary": "Retrieve the business's AI spend settings",
        "tags": [
          "AI Spend"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "put": {
        "operationId": "put_ai_spend_settings_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AiSpendSettingsUpdateInputRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiSpendSettings"
                }
              }
            },
            "description": "Updated AI spend settings"
          }
        },
        "security": [
          {
            "oauth2": [
              "ai_spend:write"
            ]
          }
        ],
        "summary": "Replace the business's AI spend settings",
        "tags": [
          "AI Spend"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/ai-spend/tagging-settings": {
      "get": {
        "description": "These settings define the taxonomies Ramp Router uses to label requests\nby what the work was for, and which API keys or users to exclude.\nReturns version 0 and an empty configuration until the\nsettings are first saved, and 404 when the business does not use Ramp\nRouter.",
        "operationId": "get_ai_spend_tagging_settings_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiSpendTaggingSettings"
                }
              }
            },
            "description": "Semantic tagging settings"
          }
        },
        "security": [
          {
            "oauth2": [
              "ai_spend:read"
            ]
          }
        ],
        "summary": "Retrieve the business's Ramp Router semantic tagging settings",
        "tags": [
          "AI Spend"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "put": {
        "description": "The configuration replaces the current one. Send the version from your\nlast read as expected_version; if the settings changed since, the\nrequest fails with 409 and you should read them again before retrying.\nSaving an unchanged configuration does not change the version.",
        "operationId": "put_ai_spend_tagging_settings_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AiSpendTaggingSettingsUpdateInputRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiSpendTaggingSettings"
                }
              }
            },
            "description": "Updated semantic tagging settings"
          }
        },
        "security": [
          {
            "oauth2": [
              "ai_spend:write"
            ]
          }
        ],
        "summary": "Replace the business's Ramp Router semantic tagging settings",
        "tags": [
          "AI Spend"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/ai-spend/team": {
      "get": {
        "description": "User profile fields reflect current Ramp user metadata, independent of the\nrequested dates. Only users with positive estimated spend are returned.",
        "operationId": "get_ai_spend_team_list_resource",
        "parameters": [
          {
            "description": "Comma-separated AI providers to include. Omit to include all supported providers.",
            "explode": false,
            "in": "query",
            "name": "providers",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "ANTHROPIC",
                  "CURSOR",
                  "FIREWORKS",
                  "OPENAI",
                  "RAMP"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "ANTHROPIC": "Anthropic",
                  "CURSOR": "Cursor",
                  "FIREWORKS": "Fireworks AI",
                  "OPENAI": "OpenAI",
                  "RAMP": "Ramp Router"
                }
              },
              "nullable": false,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "End date of the requested period in UTC, exclusive. The period can span up to 365 days.",
            "in": "query",
            "name": "to_date",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Filter by whether Ramp detected anomalous AI spend during the requested period. Omit to include all users.",
            "in": "query",
            "name": "is_anomalous",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Number of results to return per page. Defaults to 20. Must be between 2 and 100.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 2,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned in page.next from the previous page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Start date of the requested period in UTC, inclusive. The period can span up to 365 days.",
            "in": "query",
            "name": "from_date",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiSpendTeamListResponse"
                }
              }
            },
            "description": "Estimated AI spend by Ramp user"
          }
        },
        "security": [
          {
            "oauth2": [
              "ai_spend:read"
            ]
          }
        ],
        "summary": "List Ramp users with estimated AI spend during the requested period",
        "tags": [
          "AI Spend",
          "ai-token-spend"
        ],
        "x-alias": "team-spend",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": true,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/ai-spend/usage": {
      "get": {
        "description": "Rows match the AI Spend page in Ramp. Each row covers one UTC day. By\ndefault rows are grouped by provider, model, and product; use group_by\nto choose other dimensions.\n\nRows are sorted by usage_date, then by the grouped dimensions. A request\ncan match at most 10,000 rows. Use a shorter date range, fewer group_by\ndimensions, or filters to narrow larger result sets.",
        "operationId": "get_ai_spend_usage_list_resource",
        "parameters": [
          {
            "description": "Comma-separated AI providers to include. Omit to include all providers.",
            "explode": false,
            "in": "query",
            "name": "providers",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "ANTHROPIC",
                  "AWS",
                  "AZURE",
                  "CURSOR",
                  "FIREWORKS",
                  "GCP",
                  "OPENAI",
                  "RAMP"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "ANTHROPIC": "Anthropic",
                  "AWS": "AWS Bedrock",
                  "AZURE": "Azure",
                  "CURSOR": "Cursor",
                  "FIREWORKS": "Fireworks AI",
                  "GCP": "Google Cloud (Gemini)",
                  "OPENAI": "OpenAI",
                  "RAMP": "Ramp Router"
                }
              },
              "nullable": false,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated dimensions to group each day's rows by. Defaults to provider,model,product. Fields for dimensions that are not requested are null. When group_by includes user, the date range can span up to 31 days.",
            "explode": false,
            "in": "query",
            "name": "group_by",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "department",
                  "model",
                  "product",
                  "provider",
                  "user"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "department": "Group by the Ramp user's department.",
                  "model": "Group by provider model name.",
                  "product": "Group by the product the usage came from, such as claude_code, codex, or cursor.",
                  "provider": "Group by AI provider.",
                  "user": "Group by Ramp user."
                }
              },
              "nullable": false,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated exact product names to include. Requires group_by to include product. Omit to include all products.",
            "explode": false,
            "in": "query",
            "name": "products",
            "required": false,
            "schema": {
              "items": {
                "minLength": 1,
                "type": "string"
              },
              "nullable": false,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated exact provider model names to include. Omit to include all models.",
            "explode": false,
            "in": "query",
            "name": "models",
            "required": false,
            "schema": {
              "items": {
                "minLength": 1,
                "type": "string"
              },
              "nullable": false,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "End date of the requested period in UTC, exclusive. The period can span up to 365 days.",
            "in": "query",
            "name": "to_date",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Number of results to return per page. Defaults to 20. Must be between 2 and 100.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 2,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned in page.next from the previous page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Start date of the requested period in UTC, inclusive. The period can span up to 365 days.",
            "in": "query",
            "name": "from_date",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseAiSpendUsageResourceSchema"
                }
              }
            },
            "description": "AI usage and spend"
          }
        },
        "security": [
          {
            "oauth2": [
              "ai_spend:read"
            ]
          }
        ],
        "summary": "List AI usage and estimated spend grouped by the requested dimensions",
        "tags": [
          "AI Spend",
          "ai-token-spend"
        ],
        "x-alias": "daily-usage",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": true,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/applications": {
      "get": {
        "description": "Since each business can only have one active financing application, this endpoint will only ever return a single\napplication.",
        "operationId": "get_application_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiApplicationResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "applications:read"
            ]
          }
        ],
        "summary": "Fetch a financing application",
        "tags": [
          "Application",
          "applications"
        ],
        "x-alias": "get",
        "x-annotatedRequest": false,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "third_party"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": true,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "This endpoint will create a new business for the applicant and email them with instructions to sign up and\ncontinue the application. If the applicant email already exists in Ramp, an invitation email will be re-sent if\nthe business is still in the application stage. If the business is already approved, this operation will be a\nno-op. Note this endpoint returns success regardless of whether the email exists in Ramp.",
        "operationId": "post_application_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiApplicationCreateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Undocumented"
          }
        },
        "security": [
          {
            "oauth2": []
          }
        ],
        "summary": "Create a financing application",
        "tags": [
          "Application"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": false,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/approvals": {
      "get": {
        "operationId": "get_approvals_list",
        "parameters": [
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          },
          {
            "description": "Type of resource under approval.",
            "in": "query",
            "name": "entity_type",
            "required": true,
            "schema": {
              "enum": [
                "BILL",
                "REIMBURSEMENT",
                "TRANSACTION"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "BILL": "A bill under approval.",
                "REIMBURSEMENT": "A reimbursement under approval.",
                "TRANSACTION": "A card transaction under approval."
              }
            }
          },
          {
            "description": "Unique identifiers of the resources under approval.",
            "in": "query",
            "name": "entity_ids",
            "required": true,
            "schema": {
              "items": {
                "format": "uuid",
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApprovalsResourceSchema"
                }
              }
            },
            "description": "Approvals"
          }
        },
        "security": [
          {
            "oauth2": [
              "approvals:read"
            ]
          }
        ],
        "summary": "List approval data for a set of Transactions, Reimbursements, or Bills",
        "tags": [
          "Approvals"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/approvals/{entity_type}/{entity_id}/add-step": {
      "parameters": [
        {
          "description": "Type of resource under approval.",
          "in": "path",
          "name": "entity_type",
          "required": true,
          "schema": {
            "enum": [
              "bill",
              "reimbursement",
              "transaction"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "bill": "A bill under approval.",
              "reimbursement": "A reimbursement under approval.",
              "transaction": "A card transaction under approval."
            }
          },
          "style": "simple"
        },
        {
          "description": "Unique identifier of the resource under approval.",
          "in": "path",
          "name": "entity_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "This endpoint allows you to add a new approval step to an existing approval instance.\nThe step can contain one or more users identified by either their UUID or email address.\nThe step will be added at the specified position in the approval chain.\n\nNote: This is still in development and only supports adding the user approval group type.",
        "operationId": "post_add_to_approval_instance_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddToApprovalInstanceResourceRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Approver added to approval instance"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Unauthorized",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Entity, user, or approval instance not found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Validation error",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "approval_chains:write"
            ]
          }
        ],
        "summary": "Add an approver to an approval instance",
        "tags": [
          "Approvals"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/audit-logs/events": {
      "get": {
        "operationId": "get_audit_log_events_list_resource",
        "parameters": [
          {
            "description": "Filter by audit log events attributed to these user IDs",
            "explode": false,
            "in": "query",
            "name": "user_ids",
            "required": false,
            "schema": {
              "items": {
                "format": "uuid",
                "type": "string"
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter by audit log events created at or after this date. start_time is accepted as a compatibility alias.",
            "in": "query",
            "name": "from_date",
            "required": false,
            "schema": {
              "default": null,
              "format": "date-time",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter by audit log events created at or before this date. end_time is accepted as a compatibility alias.",
            "in": "query",
            "name": "to_date",
            "required": false,
            "schema": {
              "default": null,
              "format": "date-time",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter by audit log events of these actor types",
            "explode": false,
            "in": "query",
            "name": "event_actor_types",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "policy_agent",
                  "ramp",
                  "spend_request_agent",
                  "user"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "spend_request_agent": "Spend Request Agent activity."
                }
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter by audit log events of these types",
            "explode": false,
            "in": "query",
            "name": "event_types",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "ABK agent blocked on user",
                  "ABK agent review requested",
                  "ABK agent schedule failed",
                  "ABK agent started",
                  "AI custom field config executed",
                  "AI spend anomaly review state changed",
                  "AI usage limits updated",
                  "Account closed",
                  "Account details previewed",
                  "Account details viewed",
                  "Account document downloaded",
                  "Account number deleted",
                  "Account number generated",
                  "Account number renamed",
                  "Account opened",
                  "Account renamed",
                  "Accounting ai auto mark ready",
                  "Accounting coding rules updated",
                  "Accounting fields updated",
                  "Accounting fixed asset changed",
                  "Accounting fixed asset class changed",
                  "Accounting lease changed",
                  "Accounting provider access changed",
                  "Accounting settings updated",
                  "Accounting split templates updated",
                  "Activated card",
                  "Added bill field",
                  "Added card acceptance policy",
                  "Added procurement field",
                  "Added user to funds",
                  "Added vendor field",
                  "Admin changed email",
                  "Admin changed phone",
                  "Agent access request resolved",
                  "Agent access requested",
                  "Agent created",
                  "Agent current version changed",
                  "Agent permissions updated",
                  "Agent version created",
                  "Agent version published",
                  "Amortization schedule updated",
                  "App Store app disconnected",
                  "Approval authority changed",
                  "Approval chain updated",
                  "Approval policy set as default",
                  "Approval step added",
                  "Approval step approved",
                  "Approval step rejected",
                  "Approval step skipped",
                  "Approval step terminated",
                  "Approved by manager",
                  "Approved card edit request with modifications",
                  "Approved card edit request",
                  "Approved funds edit request with modifications",
                  "Approved funds edit request",
                  "Approved new card request with modifications",
                  "Approved new card request",
                  "Approved procurement change request",
                  "Approved request for new funds with modifications",
                  "Approved request for new funds",
                  "Ascenda credit redeemed",
                  "Attendee split",
                  "Authorization letter downloaded",
                  "Automatic investment transfer canceled",
                  "Automatic rule management actions reviewed",
                  "Automation deleted",
                  "Bank account ACH details viewed",
                  "Bank account entity owner changed",
                  "Bank account sensitive details viewed",
                  "Bank account updated",
                  "Bank letter downloaded",
                  "Bill Pay setup progress updated",
                  "Bill created by AP coworker",
                  "Bill linked to PO",
                  "Bill linked to contract",
                  "Bill linked",
                  "Bill pay AP coworker questions answered",
                  "Bill pay accepted PDR bank account ownership match",
                  "Bill pay accepted sync for bank account from vendor network",
                  "Bill pay accepted sync for vendor card acceptance policy from vendor network",
                  "Bill pay accepted sync for vendor check mailing address from vendor network",
                  "Bill pay accepted sync for vendor information from vendor network",
                  "Bill pay accepted sync for vendor tax info from vendor network",
                  "Bill pay accounting manual user action",
                  "Bill pay accounting sync triggered",
                  "Bill pay accrual synced",
                  "Bill pay approval policy updated",
                  "Bill pay automatic card payment no longer eligible",
                  "Bill pay automatic card payment",
                  "Bill pay bank account updated",
                  "Bill pay batch payment initiated",
                  "Bill pay business vendor unlinked from vendor network",
                  "Bill pay card delivery",
                  "Bill pay check address update",
                  "Bill pay check tracking update",
                  "Bill pay deleted bill",
                  "Bill pay delivered payment",
                  "Bill pay dismissed fraud alert",
                  "Bill pay edited payee address",
                  "Bill pay edited payment method",
                  "Bill pay initiated payment refund",
                  "Bill pay mailed check payment",
                  "Bill pay marked as paid",
                  "Bill pay marked as unpaid",
                  "Bill pay matched transaction to bill",
                  "Bill pay matched transfer to bill",
                  "Bill pay payment failed",
                  "Bill pay payment posted",
                  "Bill pay payment reversal failed",
                  "Bill pay payment reversal posted",
                  "Bill pay payment reversal succeeded",
                  "Bill pay recurrence info changed for recurring series",
                  "Bill pay rejected PDR bank account ownership match",
                  "Bill pay rejected sync for bank account from vendor network",
                  "Bill pay rejected sync for vendor card acceptance policy from vendor network",
                  "Bill pay rejected sync for vendor check mailing address from vendor network",
                  "Bill pay rejected sync for vendor information from vendor network",
                  "Bill pay rejected sync for vendor tax info from vendor network",
                  "Bill pay retried payment",
                  "Bill pay returned funds",
                  "Bill pay submission policy updated",
                  "Bill pay unmatched transfer from bill",
                  "Bill unlinked from PO",
                  "Bill unlinked from contract",
                  "Bill unlinked",
                  "Billing bank account updated",
                  "Billing config updated",
                  "Billing group primary business changed",
                  "Blank canvas workflow execution updated",
                  "Blank canvas workflow pause status updated",
                  "Booking action by travel agency",
                  "Booking request approval policy updated",
                  "Bookkeeping agent browser control changed",
                  "Bookkeeping agent response stopped",
                  "Briefing subscription created",
                  "Brokerage order updated",
                  "Browser login changed",
                  "Business bank account added",
                  "Business bank account changed",
                  "Business bank account removed",
                  "Business communication preferences changed",
                  "Cancel revision request",
                  "Canceled physical card request",
                  "Cancelled by customer",
                  "Cancelled by ramp",
                  "Card delivered",
                  "Card offer accepted",
                  "Card offer declined",
                  "Card payment initiated (audit)",
                  "Card payment initiated",
                  "Cash Manager settings updated",
                  "Cash agent recommendation updated",
                  "Cash app rerun started",
                  "Cash application agent action",
                  "Cash manager recommendation reviewed",
                  "Cashback redeemed",
                  "Cellular ledger balance adjusted",
                  "Change order workflow restarted due to change order request modification",
                  "Changed bank account on bill",
                  "Changed card holder",
                  "Changed funds user",
                  "Check PDF downloaded",
                  "Checking Account terms accepted",
                  "Close task restored",
                  "Combined contracts with this contract",
                  "Communication sent",
                  "Complete revision",
                  "Compliance flag updated",
                  "Contract linked to card transaction",
                  "Contract unlinked from card transaction",
                  "Counterparty created",
                  "Counterparty details changed",
                  "Counterparty details configuration changed",
                  "Counterparty details configuration created",
                  "Counterparty details deleted",
                  "Created accounting split line item",
                  "Created card",
                  "Created fund from purchase order",
                  "Created merchant error",
                  "Created unrecognized charge",
                  "Created",
                  "Debit settings updated",
                  "Default product access updated",
                  "Deleted bill field",
                  "Deleted card acceptance policy",
                  "Deleted procurement field",
                  "Deleted vendor field",
                  "Deleted",
                  "Demoted co-owner to member",
                  "Detached funds from spend program",
                  "Developer API client deleted",
                  "Developer API client secret rotated",
                  "Direct Bank connection added",
                  "Direct Bank credentials activated",
                  "Direct Bank credentials saved",
                  "Document labeled",
                  "Document updated",
                  "Docusign envelope updated",
                  "Dormant funds automation changed",
                  "Draft provenance recorded",
                  "Draft vendor changed by AP coworker",
                  "Draft vendor created",
                  "Draft vendor deleted",
                  "Draft vendor published",
                  "Duplicate payment review confirmed",
                  "Earn account opened",
                  "Edited bill field",
                  "Edited card acceptance policy",
                  "Edited contract tracking setting",
                  "Edited custom field",
                  "Edited procurement field",
                  "Edited spend allocation request",
                  "Edited spend intent",
                  "Edited tin",
                  "Edited vendor field",
                  "Edited wallet automation",
                  "Email updated",
                  "Emailed purchase order",
                  "Employee policy signed",
                  "Entity created",
                  "Entity deleted",
                  "Exception given from dispute resolution",
                  "Exception given from repayment",
                  "Exception request approved",
                  "Exception request cancelled",
                  "Exception request denied",
                  "Exception requested",
                  "External agent credential rotated",
                  "External agent key created",
                  "External agent key revoked",
                  "External agent key updated",
                  "External agent wallet execution changed",
                  "External ticket created asana",
                  "External ticket created jira",
                  "External ticket created linear",
                  "External ticket created zendesk",
                  "Flex fee redeemed",
                  "Flexible limits default changed",
                  "Flight change receipt regenerated",
                  "Forecast custom input added",
                  "Forecast custom input deleted",
                  "Forecast custom input updated",
                  "Forecast settings updated",
                  "Fraud Omni investigation started",
                  "Funds activated from reissued virtual card",
                  "Funds attached to invite",
                  "Generated renewal brief for contract",
                  "Governed change applied",
                  "Governed change became stale",
                  "Governed change rejected",
                  "Governed change submitted for review",
                  "Governed changes turned off",
                  "Governed changes turned on",
                  "HRIS integration setting updated",
                  "IP allowlist updated",
                  "Identity locked",
                  "Identity unlocked",
                  "Impersonation upgraded to read-write",
                  "Incentive offer enrolled",
                  "Initiated digital wallet provisioning (audit)",
                  "Internal bank transfer link changed",
                  "Internal impersonation upgraded to read-write",
                  "International payment initiated",
                  "Investment Account closed",
                  "Investment Account opened",
                  "Investment Account renamed",
                  "Investment Account terms accepted",
                  "Investment Account updated",
                  "Ironclad workflow updated",
                  "Issued funds",
                  "Item receipt accounting sync",
                  "Journal entry batch retry requested",
                  "Large transfer initiated",
                  "Left funds",
                  "Legal agreement accepted",
                  "Legal entity updated",
                  "Linked funds to spend program",
                  "Locked access to funds",
                  "Locked card",
                  "Login methods updated",
                  "Managed portfolio transfer updated",
                  "Manager updated",
                  "Manual redemption redeemed",
                  "Mark as accidental",
                  "Mass payout initiated",
                  "Matched purchase order to transaction",
                  "Matched transaction to purchase order",
                  "Memo updated",
                  "Merged vendors",
                  "Name updated hris",
                  "Name updated",
                  "New vendor approval policy updated",
                  "New virtual card issued for currency migration",
                  "Nightly bank sync setting changed",
                  "Notification sent due to change order request modification",
                  "Notification sent due to purchase order request modification",
                  "Passkey created",
                  "Passkey deleted",
                  "Passkey removal request denied",
                  "Password reset required",
                  "Password reset user",
                  "Password updated user",
                  "Payback cancelled",
                  "Payback payment failed",
                  "Payback payment manually paid",
                  "Payback payment retried",
                  "Payback payment succeeded",
                  "Payback request approved by user",
                  "Payback request cancelled by manager",
                  "Payback request rejected by user",
                  "Payback requested by manager",
                  "Payback triggered by user",
                  "Payee linked to accounting",
                  "Payment run action",
                  "Payment run updated",
                  "Payment to new counterparty",
                  "Payment updated",
                  "Phone change request reviewed",
                  "Phone change request superseded",
                  "Phone change requested",
                  "Phone updated",
                  "Points exchange redeemed",
                  "Policy agent suggestion feedback submitted",
                  "Post spend approval policy updated",
                  "Preview mode entered",
                  "Procurement  unmatched purchase order from transaction",
                  "Procurement  unmatched transaction from purchase order",
                  "Procurement agent run completed",
                  "Procurement change request approval policy updated",
                  "Procurement send global form",
                  "Procurement submit global form response",
                  "Procurement vendor onboarding submitted",
                  "Procurement vendor onboarding triggered",
                  "Product access granted",
                  "Product access revoked",
                  "Program entity restrictions changed",
                  "Promoted member to co-owner",
                  "Purchase order accounting sync created vendor",
                  "Purchase order accounting sync failed",
                  "Purchase order accounting sync success",
                  "Purchase order accrual lines updated",
                  "Purchase order accrual synced",
                  "Purchase order delivery acknowledged",
                  "Question created",
                  "Question deleted",
                  "Question updated",
                  "RFX clarification answered",
                  "RFX clarification question submitted",
                  "RFX close date changed",
                  "RFX closed",
                  "RFX collaborator added",
                  "RFX collaborator removed",
                  "RFX created",
                  "RFX graded",
                  "RFX publish approval rejected",
                  "RFX published",
                  "RFX response deadline changed",
                  "RFX response redacted",
                  "RFX response submitted",
                  "RFX returned to draft",
                  "RFX submitted for publish approval",
                  "RFX vendor accepted",
                  "RFX vendor added",
                  "RFX vendor contact changed",
                  "RFX vendor declined",
                  "RFX vendor removed",
                  "Receipt created",
                  "Receipt deleted",
                  "Receipt downloaded for transfer",
                  "Receipt matched",
                  "Refund cleared",
                  "Refund paid",
                  "Reimbursement bank account updated",
                  "Reimbursement field changed",
                  "Reimbursement from user",
                  "Reimbursement marked as unsynced",
                  "Reimbursement policy agent suggestion feedback submitted",
                  "Reimbursement submitted",
                  "Reimbursement to user",
                  "Reimbursements disabled",
                  "Reimbursements enabled",
                  "Reissued card",
                  "Rejected card edit request",
                  "Rejected funds edit request",
                  "Rejected new card request",
                  "Rejected procurement change request",
                  "Rejected request for new funds",
                  "Reminded to approve items",
                  "Reminded to upload missing items",
                  "Removed user from funds",
                  "Repayment accounting sync success",
                  "Request revision",
                  "Requested an edit to these funds",
                  "Requested new card",
                  "Requested new funds",
                  "Reset offline card PIN",
                  "Resolved by ramp",
                  "Review needed",
                  "Reviewed by ramp",
                  "Role updated",
                  "Router API key status changed",
                  "Router spend limit changed",
                  "SFTP Authentication Failed",
                  "SFTP Authentication IP and Username Matched",
                  "SFTP Configuration Changed",
                  "SSO certificate updated",
                  "SSO domain DNS verification challenge created",
                  "SSO domain DNS verification changed",
                  "SSO domain-sharing request resolved",
                  "SSO provider created",
                  "SSO provider deleted",
                  "SSO provider domains updated",
                  "SaaS fee redeemed",
                  "Separation of duties disabled",
                  "Separation of duties enabled",
                  "Set member limit on shared fund",
                  "Shortfall coverage updated",
                  "Smart OCR provenance recorded",
                  "Snowflake connection configuration changed",
                  "Snowflake connection created",
                  "Snowflake connection removed",
                  "Snowflake connection scope changed",
                  "Sourcing event created",
                  "Sourcing event status changed",
                  "Spend allocation change request approval policy updated",
                  "Spend approved",
                  "Spend outcome recorded",
                  "Spend rejected",
                  "Spend request approval policy updated",
                  "Spend settings updated",
                  "Stack connector updated",
                  "Status updated by intake agent",
                  "Status updated",
                  "Strict MFA setting updated",
                  "Submission policy updated",
                  "Submitted procurement change request",
                  "Synced draft policy from workflow",
                  "Tango gift card redeemed",
                  "Temporarily unlocked access to funds",
                  "Terminated card",
                  "Terminated funds",
                  "Test",
                  "Third party risk management vendor review updated",
                  "This contract was combined with another contract",
                  "Ticket approvers updated",
                  "Ticket assignee updated",
                  "Ticket status updated",
                  "Totp authenticator created",
                  "Totp authenticator deleted",
                  "Totp authenticator updated",
                  "Transaction added to trip",
                  "Transaction approval policy updated",
                  "Transaction approval regeneration requested",
                  "Transaction cleared",
                  "Transaction entity changed",
                  "Transaction fraud label deleted",
                  "Transaction fraud status changed",
                  "Transaction linked to contract",
                  "Transaction marked as unsynced",
                  "Transaction missing item reminder event",
                  "Transaction paid",
                  "Transaction receipt updated",
                  "Transaction removed from trip",
                  "Transaction submission policy exemption event",
                  "Transaction unlinked from contract",
                  "Transfer created",
                  "Transfer initiated",
                  "Transferred ownership of funds",
                  "Travel booking manually matched to transaction",
                  "Travel integration settings updated",
                  "Travel policy selection updated",
                  "Trip changed",
                  "Trip question answered",
                  "Unarchived funds",
                  "Undid marking transaction as accidental",
                  "Unlocked access to funds",
                  "Unlocked card temporarily",
                  "Unlocked card",
                  "Unmark as accidental",
                  "Updated card program",
                  "Updated card",
                  "Updated funds",
                  "Updated policy to include Guest",
                  "Updated spend program",
                  "Updated workflow to include Guest",
                  "User accepted invite",
                  "User assigned by external firm",
                  "User assigned through external firm merge",
                  "User created",
                  "User deactivated",
                  "User deleted",
                  "User invited",
                  "User locked",
                  "User logged out of all sessions",
                  "User logged out",
                  "User login",
                  "User merchant allowlist updated",
                  "User previewed",
                  "User reactivated",
                  "User undeleted",
                  "User unlocked",
                  "Vendor Network connection migrated",
                  "Vendor Network updates enabled",
                  "Vendor added to group",
                  "Vendor awarded",
                  "Vendor credit action",
                  "Vendor edit approval policy updated",
                  "Vendor hold released",
                  "Vendor imported from erp",
                  "Vendor management  vendor added to managed list",
                  "Vendor management  vendor removed from managed list",
                  "Vendor management agreement deleted document",
                  "Vendor management agreement deleted",
                  "Vendor management agreement linked document",
                  "Vendor management agreement linked purchase order",
                  "Vendor management agreement notification type switched",
                  "Vendor management agreement reminder sent",
                  "Vendor management agreement status changed",
                  "Vendor management agreement unlinked document",
                  "Vendor management agreement unlinked purchase order",
                  "Vendor management agreement uploaded document",
                  "Vendor management edited agreement field",
                  "Vendor management expansion request status changed",
                  "Vendor management vendor network invite sent",
                  "Vendor memory file setting updated",
                  "Vendor parent set",
                  "Vendor parent unset",
                  "Vendor payment approval policy updated",
                  "Vendor placed on hold",
                  "Vendor portal merge suggestion declined",
                  "Vendor portal merged",
                  "Vendor portal purchase order invoice updated",
                  "Vendor profile access created",
                  "Vendor profile access denied",
                  "Vendor profile access edited",
                  "Vendor profile access email sent",
                  "Vendor profile access requested",
                  "Vendor profile access revoked",
                  "Vendor profile all documents downloaded",
                  "Vendor profile document downloaded",
                  "Vendor removed from group",
                  "Vendor sync failure",
                  "Viewed sensitive card details",
                  "Violation from manager",
                  "Violation from rule",
                  "Violation from user",
                  "Virtual card reissued",
                  "Voided check downloaded",
                  "WBX approval approved",
                  "WBX approval attachment added",
                  "WBX approval attachment removed",
                  "WBX approval fields updated",
                  "WBX approval opened",
                  "WBX approval rejected",
                  "WBX approver approved",
                  "WBX approver rejected",
                  "WBX policy created",
                  "WBX policy deleted",
                  "WBX policy draft discarded",
                  "WBX policy draft published",
                  "WBX policy draft started",
                  "WBX policy renamed",
                  "WBX policy workflow generated from draft",
                  "WBX request admin approved entire workflow",
                  "WBX request archived",
                  "WBX request attachment added",
                  "WBX request attachment removed",
                  "WBX request created",
                  "WBX request deleted",
                  "WBX request fields updated",
                  "WBX request submitted",
                  "Wallet redeemed",
                  "Workflow restarted due to purchase order request modification",
                  "Workflow updated"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "AI spend anomaly review state changed": "An AI spend anomaly was resolved or reopened.",
                  "AI usage limits updated": "AI usage limits were updated.",
                  "Account closed": "A treasury account was closed.",
                  "Account details previewed": "The redacted account & routing numbers were viewed for a treasury account.",
                  "Account details viewed": "The unredacted account & routing numbers were viewed for a treasury account.",
                  "Account document downloaded": "A monthly statement or 1099 was downloaded for a treasury account.",
                  "Account number deleted": "A virtual account number was deleted for a treasury account.",
                  "Account number generated": "A new virtual account number was generated for a treasury account.",
                  "Account number renamed": "A virtual account number was renamed for a treasury account.",
                  "Account renamed": "A treasury account was renamed.",
                  "Accounting fixed asset changed": "A fixed asset was created, updated, productionized, or deleted.",
                  "Accounting fixed asset class changed": "A fixed asset class was created, updated, productionized, or deleted.",
                  "Accounting lease changed": "A lease was created, updated, productionized, or deleted.",
                  "Accounting settings updated": "An accounting account or cash mapping was changed.",
                  "Amortization schedule updated": "An amortization schedule was updated.",
                  "App Store app disconnected": "An App Store app was disconnected.",
                  "Approval authority changed": "A group approval limit was added, changed, or removed.",
                  "Approval policy set as default": "An approval policy was set as the default for its spend type.",
                  "Authorization letter downloaded": "An authorization letter was downloaded for a treasury account.",
                  "Automatic investment transfer canceled": "An automatic post-settlement investment transfer was canceled.",
                  "Automatic rule management actions reviewed": "Automatic accounting rule management actions were reviewed.",
                  "Automation deleted": "A treasury automation policy was deleted.",
                  "Bank account ACH details viewed": "ACH account and routing details were viewed for a business bank account.",
                  "Bank account entity owner changed": "The legal entity owner of a business bank account was changed.",
                  "Bank account sensitive details viewed": "Sensitive details were viewed for a business bank account.",
                  "Bank letter downloaded": "A bank letter was downloaded for a treasury account.",
                  "Bill Pay setup progress updated": "Bill Pay setup progress was updated.",
                  "Bill created by AP coworker": "A bill was automatically created by the AP coworker agent.",
                  "Bill pay accepted PDR bank account ownership match": "ACH payment details submitted through a payee details request were approved.",
                  "Bill pay accrual synced": "A bill accrual was synced.",
                  "Bill pay marked as unpaid": "A bill was marked as unpaid.",
                  "Bill pay matched transfer to bill": "A transfer was matched to a bill.",
                  "Bill pay payment reversal failed": "A bill payment reversal failed.",
                  "Bill pay payment reversal posted": "A bill payment reversal was posted.",
                  "Bill pay payment reversal succeeded": "A bill payment reversal succeeded.",
                  "Bill pay rejected PDR bank account ownership match": "ACH payment details submitted through a payee details request were rejected.",
                  "Bill pay submission policy updated": "A bill pay submission policy was updated.",
                  "Bill pay unmatched transfer from bill": "A transfer was unmatched from a bill.",
                  "Billing bank account updated": "The bank account that pays an entity's Ramp subscription fees was changed.",
                  "Billing group primary business changed": "A billing group's primary business was changed.",
                  "Booking action by travel agency": "A travel management company agent completed a booking action for this business through the Advisor Console.",
                  "Bookkeeping agent browser control changed": "A user handed a bookkeeping agent browser to manual control or back to the agent.",
                  "Bookkeeping agent response stopped": "A user stopped generation of a bookkeeping agent response.",
                  "Briefing subscription created": "A briefing subscription was created.",
                  "Browser login changed": "A browser agent login was added, changed, or removed.",
                  "Business communication preferences changed": "Communication preferences for a business event were changed.",
                  "Canceled physical card request": "An unfulfilled physical card request was canceled.",
                  "Card offer accepted": "A user accepted a card offer.",
                  "Card offer declined": "A user declined a card offer.",
                  "Cash Manager settings updated": "Cash Manager settings updated for a treasury account.",
                  "Cash app rerun started": "Ramp reran cash app on recent deposits that had no payment or suggestion.",
                  "Cash application agent action": "An accounts receivable payment or payment application was created by the cash application agent.",
                  "Cash manager recommendation reviewed": "A cash manager recommendation was approved or rejected.",
                  "Cellular ledger balance adjusted": "An internal operator adjusted a Payments Cellular account balance.",
                  "Check PDF downloaded": "A check PDF was downloaded for a check withdrawal.",
                  "Close task restored": "A deleted close task and its recoverable configuration were restored.",
                  "Compliance flag updated": "A compliance flag was updated.",
                  "Contract linked to card transaction": "A contract was linked to a card transaction.",
                  "Contract unlinked from card transaction": "A contract was unlinked from a card transaction.",
                  "Counterparty details configuration changed": "A global counterparty details configuration was replaced.",
                  "Counterparty details configuration created": "A global counterparty details configuration was created.",
                  "Counterparty details deleted": "A counterparty's payment details were deleted.",
                  "Debit settings updated": "Debit settings were updated for a virtual account number.",
                  "Default product access updated": "The business's default product access was updated.",
                  "Developer API client deleted": "A Developer API client was deleted.",
                  "Developer API client secret rotated": "A Developer API client's secret was rotated.",
                  "Direct Bank connection added": "A Direct Bank connection was added.",
                  "Direct Bank credentials activated": "Credentials for a Direct Bank connection were activated.",
                  "Direct Bank credentials saved": "Credentials for a Direct Bank connection were saved but not activated because the bank rejected them.",
                  "Dormant funds automation changed": "Dormant fund automation settings were changed.",
                  "Draft provenance recorded": "A draft payee or entity change was recorded.",
                  "Draft vendor changed by AP coworker": "The AP intake coworker created or updated a draft vendor.",
                  "Duplicate payment review confirmed": "A user confirmed matching invoice evidence as an intentional separate payment. Confirmation did not send payment.",
                  "Earn account opened": "An Earn account was opened.",
                  "Edited spend allocation request": "A spend allocation request was edited.",
                  "Employee policy signed": "An employee signed their policy document or handbook.",
                  "Entity created": "A legal entity was created.",
                  "Entity deleted": "A legal entity was deleted.",
                  "External agent credential rotated": "A standalone agent credential was rotated.",
                  "External agent key created": "An agent key was created.",
                  "External agent key revoked": "An agent key was revoked.",
                  "External agent key updated": "An agent key was updated.",
                  "External agent wallet execution changed": "A standalone agent wallet was disabled or re-enabled.",
                  "Flex fee redeemed": "Points were redeemed to pay down a Ramp Flex installment fee.",
                  "Flight change receipt regenerated": "A flight change charge's generated receipt was replaced with a regenerated receipt.",
                  "Forecast custom input added": "A forecast custom input was added.",
                  "Forecast custom input deleted": "A forecast custom input was deleted.",
                  "Forecast custom input updated": "A forecast custom input was updated.",
                  "Forecast settings updated": "Forecast settings were updated for a treasury account.",
                  "Fraud Omni investigation started": "A Fraud Omni operator investigation was started for a Zendesk ticket.",
                  "Funds attached to invite": "Funds were attached to a user's invite. The funds will be issued when the user accepts the invite.",
                  "Governed change applied": "A governed change was applied after approval.",
                  "Governed change became stale": "A governed change became stale without being applied.",
                  "Governed change rejected": "A governed change was rejected during review.",
                  "Governed change submitted for review": "A governed change was submitted for review.",
                  "Governed changes turned off": "Meta-approvals were disabled for a governed subject after review.",
                  "Governed changes turned on": "Meta-approvals were enabled for a governed subject.",
                  "IP allowlist updated": "The business IP allowlist was updated.",
                  "Identity locked": "An identity lock was created or rerun.",
                  "Identity unlocked": "An identity lock was removed or rerun.",
                  "Impersonation upgraded to read-write": "An impersonation session was upgraded to read-write.",
                  "Incentive offer enrolled": "The business was enrolled in an incentive offer.",
                  "Initiated digital wallet provisioning (audit)": "Digital wallet provisioning was initiated for a card.",
                  "Internal bank transfer link changed": "A user linked or unlinked the two bank transactions representing an internal transfer.",
                  "Internal impersonation upgraded to read-write": "An internal impersonation session was upgraded to read-write.",
                  "Investment Account closed": "Investment account closed",
                  "Investment Account opened": "Investment account opened",
                  "Investment Account renamed": "Investment account renamed.",
                  "Investment Account terms accepted": "Investment account terms were agreed to.",
                  "Investment Account updated": "Investment Account updated.",
                  "Journal entry batch retry requested": "A retry was requested for an accounting journal entry batch.",
                  "Left funds": "A member left a shared fund.",
                  "Legal agreement accepted": "A user accepted a legal agreement for a card offer.",
                  "Legal entity updated": "A business legal entity was updated.",
                  "Login methods updated": "The login methods allowed for business roles were updated.",
                  "Manual redemption redeemed": "A manual cashback redemption was recorded against the business's rewards balance (e.g. when ops fulfills a customer redemption out-of-band by issuing Ramp incentive cards).",
                  "New vendor approval policy updated": "A new vendor approval policy was updated.",
                  "Nightly bank sync setting changed": "Nightly bank sync was enabled or disabled for the business.",
                  "Passkey created": "A passkey was created for a user.",
                  "Passkey deleted": "A passkey was deleted for a user.",
                  "Passkey removal request denied": "An admin denied a user's passkey removal request.",
                  "Phone change request reviewed": "An admin approved or denied a phone change request.",
                  "Phone change request superseded": "A newer phone change request replaced a pending request.",
                  "Phone change requested": "A user requested an administrator's help changing their phone number.",
                  "Preview mode entered": "An internal preview impersonation session was started.",
                  "Product access granted": "A user was granted access to a product.",
                  "Product access revoked": "A user's access to a product was revoked.",
                  "Program entity restrictions changed": "A program's allowed legal entities changed.",
                  "Purchase order accrual lines updated": "Purchase order lines were manually included in or excluded from an accrual report.",
                  "Purchase order accrual synced": "A purchase order accrual was synced.",
                  "Purchase order delivery acknowledged": "A vendor acknowledged a purchase order delivery.",
                  "Receipt downloaded for transfer": "A receipt was downloaded for a wallet transfer.",
                  "Reimbursement marked as unsynced": "A reimbursement was marked as unsynced in Ramp.",
                  "Repayment accounting sync success": "A repayment was successfully synced to the accounting provider.",
                  "Reset offline card PIN": "An offline card PIN reset was accepted by the issuer; chip synchronization is pending.",
                  "Router API key status changed": "A Router API key was locked, unlocked, or terminated from AI Spend.",
                  "Router spend limit changed": "A Router API key or person spend limit was set, changed, or removed.",
                  "SSO certificate updated": "An SSO provider certificate was updated.",
                  "SSO domain DNS verification challenge created": "A domain's DNS verification challenge was created.",
                  "SSO domain DNS verification changed": "A domain's DNS verification status changed.",
                  "SSO domain-sharing request resolved": "An SSO domain-sharing request was approved or denied.",
                  "SSO provider created": "An SSO provider was created.",
                  "SSO provider deleted": "An SSO provider was deleted.",
                  "SSO provider domains updated": "Domains were added to or removed from an SSO provider.",
                  "Shortfall coverage updated": "Shortfall coverage updated.",
                  "Smart OCR provenance recorded": "Smart OCR callback evidence was recorded.",
                  "Snowflake connection configuration changed": "A Snowflake connection's credentials or configuration were changed.",
                  "Snowflake connection created": "A Snowflake connection was created.",
                  "Snowflake connection removed": "A Snowflake connection was removed.",
                  "Snowflake connection scope changed": "The schemas or tables available to a Snowflake connection were changed.",
                  "Spend settings updated": "A scalar setting on the spend settings page was changed.",
                  "Stack connector updated": "A Stack connector was set up or disconnected.",
                  "Status updated by intake agent": "Status of an accounts receivable customer was updated by the intake agent.",
                  "Strict MFA setting updated": "A business strict MFA setting was updated.",
                  "Submission policy updated": "A submission policy was updated.",
                  "Synced draft policy from workflow": "A policy draft was updated to reflect edits made to its underlying workflow.",
                  "Ticket approvers updated": "A ticket's approvers were updated.",
                  "Transaction added to trip": "A transaction was added to a trip.",
                  "Transaction approval regeneration requested": "An internal operator requested regeneration of transaction approval chains.",
                  "Transaction fraud label deleted": "A transaction fraud label was deleted by a Ramp operator.",
                  "Transaction fraud status changed": "A transaction fraud status was changed by a Ramp operator.",
                  "Transaction linked to contract": "A card transaction was linked to a contract.",
                  "Transaction marked as unsynced": "A card transaction was marked as unsynced in Ramp.",
                  "Transaction removed from trip": "A transaction was removed from a trip.",
                  "Transaction unlinked from contract": "A card transaction was unlinked from a contract.",
                  "Transfer created": "A payment transfer was created.",
                  "Transfer initiated": "A transfer was initiated for a treasury account.",
                  "Travel booking manually matched to transaction": "A travel booking was manually matched to a card transaction.",
                  "Travel integration settings updated": "Receipt attachment or trip creation settings were updated for a travel integration.",
                  "Trip question answered": "A user answered a trip confirmation question.",
                  "Unarchived funds": "Funds were unarchived.",
                  "Updated policy to include Guest": "A policy was updated to include the Guest role.",
                  "Updated workflow to include Guest": "A workflow or subflow was updated to include the Guest role.",
                  "User logged out": "A user logged out.",
                  "User logged out of all sessions": "A user logged out of all sessions.",
                  "User merchant allowlist updated": "A user merchant allowlist was updated by a Ramp operator.",
                  "Vendor Network connection migrated": "A vendor's Vendor Network connection was updated.",
                  "Vendor edit approval policy updated": "A vendor edit approval policy was updated.",
                  "Vendor hold released": "A vendor hold was released.",
                  "Vendor management agreement reminder sent": "A user sent a manual contract reminder.",
                  "Vendor management vendor network invite sent": "A Ramp Vendor Network invite was sent to a vendor.",
                  "Vendor memory file setting updated": "A vendor's memory file setting was changed.",
                  "Vendor parent set": "A parent vendor was set on a vendor.",
                  "Vendor parent unset": "A vendor's parent vendor was removed.",
                  "Vendor placed on hold": "A vendor was placed on hold.",
                  "Vendor portal merge suggestion declined": "A vendor said a suggested vendor portal isn't theirs.",
                  "Vendor portal merged": "A vendor combined two vendor portals.",
                  "Vendor portal purchase order invoice updated": "A vendor changed a vendor portal invoice created from a purchase order.",
                  "Voided check downloaded": "A voided check was downloaded for a treasury account.",
                  "WBX request admin approved entire workflow": "An admin approved the entire workflow-backed policy request, skipping all remaining approval steps.",
                  "Workflow updated": "A workflow was updated."
                }
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter by audit log events referencing this object ID (e.g. transaction_id, vendor_id, etc.). The resource name must also be provided when filtering by object ID.",
            "in": "query",
            "name": "object_id",
            "required": false,
            "schema": {
              "default": null,
              "format": "uuid",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter by audit log events referencing this resource name. The object ID must also be provided when filtering by resource name.",
            "in": "query",
            "name": "resource_name",
            "required": false,
            "schema": {
              "default": null,
              "enum": [
                "Accounting rule group",
                "Approvals",
                "Bill payment",
                "Bill template",
                "Card",
                "Cash Manager recommendation",
                "Fixed asset class",
                "Fixed asset",
                "Forecast custom input",
                "Fund request",
                "Investment account",
                "Legal entity",
                "Managed portfolio transfer",
                "Payment run",
                "Reimbursement",
                "SFTP Configurations",
                "Separation of duties",
                "Spend allocation",
                "Spend event",
                "Spend program",
                "Transaction",
                "Travel (Booking request)",
                "Travel (Trip)",
                "Treasury account",
                "User",
                "Vendor / Merchant",
                "WBX Policy",
                "WBX Request",
                "Wallet automation policy",
                "Wallet transfer",
                "Workflow (Base)",
                "Workflow"
              ],
              "nullable": true,
              "type": "string",
              "x-enum-descriptions": {
                "Accounting rule group": "An accounting rule group.",
                "Cash Manager recommendation": "Cash Manager recommendation",
                "Fixed asset": "Fixed asset",
                "Fixed asset class": "Fixed asset class",
                "Forecast custom input": "Forecast custom input",
                "Investment account": "Investment account",
                "Legal entity": "A business legal entity.",
                "Managed portfolio transfer": "Managed portfolio transfer",
                "Payment run": "Payment run",
                "Spend program": "A spend program.",
                "Wallet automation policy": "A treasury automation policy."
              }
            }
          },
          {
            "description": "Filter by customer-visible agent labels that executed the action",
            "explode": false,
            "in": "query",
            "name": "agent_names",
            "required": false,
            "schema": {
              "items": {
                "type": "string"
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseAuditLogEventResourceSchema"
                }
              }
            },
            "description": "Audit log events"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "audit_logs:read"
            ]
          }
        ],
        "summary": "Get audit log events",
        "tags": [
          "Audit Log",
          "audit_logs"
        ],
        "x-alias": "list",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp"
        ],
        "x-ramp-plus-required": true,
        "x-read-only": true,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/bank-accounts": {
      "get": {
        "operationId": "get_bank_account_list_with_pagination",
        "parameters": [
          {
            "description": "Filter bank accounts by connection provider.",
            "in": "query",
            "name": "connection_provider",
            "required": false,
            "schema": {
              "enum": [
                "finicity",
                "manual",
                "plaid",
                "ramp_brokerage",
                "ramp_wallet",
                "teller"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "finicity": "Bank account was connected through Finicity",
                "manual": "Bank account was connected using manually provided account details",
                "plaid": "Bank account was connected through Plaid",
                "ramp_brokerage": "Bank account is a Ramp brokerage account",
                "ramp_wallet": "Bank account is a Ramp checking account",
                "teller": "Bank account was connected through Teller"
              }
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiBankAccountResource"
                }
              }
            },
            "description": "Bank Accounts"
          }
        },
        "security": [
          {
            "oauth2": [
              "bank_accounts:read"
            ]
          }
        ],
        "summary": "List bank accounts",
        "tags": [
          "Bank Accounts",
          "bank-link"
        ],
        "x-alias": "accounts",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp",
          "third_party"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": true,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/bank-accounts/{bank_account_id}": {
      "get": {
        "operationId": "get_bank_account_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiBankAccountResource"
                }
              }
            },
            "description": "Bank Account"
          }
        },
        "security": [
          {
            "oauth2": [
              "bank_accounts:read"
            ]
          }
        ],
        "summary": "Get bank account details",
        "tags": [
          "Bank Accounts"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "bank_account_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/banking/accounts": {
      "get": {
        "description": "Returns all banking accounts for the business, including checking accounts,\nbrokerage accounts, and investment accounts. Each account includes\nits unique identifier, account type, and display name.",
        "operationId": "get_treasury_accounts_list_resource",
        "parameters": [
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseTreasuryAccountResponse"
                }
              }
            },
            "description": "Banking accounts"
          }
        },
        "security": [
          {
            "oauth2": [
              "treasury:read"
            ]
          }
        ],
        "summary": "List banking accounts",
        "tags": [
          "Banking"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/banking/accounts/{account_id}/balance-history": {
      "get": {
        "description": "Returns daily available balance snapshots for the specified banking account.\nUse the ``start_date`` and ``end_date`` query parameters to filter results\nto a specific date range (ISO 8601 format).",
        "operationId": "get_treasury_account_balance_history_resource",
        "parameters": [
          {
            "description": "Filters for account balances on or after this date (ISO8601 format)",
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Shows only account balances on or before this date (ISO8601 format)",
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseTreasuryBalanceHistoryItemResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "treasury:read"
            ]
          }
        ],
        "summary": "Get balance history for a banking account",
        "tags": [
          "Banking"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "account_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/banking/syncable-transactions": {
      "get": {
        "description": "Returns banking transactions that are available for syncing to an\naccounting provider. Requires an active accounting provider connection.\nUse query parameters to filter by date range, entity, or sync status.",
        "operationId": "get_treasury_transactions_resource",
        "parameters": [
          {
            "description": "Filter by business entity IDs (comma-separated)",
            "explode": false,
            "in": "query",
            "name": "entity_ids",
            "required": false,
            "schema": {
              "items": {
                "format": "uuid",
                "type": "string"
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter by treasury transactions after this date",
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter by treasury transactions before this date",
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Include treasury transfers that have already been synced to the accounting provider. Defaults to False",
            "in": "query",
            "name": "include_synced_transfers",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseTreasuryTransactionResponse"
                }
              }
            },
            "description": "Syncable banking transactions"
          }
        },
        "security": [
          {
            "oauth2": [
              "treasury:read"
            ]
          }
        ],
        "summary": "List syncable banking transactions",
        "tags": [
          "Banking"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/billing/statements": {
      "get": {
        "operationId": "get_billing_statement_list_resource",
        "parameters": [
          {
            "description": "Filter statements with end date on or before this date (inclusive).",
            "in": "query",
            "name": "statement_period_end",
            "required": false,
            "schema": {
              "default": null,
              "format": "date",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter statements with start date on or after this date (inclusive).",
            "in": "query",
            "name": "statement_period_start",
            "required": false,
            "schema": {
              "default": null,
              "format": "date",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiBillingStatementResourceSchema"
                }
              }
            },
            "description": "Billing Statements"
          }
        },
        "security": [
          {
            "oauth2": [
              "billing_statements:read"
            ]
          }
        ],
        "summary": "List billing statements",
        "tags": [
          "BillingStatement"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/bills": {
      "get": {
        "operationId": "get_bill_list_with_pagination",
        "parameters": [
          {
            "description": "Filter bills by entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter bills by exact customer-friendly payment ID. Returns all bills belonging to the same payment or batch payment.",
            "in": "query",
            "name": "customer_friendly_payment_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter bills by exact draft bill ID.",
            "in": "query",
            "name": "draft_bill_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "draft_bills",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter bills by exact invoice number.",
            "in": "query",
            "name": "invoice_number",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter bills by exact remote ID.",
            "in": "query",
            "name": "remote_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter bills by its accounting field selection. Bills that are coded with this accounting field will be returned.",
            "in": "query",
            "name": "accounting_field_selection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "custom_field_options",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter bills by one or more status summaries. Expects a comma-separated list of status summaries.",
            "explode": false,
            "in": "query",
            "name": "status_summaries",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "APPROVAL_PENDING",
                  "APPROVAL_REJECTED",
                  "ARCHIVED",
                  "AWAITING_PAYMENT",
                  "AWAITING_RELEASE",
                  "BLOCKED",
                  "HELD_BY_PROVIDER",
                  "ON_HOLD",
                  "PAYMENT_COMPLETED",
                  "PAYMENT_DETAILS_MISSING",
                  "PAYMENT_ERROR",
                  "PAYMENT_NOT_INSTRUCTED",
                  "PAYMENT_PROCESSING",
                  "PAYMENT_READY",
                  "PAYMENT_SCHEDULED",
                  "PENDING_VENDOR_APPROVAL",
                  "WAITING_FOR_TRANSACTION_MATCH",
                  "WAITING_FOR_TRANSFER_MATCH",
                  "WAITING_FOR_VENDOR"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "APPROVAL_PENDING": "The bill is waiting for one or more approvals.",
                  "APPROVAL_REJECTED": "The bill was rejected in the approval flow.",
                  "ARCHIVED": "The bill has been archived.",
                  "AWAITING_PAYMENT": "The bill is waiting for the business to send push-payment funding.",
                  "AWAITING_RELEASE": "The bill is waiting for payment release.",
                  "BLOCKED": "The bill is blocked from payment initiation or approval.",
                  "HELD_BY_PROVIDER": "The bill payment is held by the payment provider.",
                  "ON_HOLD": "The bill has been placed on hold.",
                  "PAYMENT_COMPLETED": "The bill has been paid.",
                  "PAYMENT_DETAILS_MISSING": "The bill is missing required payment details.",
                  "PAYMENT_ERROR": "The bill payment failed.",
                  "PAYMENT_NOT_INSTRUCTED": "The bill uses Ramp payments but has not been scheduled yet.",
                  "PAYMENT_PROCESSING": "The bill payment has been initiated and is processing.",
                  "PAYMENT_READY": "The bill is ready for payment.",
                  "PAYMENT_SCHEDULED": "The bill payment is scheduled.",
                  "PENDING_VENDOR_APPROVAL": "The bill is waiting for a vendor edit to be approved.",
                  "WAITING_FOR_TRANSACTION_MATCH": "The bill is paid by card and is waiting for a matching card transaction.",
                  "WAITING_FOR_TRANSFER_MATCH": "The bill is paid by direct debit and is waiting for a matching wallet transfer.",
                  "WAITING_FOR_VENDOR": "The bill is waiting on required vendor information."
                }
              },
              "nullable": false,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter bills by payment ID. Returns all bills belonging to the same payment.",
            "in": "query",
            "name": "payment_id",
            "required": false,
            "schema": {
              "default": null,
              "format": "uuid",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter bills by purchase order.",
            "in": "query",
            "name": "purchase_order_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "purchase_orders",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter bills by vendor.",
            "in": "query",
            "name": "vendor_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "vendors",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter bills by whether they are configured to sync to the ERP. Set to true to return only bills that will sync, or false to return only bills excluded from ERP sync.",
            "in": "query",
            "name": "is_accounting_sync_enabled",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter by payment accounting export readiness, independently of payment_status. Omit to return bills regardless of payment readiness.",
            "in": "query",
            "name": "is_payment_sync_ready",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List bills of the provided bill approval status. Note that this is separate from the approval status for payment release.",
            "in": "query",
            "name": "approval_status",
            "required": false,
            "schema": {
              "enum": [
                "APPROVED",
                "INITIALIZED",
                "PENDING",
                "REJECTED",
                "TERMINATED"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "APPROVED": "The approval chain has been approved.",
                "INITIALIZED": "The approval chain has been initialized.",
                "PENDING": "The approval chain is awaiting approval.",
                "REJECTED": "The approval chain has been rejected.",
                "TERMINATED": "The approval chain has been terminated."
              }
            }
          },
          {
            "description": "List bills of the provided payment method.",
            "in": "query",
            "name": "payment_method",
            "required": false,
            "schema": {
              "enum": [
                "ACH",
                "CARD",
                "CHECK",
                "CRYPTO_WALLET_TRANSFER",
                "DOMESTIC_WIRE",
                "INTERNATIONAL",
                "LOCAL_BANK_TRANSFER",
                "ONE_TIME_CARD",
                "ONE_TIME_CARD_DELIVERY",
                "PAID_MANUALLY",
                "SWIFT"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "ACH": "A US ACH bank transfer.",
                "CARD": "A payment made with an existing Ramp card.",
                "CHECK": "A paper check payment mailed to the vendor.",
                "CRYPTO_WALLET_TRANSFER": "A transfer to a cryptocurrency wallet.",
                "DOMESTIC_WIRE": "A US domestic wire transfer.",
                "INTERNATIONAL": "An international bank transfer.",
                "LOCAL_BANK_TRANSFER": "A local bank transfer in a non-USD currency.",
                "ONE_TIME_CARD": "A single-use card payment where the business user pays the vendor directly.",
                "ONE_TIME_CARD_DELIVERY": "A single-use card payment where Ramp sends card details to the vendor contact.",
                "PAID_MANUALLY": "A payment recorded as paid outside of Ramp.",
                "SWIFT": "An international USD-denominated SWIFT bank transfer."
              }
            }
          },
          {
            "description": "List bills of the provided payment status.",
            "in": "query",
            "name": "payment_status",
            "required": false,
            "schema": {
              "enum": [
                "OPEN",
                "PAID"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "OPEN": "The bill has not been fully paid.",
                "PAID": "The bill has been paid in full."
              }
            }
          },
          {
            "description": "List bills of the provided sync status.",
            "in": "query",
            "name": "sync_status",
            "required": false,
            "schema": {
              "enum": [
                "BILL_AND_PAYMENT_SYNCED",
                "BILL_SYNCED",
                "NOT_SYNCED"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only show bills that are ready to sync to ERP, if set to True",
            "in": "query",
            "name": "sync_ready",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Set to true to return only bills that are missing payment details (e.g., vendor bank account, payment method). When not provided or false, no payment-details filter is applied.",
            "in": "query",
            "name": "payment_details_missing",
            "required": false,
            "schema": {
              "default": null,
              "nullable": true,
              "type": "boolean"
            }
          },
          {
            "description": "Show archived (deleted) bills instead of active bills. Defaults to False.",
            "in": "query",
            "name": "is_archived",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "Shows only bills with a created_at on or after this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "from_created_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only bills with a created_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "to_created_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only bills with a due_at on or after this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "from_due_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only bills with a due_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "to_due_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only bills with a issued_at on or after this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "from_issued_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only bills with a issued_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "to_issued_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only bills with a paid_at on or after this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "from_paid_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only bills with a paid_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "to_paid_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only bills with a payment_date on or after this date. Note: this filter is not supported for card payments and `from_due_date` should be used instead, which will be the equivalent as the payment date after support is added.",
            "in": "query",
            "name": "from_payment_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Shows only bills with a payment_date on or before this date. Note: this filter is not supported for card payments and `to_due_date` should be used instead, which will be the equivalent as the payment date after support is added.",
            "in": "query",
            "name": "to_payment_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Shows only bills with an amount greater than or equal to this value.",
            "in": "query",
            "name": "min_amount",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "format": "decimal",
                  "type": "string"
                },
                {
                  "type": "number"
                }
              ]
            }
          },
          {
            "description": "Shows only bills with an amount less than or equal to this value.",
            "in": "query",
            "name": "max_amount",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "format": "decimal",
                  "type": "string"
                },
                {
                  "type": "number"
                }
              ]
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiBillResourceSchema"
                }
              }
            },
            "description": "Bill"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:read"
            ]
          }
        ],
        "summary": "List bills",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "Batch payments cannot be created in the API.",
        "operationId": "post_bill_list_with_pagination",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiCreateBillParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bill"
                }
              }
            },
            "description": "Bill"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:write"
            ]
          }
        ],
        "summary": "Create a bill",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/bills/drafts": {
      "get": {
        "operationId": "get_draft_bill_list_with_pagination",
        "parameters": [
          {
            "description": "Filter draft bills by entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Filter draft bills by exact invoice number.",
            "in": "query",
            "name": "invoice_number",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter draft bills by exact remote ID.",
            "in": "query",
            "name": "remote_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter draft bills by vendor.",
            "in": "query",
            "name": "vendor_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Shows only draft bills with a created_at on or after this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "from_created_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only draft bills with a created_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "to_created_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only draft bills with a due_at on or after this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "from_due_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only draft bills with a due_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "to_due_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only draft bills with a issued_at on or after this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "from_issued_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Shows only draft bills with a issued_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "to_issued_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiDraftBillResourceSchema"
                }
              }
            },
            "description": "DraftBill"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:read"
            ]
          }
        ],
        "summary": "List draft bills",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "operationId": "post_draft_bill_list_with_pagination",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialApiCreateDraftBillParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DraftBill"
                }
              }
            },
            "description": "Created draft bill"
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:write"
            ]
          }
        ],
        "summary": "Create a draft bill",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/bills/drafts/{draft_bill_id}": {
      "get": {
        "operationId": "get_draft_bill_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DraftBill"
                }
              }
            },
            "description": "DraftBill"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:read"
            ]
          }
        ],
        "summary": "Fetch a draft bill",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "draft_bill_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_draft_bill_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialApiUpdateDraftBillParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DraftBill"
                }
              }
            },
            "description": "Updated draft bill"
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:write"
            ]
          }
        ],
        "summary": "Update a draft bill",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/bills/drafts/{draft_bill_id}/attachments": {
      "parameters": [
        {
          "in": "path",
          "name": "draft_bill_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Upload a file as an attachment to a draft bill. INVOICE type attachments cannot be uploaded if one\nalready exists on the draft bill.\n\nThis endpoint accepts the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) format.\n\nInclude the file as a part named 'file' with `Content-Disposition: attachment`.\nInclude the attachment_type as a form field with value 'INVOICE' or 'FILE'.",
        "operationId": "post_draft_bill_attachment_upload_resource",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ApiBillAttachmentUploadInputRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiBillAttachmentResponse"
                }
              }
            },
            "description": "Uploaded attachment"
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:write"
            ]
          }
        ],
        "summary": "Upload a file attachment to an existing draft bill",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/bills/drafts/{draft_bill_id}/submit": {
      "parameters": [
        {
          "description": "Unique identifier of the draft bill.",
          "in": "path",
          "name": "draft_bill_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_draft_bill_submit_resource",
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bill"
                }
              }
            },
            "description": "Submitted bill"
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:write"
            ]
          }
        ],
        "summary": "Submit a draft bill",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/bills/{bill_id}": {
      "delete": {
        "description": "This is a destructive action. Associated inflight payments will be cancelled\nif possible or any attached one-time-card will be terminated. Paid bills and\nbills belonging to a batch payment cannot be deleted.",
        "operationId": "delete_bill_resource",
        "responses": {
          "204": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmptyObject"
                }
              }
            },
            "description": "Deleted bill"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:write"
            ]
          }
        ],
        "summary": "Archive a bill",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_bill_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bill"
                }
              }
            },
            "description": "Bill"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:read"
            ]
          }
        ],
        "summary": "Fetch a bill",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "bill_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "description": "Only approved bills can be updated.",
        "operationId": "patch_bill_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiUpdateBillParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bill"
                }
              }
            },
            "description": "Bill"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:write"
            ]
          }
        ],
        "summary": "Update a bill",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/bills/{bill_id}/associations": {
      "parameters": [
        {
          "description": "Unique identifier of the bill.",
          "in": "path",
          "name": "bill_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Creates or updates the association between this bill and another bill in the same\nbusiness. `label` is shown on this bill for the other bill and `reverse_label` on\nthe other bill for this one; repeating the call replaces both labels.",
        "operationId": "post_bill_associations_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiBillAssociationParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bill"
                }
              }
            },
            "description": "Bill"
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:write"
            ]
          }
        ],
        "summary": "Associate Bills",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/bills/{bill_id}/associations/{associated_bill_id}": {
      "delete": {
        "description": "Removes the association between the two bills in both directions.",
        "operationId": "delete_bill_association_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bill"
                }
              }
            },
            "description": "Bill"
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:write"
            ]
          }
        ],
        "summary": "Remove Bill Association",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "parameters": [
        {
          "description": "Unique identifier of the associated bill to unlink.",
          "in": "path",
          "name": "associated_bill_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        },
        {
          "description": "Unique identifier of the bill.",
          "in": "path",
          "name": "bill_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/bills/{bill_id}/attachments": {
      "parameters": [
        {
          "in": "path",
          "name": "bill_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Upload a file as an attachment to a bill. INVOICE type attachments cannot be uploaded if one\nalready exists on the bill.\n\nThis endpoint accepts the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) format.\n\nInclude the file as a part named 'file' with `Content-Disposition: attachment`.\nInclude the attachment_type as a form field with value 'INVOICE' or 'FILE'.",
        "operationId": "post_bill_attachment_upload_resource",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ApiBillAttachmentUploadInputRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiBillAttachmentResponse"
                }
              }
            },
            "description": "Uploaded attachment"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:write"
            ]
          }
        ],
        "summary": "Upload a file attachment to an existing bill",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/bills/{bill_id}/hold": {
      "parameters": [
        {
          "description": "Unique identifier of the bill.",
          "in": "path",
          "name": "bill_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Blocks all payments rails on a bill and deschedules payments.",
        "operationId": "post_bill_hold_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiBillHoldParamsRequestBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bill"
                }
              }
            },
            "description": "Bill"
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:write"
            ]
          }
        ],
        "summary": "Hold Bill",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/bills/{bill_id}/release": {
      "parameters": [
        {
          "description": "Unique identifier of the bill.",
          "in": "path",
          "name": "bill_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Allows payments to be scheduled on a bill.",
        "operationId": "post_bill_release_hold_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Bill"
                }
              }
            },
            "description": "Bill"
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:write"
            ]
          }
        ],
        "summary": "Release Bill Hold",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/bills/{bill_id}/remittance-receipt": {
      "get": {
        "operationId": "get_bill_remittance_receipt_resource",
        "responses": {
          "200": {
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseFile"
                }
              }
            },
            "description": "Bill remittance receipt PDF"
          }
        },
        "security": [
          {
            "oauth2": [
              "bills:read"
            ]
          }
        ],
        "summary": "Fetch a bill remittance receipt",
        "tags": [
          "Bill"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "description": "Unique identifier of the bill.",
          "in": "path",
          "name": "bill_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/blank-canvas-approvals/documents": {
      "post": {
        "description": "This endpoint accepts the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) format.\n\nInclude the document as a part with `Content-Disposition: attachment`. Include metadata as parts with `Content-Disposition: form-data`.",
        "operationId": "post_blank_canvas_approval_document_resource",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/BlankCanvasDocumentRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "blank_canvas:write"
            ]
          }
        ],
        "summary": "Upload a document for a blank canvas workflow step",
        "tags": [
          "BlankCanvas"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/blank-canvas-approvals/{approval_trigger_instance_id}": {
      "parameters": [
        {
          "in": "path",
          "name": "approval_trigger_instance_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_blank_canvas_approval_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlankCanvasApprovalRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlankCanvasApprovalResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "blank_canvas:write"
            ]
          }
        ],
        "summary": "Approve or reject a blank canvas workflow step",
        "tags": [
          "BlankCanvas"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/blank-canvas-approvals/{approval_trigger_instance_id}/metadata": {
      "parameters": [
        {
          "in": "path",
          "name": "approval_trigger_instance_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_blank_canvas_approval_external_approval_metadata_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlankCanvasApprovalMetadataRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlankCanvasApprovalMetadataResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "blank_canvas:write"
            ]
          }
        ],
        "summary": "Update metadata for a blank canvas external approval request",
        "tags": [
          "BlankCanvas"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/business": {
      "get": {
        "operationId": "get_business_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Business"
                }
              }
            },
            "description": "Get business information"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises BusinessInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "business:read"
            ]
          }
        ],
        "summary": "Fetch the company information",
        "tags": [
          "Business"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/business/balance": {
      "get": {
        "operationId": "get_business_balance_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BusinessBalance"
                }
              }
            },
            "description": "Get business balance information"
          }
        },
        "security": [
          {
            "oauth2": [
              "business:read"
            ]
          }
        ],
        "summary": "Fetch the company balance information",
        "tags": [
          "Business"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/cards/physical": {
      "get": {
        "description": "Returns a paginated list of physical cards for the business. Cards can be filtered\nby user, activation status, termination status, and display name.",
        "operationId": "get_physical_card_list_with_pagination",
        "parameters": [
          {
            "description": "Filter by card owner.",
            "in": "query",
            "name": "user_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter by display name.",
            "in": "query",
            "name": "display_name",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter only for activated cards. Defaults to True if not specified",
            "in": "query",
            "name": "include_activated_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter only for terminated cards. Defaults to False if not specified",
            "in": "query",
            "name": "include_terminated_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiPhysicalCardResource"
                }
              }
            },
            "description": "List physical cards for the business"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises CardInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "cards:read"
            ]
          }
        ],
        "summary": "List physical cards",
        "tags": [
          "Physical Card"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "operationId": "post_physical_card_list_with_pagination",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiPhysicalCardCreateResourceRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhysicalCard"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises CardInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "cards:write"
            ]
          }
        ],
        "summary": "Create a physical card",
        "tags": [
          "Physical Card"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/cards/physical/{card_id}": {
      "delete": {
        "description": "Please note that this action is irreversible.",
        "operationId": "delete_card_termination_resource",
        "responses": {
          "204": {
            "description": "Success, No content"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises CardInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "cards:write"
            ]
          }
        ],
        "summary": "Terminate a card",
        "tags": [
          "Physical Card"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_physical_card_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhysicalCard"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises CardInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "cards:read"
            ]
          }
        ],
        "summary": "Fetch a physical card",
        "tags": [
          "Physical Card"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "card_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_physical_card_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiPhysicalCardUpdateResourceRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhysicalCard"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises CardInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "cards:write"
            ]
          }
        ],
        "summary": "Update a physical card",
        "tags": [
          "Physical Card"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/cards/physical/{card_id}/suspension": {
      "delete": {
        "operationId": "delete_card_unsuspension_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhysicalCard"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises CardInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "cards:write"
            ]
          }
        ],
        "summary": "Unsuspend a card",
        "tags": [
          "Physical Card"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "parameters": [
        {
          "in": "path",
          "name": "card_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "The suspension is revertable.",
        "operationId": "post_card_suspension_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhysicalCard"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises CardInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "cards:write"
            ]
          }
        ],
        "summary": "Suspend a card",
        "tags": [
          "Physical Card"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/cards/virtual": {
      "get": {
        "operationId": "get_virtual_card_list_with_pagination",
        "parameters": [
          {
            "description": "Filter by business entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter by card owner.",
            "in": "query",
            "name": "user_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter only for terminated cards. Defaults to False if not specified",
            "in": "query",
            "name": "is_terminated",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiVirtualCardResource"
                }
              }
            },
            "description": "List virtual cards for the business"
          }
        },
        "security": [
          {
            "oauth2": [
              "cards:read"
            ]
          }
        ],
        "summary": "List virtual cards",
        "tags": [
          "Virtual Cards"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/cards/virtual/{card_id}": {
      "get": {
        "operationId": "get_virtual_card_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VirtualCard"
                }
              }
            },
            "description": "Get single virtual card"
          }
        },
        "security": [
          {
            "oauth2": [
              "cards:read"
            ]
          }
        ],
        "summary": "Fetch a virtual card",
        "tags": [
          "Virtual Cards"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "card_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/cashbacks": {
      "get": {
        "operationId": "get_cashback_list_with_pagination",
        "parameters": [
          {
            "description": "Filter by sync status. Supersedes sync_ready if provided.",
            "in": "query",
            "name": "sync_status",
            "required": false,
            "schema": {
              "enum": [
                "NOT_SYNC_READY",
                "SYNCED",
                "SYNC_READY"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "NOT_SYNC_READY": "The object is missing required accounting setup and is not ready to sync.",
                "SYNCED": "The object has already been synced to the accounting provider.",
                "SYNC_READY": "The object is ready to sync to the accounting provider."
              }
            }
          },
          {
            "description": "Filter cashbacks by business entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter cashbacks included in the specified statement.",
            "in": "query",
            "name": "statement_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "statements",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter cashbacks that are ready to be synced (no pending syncs and completed).",
            "in": "query",
            "name": "sync_ready",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter cashbacks that occurred on or after this date (ISO8601 format).",
            "in": "query",
            "name": "from_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter cashbacks that occurred on or before this date (ISO8601 format).",
            "in": "query",
            "name": "to_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiCashbackResourceSchema"
                }
              }
            },
            "description": "Cashback"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "cashbacks:read"
            ]
          }
        ],
        "summary": "List cashback payments",
        "tags": [
          "Cashback"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/cashbacks/{cashback_id}": {
      "get": {
        "operationId": "get_cashback_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cashback"
                }
              }
            },
            "description": "Cashback"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "cashbacks:read"
            ]
          }
        ],
        "summary": "Fetch a cashback payment",
        "tags": [
          "Cashback"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "cashback_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/comments/{object_type}/{object_id}": {
      "get": {
        "description": "Requires `{resource_name}:read` scope and may require additional access.\nSee `object_type` description for more information.",
        "operationId": "get_comments_resource",
        "parameters": [
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiCommentResourceSchema"
                }
              }
            },
            "description": "Comments"
          }
        },
        "security": [
          {
            "oauth2": []
          }
        ],
        "summary": "List comments on an object's discussion thread",
        "tags": [
          "Comments"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "object_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        },
        {
          "in": "path",
          "name": "object_type",
          "required": true,
          "schema": {
            "enum": [
              "bills",
              "draft-bills",
              "spend-requests",
              "transactions"
            ],
            "type": "string",
            "x-enum-descriptions": {
              "bills": "Requires `bills:read` or `bills:write` scope",
              "draft-bills": "Requires `bills:read` or `bills:write` scope",
              "spend-requests": "Requires `spend_requests:read` or `spend_requests:write` scope and `procurement` access",
              "transactions": "Requires `transactions:read` or `transactions:write` scope"
            }
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Requires `{resource_name}:write` scope and may require additional access.\nSee `object_type` description for more information.",
        "operationId": "post_comments_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiCommentCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiCommentResource"
                }
              }
            },
            "description": "Created comment"
          }
        },
        "security": [
          {
            "oauth2": []
          }
        ],
        "summary": "Create a comment on an object's discussion thread",
        "tags": [
          "Comments"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/custom-form/collections/responses/{custom_form_collection_response_id}": {
      "get": {
        "operationId": "get_custom_form_collection_response_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiCustomFormCollectionResponseResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_forms:read"
            ]
          }
        ],
        "summary": "Fetch a custom form collection response by ID",
        "tags": [
          "CustomForm"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "custom_form_collection_response_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/custom-records/configure/custom-tables": {
      "post": {
        "operationId": "post_dev_api_configure_custom_tables",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomTableReferenceUsingLabelAndNameRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Create Custom Table"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Create Custom Table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": false,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/configure/custom-tables/{custom_table_name}/columns": {
      "parameters": [
        {
          "in": "path",
          "name": "custom_table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_dev_api_configure_custom_table_columns",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeveloperApiCreateCustomRecordColumnRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedTableColumnResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Create Custom Table column",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/configure/custom-tables/{custom_table_name}/columns/{column_name}": {
      "parameters": [
        {
          "in": "path",
          "name": "column_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        },
        {
          "in": "path",
          "name": "custom_table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_dev_api_rename_custom_table_column",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameColumnRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Change the API name of a Custom Table's Column",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/configure/native-tables": {
      "post": {
        "operationId": "post_dev_api_configure_native_tables",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NativeTableReferenceRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Extend Native Ramp table"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Extend Native Ramp table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": false,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/configure/native-tables/{native_table_name}/columns": {
      "parameters": [
        {
          "in": "path",
          "name": "native_table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_dev_api_configure_native_table_columns",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeveloperApiCreateCustomRecordColumnRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedTableColumnResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Create Native Ramp table field",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/configure/native-tables/{native_table_name}/columns/{column_name}": {
      "parameters": [
        {
          "in": "path",
          "name": "column_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        },
        {
          "in": "path",
          "name": "native_table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_dev_api_rename_native_table_column",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameColumnRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Change the API name of a Native Table's Custom Record Column",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/custom-tables": {
      "get": {
        "operationId": "get_dev_api_custom_table",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseCustomTableReferenceUsingLabelAndName"
                }
              }
            },
            "description": "List of Custom Tables"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Custom Table not found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:read"
            ]
          }
        ],
        "summary": "List Custom Tables",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/custom-tables/{custom_table_name}/columns": {
      "get": {
        "operationId": "get_dev_api_custom_table_column",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseDeveloperApiCustomRecordColumn"
                }
              }
            },
            "description": "List of Custom Table columns"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Custom Table not found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:read"
            ]
          }
        ],
        "summary": "List Custom Table columns",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "custom_table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/custom-records/custom-tables/{custom_table_name}/rows": {
      "delete": {
        "operationId": "delete_dev_api_custom_row",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteCustomRowRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteCustomRowResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Delete rows from a Custom Table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      },
      "get": {
        "operationId": "get_dev_api_custom_row",
        "parameters": [
          {
            "in": "query",
            "name": "external_key",
            "required": false,
            "schema": {
              "default": null,
              "description": "External key of the custom row",
              "items": {
                "type": "string"
              },
              "nullable": true,
              "title": "External Key",
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "include_all_referenced_rows",
            "required": false,
            "schema": {
              "default": false,
              "description": "Include all referenced rows in each cell rather than a subset of them.",
              "title": "Include All Referenced Rows",
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 50,
              "description": "Number of rows to include in the response. Max: 100",
              "title": "Page Size",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "default": null,
              "description": "The value of the `next` field from the previous response, if any",
              "nullable": true,
              "title": "Start",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseCustomRowDataWithLoadedReferences"
                }
              }
            },
            "description": "List of Custom Table rows"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Custom Table not found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:read"
            ]
          }
        ],
        "summary": "List Custom Table rows",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "custom_table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "put": {
        "operationId": "put_dev_api_custom_row",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutCustomRowRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutCustomRowResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Set values for rows of a Custom Table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/custom-tables/{custom_table_name}/rows/{row_id}": {
      "parameters": [
        {
          "in": "path",
          "name": "custom_table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        },
        {
          "in": "path",
          "name": "row_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_dev_api_change_custom_row_external_key",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeRowExternalKeyRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Change the external key of a Custom Table row",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/custom-tables/{table_name}/rows/-/append": {
      "parameters": [
        {
          "in": "path",
          "name": "table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_dev_api_append_custom_row_cells",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutCustomRowRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InsertCellsResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Append cells to a Custom Table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/custom-tables/{table_name}/rows/-/remove": {
      "parameters": [
        {
          "in": "path",
          "name": "table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_dev_api_remove_custom_row_cells",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutCustomRowRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteCellsResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Remove cells from a Custom Table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/matrix-tables": {
      "get": {
        "operationId": "get_dev_api_matrix_tables",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiListMatrixTablesResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:read"
            ]
          }
        ],
        "summary": "List all Matrix tables for the business",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      },
      "post": {
        "description": "Matrix tables are special-purpose lookup tables where unique combinations\nof input values map to result values.",
        "operationId": "post_dev_api_matrix_tables",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeveloperApiCreateMatrixTableRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiCreateMatrixTableResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Create a Matrix table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/matrix-tables/{table_name}/columns": {
      "parameters": [
        {
          "in": "path",
          "name": "table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Allows adding result columns to already-created matrix tables\nwithout modifying the input columns. Only result columns\n(users and accounting_field_options) can be added.\nInput columns cannot be added after table creation.",
        "operationId": "post_dev_api_add_matrix_result_column",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeveloperApiMatrixResultColumnDefRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiAddResultColumnResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Add a result column to an existing Matrix table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/matrix-tables/{table_name}/columns/{column_name}": {
      "parameters": [
        {
          "in": "path",
          "name": "column_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        },
        {
          "in": "path",
          "name": "table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "description": "This changes the internal name used in API calls while preserving\nthe human-readable label. Both input and result columns can be renamed.",
        "operationId": "patch_dev_api_rename_matrix_column",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameColumnRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Change the API name of a Matrix table column (input or result)",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/matrix-tables/{table_name}/list-rows": {
      "parameters": [
        {
          "in": "path",
          "name": "table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Returns rows with inputs and results separated.\nInputs are always complete (all input columns), results are sparse (only set values).",
        "operationId": "post_dev_api_matrix_list_rows",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListMatrixRowsByNameRequestRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMatrixRowsByNameResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:read"
            ]
          }
        ],
        "summary": "List Matrix table rows",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/matrix-tables/{table_name}/rename": {
      "parameters": [
        {
          "in": "path",
          "name": "table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_dev_api_rename_matrix_table",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameTableRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Change the API name of a Matrix table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/matrix-tables/{table_name}/rows": {
      "parameters": [
        {
          "in": "path",
          "name": "table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "put": {
        "description": "Creates new rows or updates existing rows based on input values.\nInput values define row identity (via external_key).\nResult values are mutable and can be partially updated.",
        "operationId": "put_dev_api_matrix_put_rows",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutMatrixRowsByNameRequestRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutMatrixRowsByNameResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Upsert Matrix table rows",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/matrix-tables/{table_name}/rows/-/append": {
      "parameters": [
        {
          "in": "path",
          "name": "table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Adds values to many-to-many result columns without replacing existing values.\nOnly works on many-to-many result columns.\nSet ignore_duplicates=true to skip existing duplicate cells instead of erroring.",
        "operationId": "post_dev_api_matrix_append_cells",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppendMatrixCellsByNameRequestRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppendMatrixCellsByNameResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Append cells to Matrix table rows",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/matrix-tables/{table_name}/rows/-/remove": {
      "parameters": [
        {
          "in": "path",
          "name": "table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Removes specific values from many-to-many result columns without affecting other values.",
        "operationId": "post_dev_api_matrix_remove_cells",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoveMatrixCellsByNameRequestRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemoveMatrixCellsByNameResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Remove cells from Matrix table rows",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/matrix-tables/{table_name}/rows/{row_id}": {
      "delete": {
        "description": "Deletes the matrix row with the specified ID from the matrix table.",
        "operationId": "delete_dev_api_delete_matrix_row",
        "responses": {
          "204": {
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Delete a single Matrix table row by ID",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "row_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        },
        {
          "in": "path",
          "name": "table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/custom-records/native-tables": {
      "get": {
        "operationId": "get_dev_api_native_table",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseNativeTableReference"
                }
              }
            },
            "description": "List of Native Ramp tables"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Native Ramp Table not found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:read"
            ]
          }
        ],
        "summary": "List Native Ramp tables",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/native-tables/{native_table_name}/columns": {
      "get": {
        "operationId": "get_dev_api_native_table_column",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseDeveloperApiCustomRecordColumn"
                }
              }
            },
            "description": "List of Custom Columns for a Native Ramp table"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Native Ramp table not found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:read"
            ]
          }
        ],
        "summary": "List Custom Columns for a Native Ramp table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "native_table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/custom-records/native-tables/{native_table_name}/rows": {
      "get": {
        "operationId": "get_dev_api_native_row",
        "parameters": [
          {
            "in": "query",
            "name": "include_all_referenced_rows",
            "required": false,
            "schema": {
              "default": false,
              "description": "Include all referenced rows in each cell rather than a subset of them.",
              "title": "Include All Referenced Rows",
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 50,
              "description": "Number of rows to include in the response. Max: 100",
              "title": "Page Size",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "ramp_id",
            "required": false,
            "schema": {
              "default": null,
              "description": "id of the Ramp object",
              "items": {
                "type": "string"
              },
              "nullable": true,
              "title": "Ramp Id",
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "default": null,
              "description": "The value of the `next` field from the previous response, if any",
              "nullable": true,
              "title": "Start",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseCustomRowDataWithLoadedReferences"
                }
              }
            },
            "description": "List of Custom Column values for rows of a Native Ramp table"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Native Ramp table not found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:read"
            ]
          }
        ],
        "summary": "List Custom Column values for rows of a Native Ramp table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "native_table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "put": {
        "operationId": "put_dev_api_native_row",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutNativeRowRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PutCustomRowResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Set values for rows of a Native Ramp table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/native-tables/{native_table_name}/rows/-/append": {
      "parameters": [
        {
          "in": "path",
          "name": "native_table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_dev_api_append_native_row_cells",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PutNativeRowRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InsertCellsResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Append cells to a Native Ramp table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/custom-records/native-tables/{native_table_name}/rows/-/remove": {
      "parameters": [
        {
          "in": "path",
          "name": "native_table_name",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_dev_api_remove_native_row_cells",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoveNativeRowCellsRequestRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteCellsResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "custom_records:write"
            ]
          }
        ],
        "summary": "Remove cells from a Native Ramp table",
        "tags": [
          "Custom Records"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/departments": {
      "get": {
        "operationId": "get_department_list_with_pagination",
        "parameters": [
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiDepartmentResourceSchema"
                }
              }
            },
            "description": "Departments"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises DepartmentInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "departments:read"
            ]
          }
        ],
        "summary": "List departments",
        "tags": [
          "Department"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "operationId": "post_department_list_with_pagination",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiDepartmentCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Department"
                }
              }
            },
            "description": "Department"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises DepartmentInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "departments:write"
            ]
          }
        ],
        "summary": "Create a department",
        "tags": [
          "Department"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/departments/{department_id}": {
      "get": {
        "operationId": "get_department_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Department"
                }
              }
            },
            "description": "Department"
          }
        },
        "security": [
          {
            "oauth2": [
              "departments:read"
            ]
          }
        ],
        "summary": "Fetch a department",
        "tags": [
          "Department"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "department_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_department_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiDepartmentUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Department"
                }
              }
            },
            "description": "Department"
          }
        },
        "security": [
          {
            "oauth2": [
              "departments:write"
            ]
          }
        ],
        "summary": "Update a department",
        "tags": [
          "Department"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/embedded/cards/{card_id}/embed": {
      "parameters": [
        {
          "in": "path",
          "name": "card_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "The specified card must be activated and currently active",
        "operationId": "post_ramp_embedded_card_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiEmbedInitTokenCreateRequestParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEmbedInitTokenCreateResponse"
                }
              }
            },
            "description": "Ramp Embedded Initialized"
          }
        },
        "security": [
          {
            "oauth2": [
              "embedded_cards:write"
            ]
          }
        ],
        "summary": "Create an embed init token for a card",
        "tags": [
          "Embedded Cards"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/entities": {
      "get": {
        "operationId": "get_entity_list_with_pagination",
        "parameters": [
          {
            "description": "Filter by currency of the entity.",
            "in": "query",
            "name": "currency",
            "required": false,
            "schema": {
              "enum": [
                "AED",
                "AFN",
                "ALL",
                "AMD",
                "ANG",
                "AOA",
                "ARS",
                "AUD",
                "AWG",
                "AZN",
                "BAM",
                "BBD",
                "BDT",
                "BGN",
                "BHD",
                "BIF",
                "BMD",
                "BND",
                "BOB",
                "BOV",
                "BRL",
                "BSD",
                "BTN",
                "BWP",
                "BYN",
                "BZD",
                "CAD",
                "CDF",
                "CHE",
                "CHF",
                "CHW",
                "CLF",
                "CLP",
                "CNH",
                "CNY",
                "COP",
                "COU",
                "CRC",
                "CUC",
                "CUP",
                "CVE",
                "CZK",
                "DJF",
                "DKK",
                "DOP",
                "DZD",
                "EGP",
                "ERN",
                "ETB",
                "EUR",
                "EURC",
                "FJD",
                "FKP",
                "GBP",
                "GEL",
                "GHS",
                "GIP",
                "GMD",
                "GNF",
                "GTQ",
                "GYD",
                "HKD",
                "HNL",
                "HRK",
                "HTG",
                "HUF",
                "IDR",
                "ILS",
                "INR",
                "IQD",
                "IRR",
                "ISK",
                "JMD",
                "JOD",
                "JPY",
                "KES",
                "KGS",
                "KHR",
                "KMF",
                "KPW",
                "KRW",
                "KWD",
                "KYD",
                "KZT",
                "LAK",
                "LBP",
                "LKR",
                "LRD",
                "LSL",
                "LYD",
                "MAD",
                "MDL",
                "MGA",
                "MKD",
                "MMK",
                "MNT",
                "MOP",
                "MRU",
                "MUR",
                "MVR",
                "MWK",
                "MXN",
                "MXV",
                "MYR",
                "MZN",
                "NAD",
                "NGN",
                "NIO",
                "NOK",
                "NPR",
                "NZD",
                "OMR",
                "OPEN_USD",
                "PAB",
                "PEN",
                "PGK",
                "PHP",
                "PKR",
                "PLN",
                "PYG",
                "QAR",
                "RON",
                "RSD",
                "RUB",
                "RWF",
                "SAR",
                "SBD",
                "SCR",
                "SDG",
                "SEK",
                "SGD",
                "SHP",
                "SLE",
                "SLL",
                "SOS",
                "SRD",
                "SSP",
                "STN",
                "SVC",
                "SYP",
                "SZL",
                "THB",
                "TJS",
                "TMT",
                "TND",
                "TOP",
                "TRY",
                "TTD",
                "TWD",
                "TZS",
                "UAH",
                "UGX",
                "USD",
                "USDB",
                "USDC",
                "USDG",
                "USDT",
                "USN",
                "UYI",
                "UYU",
                "UYW",
                "UZS",
                "VED",
                "VES",
                "VND",
                "VUV",
                "WST",
                "XAD",
                "XAF",
                "XAG",
                "XAU",
                "XBA",
                "XBB",
                "XBC",
                "XBD",
                "XCD",
                "XCG",
                "XDR",
                "XOF",
                "XPD",
                "XPF",
                "XPT",
                "XSU",
                "XTS",
                "XUA",
                "XXX",
                "YER",
                "ZAR",
                "ZMW",
                "ZWG",
                "ZWL"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "AED": "UAE Dirham",
                "AFN": "Afghani",
                "ALL": "Lek",
                "AMD": "Armenian Dram",
                "ANG": "Netherlands Antillean Guilder",
                "AOA": "Kwanza",
                "ARS": "Argentine Peso",
                "AUD": "Australian Dollar",
                "AWG": "Aruban Florin",
                "AZN": "Azerbaijan Manat",
                "BAM": "Convertible Mark",
                "BBD": "Barbados Dollar",
                "BDT": "Taka",
                "BGN": "Bulgarian Lev",
                "BHD": "Bahraini Dinar",
                "BIF": "Burundi Franc",
                "BMD": "Bermudian Dollar",
                "BND": "Brunei Dollar",
                "BOB": "Boliviano",
                "BOV": "Mvdol",
                "BRL": "Brazilian Real",
                "BSD": "Bahamian Dollar",
                "BTN": "Ngultrum",
                "BWP": "Pula",
                "BYN": "Belarusian Ruble",
                "BZD": "Belize Dollar",
                "CAD": "Canadian Dollar",
                "CDF": "Congolese Franc",
                "CHE": "WIR Euro",
                "CHF": "Swiss Franc",
                "CHW": "WIR Franc",
                "CLF": "Unidad de Fomento",
                "CLP": "Chilean Peso",
                "CNH": "CNH",
                "CNY": "Yuan Renminbi",
                "COP": "Colombian Peso",
                "COU": "Unidad de Valor Real",
                "CRC": "Costa Rican Colon",
                "CUC": "Peso Convertible",
                "CUP": "Cuban Peso",
                "CVE": "Cabo Verde Escudo",
                "CZK": "Czech Koruna",
                "DJF": "Djibouti Franc",
                "DKK": "Danish Krone",
                "DOP": "Dominican Peso",
                "DZD": "Algerian Dinar",
                "EGP": "Egyptian Pound",
                "ERN": "Nakfa",
                "ETB": "Ethiopian Birr",
                "EUR": "Euro",
                "EURC": "Euro Coin",
                "FJD": "Fiji Dollar",
                "FKP": "Falkland Islands Pound",
                "GBP": "Pound Sterling",
                "GEL": "Lari",
                "GHS": "Ghana Cedi",
                "GIP": "Gibraltar Pound",
                "GMD": "Dalasi",
                "GNF": "Guinean Franc",
                "GTQ": "Quetzal",
                "GYD": "Guyana Dollar",
                "HKD": "Hong Kong Dollar",
                "HNL": "Lempira",
                "HRK": "Croatian Kuna",
                "HTG": "Gourde",
                "HUF": "Forint",
                "IDR": "Rupiah",
                "ILS": "New Israeli Sheqel",
                "INR": "Indian Rupee",
                "IQD": "Iraqi Dinar",
                "IRR": "Iranian Rial",
                "ISK": "Iceland Krona",
                "JMD": "Jamaican Dollar",
                "JOD": "Jordanian Dinar",
                "JPY": "Yen",
                "KES": "Kenyan Shilling",
                "KGS": "Som",
                "KHR": "Riel",
                "KMF": "Comorian Franc",
                "KPW": "North Korean Won",
                "KRW": "Won",
                "KWD": "Kuwaiti Dinar",
                "KYD": "Cayman Islands Dollar",
                "KZT": "Tenge",
                "LAK": "Lao Kip",
                "LBP": "Lebanese Pound",
                "LKR": "Sri Lanka Rupee",
                "LRD": "Liberian Dollar",
                "LSL": "Loti",
                "LYD": "Libyan Dinar",
                "MAD": "Moroccan Dirham",
                "MDL": "Moldovan Leu",
                "MGA": "Malagasy Ariary",
                "MKD": "Denar",
                "MMK": "Kyat",
                "MNT": "Tugrik",
                "MOP": "Pataca",
                "MRU": "Ouguiya",
                "MUR": "Mauritius Rupee",
                "MVR": "Rufiyaa",
                "MWK": "Malawi Kwacha",
                "MXN": "Mexican Peso",
                "MXV": "Mexican Unidad de Inversion (UDI)",
                "MYR": "Malaysian Ringgit",
                "MZN": "Mozambique Metical",
                "NAD": "Namibia Dollar",
                "NGN": "Naira",
                "NIO": "Cordoba Oro",
                "NOK": "Norwegian Krone",
                "NPR": "Nepalese Rupee",
                "NZD": "New Zealand Dollar",
                "OMR": "Rial Omani",
                "OPEN_USD": "OpenUSD",
                "PAB": "Balboa",
                "PEN": "Sol",
                "PGK": "Kina",
                "PHP": "Philippine Peso",
                "PKR": "Pakistan Rupee",
                "PLN": "Zloty",
                "PYG": "Guarani",
                "QAR": "Qatari Rial",
                "RON": "Romanian Leu",
                "RSD": "Serbian Dinar",
                "RUB": "Russian Ruble",
                "RWF": "Rwanda Franc",
                "SAR": "Saudi Riyal",
                "SBD": "Solomon Islands Dollar",
                "SCR": "Seychelles Rupee",
                "SDG": "Sudanese Pound",
                "SEK": "Swedish Krona",
                "SGD": "Singapore Dollar",
                "SHP": "Saint Helena Pound",
                "SLE": "Leone",
                "SLL": "Leone",
                "SOS": "Somali Shilling",
                "SRD": "Surinam Dollar",
                "SSP": "South Sudanese Pound",
                "STN": "Dobra",
                "SVC": "El Salvador Colon",
                "SYP": "Syrian Pound",
                "SZL": "Lilangeni",
                "THB": "Baht",
                "TJS": "Somoni",
                "TMT": "Turkmenistan New Manat",
                "TND": "Tunisian Dinar",
                "TOP": "Pa’anga",
                "TRY": "Turkish Lira",
                "TTD": "Trinidad and Tobago Dollar",
                "TWD": "New Taiwan Dollar",
                "TZS": "Tanzanian Shilling",
                "UAH": "Hryvnia",
                "UGX": "Uganda Shilling",
                "USD": "US Dollar",
                "USDB": "USDB",
                "USDC": "USDC",
                "USDG": "Global Dollar",
                "USDT": "USDT",
                "USN": "US Dollar (Next day)",
                "UYI": "Uruguay Peso en Unidades Indexadas (UI)",
                "UYU": "Peso Uruguayo",
                "UYW": "Unidad Previsional",
                "UZS": "Uzbekistan Sum",
                "VED": "Bolívar Soberano",
                "VES": "Bolívar Soberano",
                "VND": "Dong",
                "VUV": "Vatu",
                "WST": "Tala",
                "XAD": "Arab Accounting Dinar",
                "XAF": "CFA Franc BEAC",
                "XAG": "Silver",
                "XAU": "Gold",
                "XBA": "Bond Markets Unit European Composite Unit (EURCO)",
                "XBB": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
                "XBC": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
                "XBD": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
                "XCD": "East Caribbean Dollar",
                "XCG": "Caribbean Guilder",
                "XDR": "SDR (Special Drawing Right)",
                "XOF": "CFA Franc BCEAO",
                "XPD": "Palladium",
                "XPF": "CFP Franc",
                "XPT": "Platinum",
                "XSU": "Sucre",
                "XTS": "Codes specifically reserved for testing purposes",
                "XUA": "ADB Unit of Account",
                "XXX": "The codes assigned for transactions where no currency is involved",
                "YER": "Yemeni Rial",
                "ZAR": "Rand",
                "ZMW": "Zambian Kwacha",
                "ZWG": "Zimbabwe Gold",
                "ZWL": "Zimbabwe Dollar"
              }
            }
          },
          {
            "description": "Filter entities by name.",
            "in": "query",
            "name": "entity_name",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter to include only primary or non-primary entities.",
            "in": "query",
            "name": "is_primary",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Hide inactive entities. Defaults to False.",
            "in": "query",
            "name": "hide_inactive",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "Include custom record field values in the response. Defaults to False.",
            "in": "query",
            "name": "include_custom_field_values",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "include_deleted_accounts",
            "required": false,
            "schema": {}
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiEntityResourceSchema"
                }
              }
            },
            "description": "Entities"
          }
        },
        "security": [
          {
            "oauth2": [
              "entities:read"
            ]
          }
        ],
        "summary": "List business entities",
        "tags": [
          "Business Entities"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/entities/{entity_id}": {
      "get": {
        "operationId": "get_entity_resource",
        "parameters": [
          {
            "description": "Hide inactive entities. Defaults to False.",
            "in": "query",
            "name": "hide_inactive",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "Include custom record field values in the response. Defaults to False.",
            "in": "query",
            "name": "include_custom_field_values",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiEntityResource"
                }
              }
            },
            "description": "Entity"
          }
        },
        "security": [
          {
            "oauth2": [
              "entities:read"
            ]
          }
        ],
        "summary": "Get a business entity",
        "tags": [
          "Business Entities"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "entity_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/funds": {
      "get": {
        "operationId": "get_fund_list",
        "parameters": [
          {
            "description": "Filter by display name.",
            "in": "query",
            "name": "display_name",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter for funds associated with the specified spend program.",
            "in": "query",
            "name": "spend_program_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "spend_programs",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter for funds by associated business entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter for funds created after the specified date. Input needs to be in ISO8601 format, e.g. 2026-01-15T00:00:00Z",
            "in": "query",
            "name": "created_after",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter for funds created before the specified date. Input needs to be in ISO8601 format, e.g. 2026-01-15T00:00:00Z",
            "in": "query",
            "name": "created_before",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter for funds linked to the card.",
            "in": "query",
            "name": "card_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "cards",
                "type": "many-to-many"
              }
            }
          },
          {
            "description": "Filter for funds owned by the user.",
            "in": "query",
            "name": "user_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter only for terminated funds.",
            "in": "query",
            "name": "is_terminated",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "List of member roles to filter on. If provided with user_id, only funds where that user has one of the matching member roles will be returned. Member roles are 'OWNER', 'COOWNER', and 'MEMBER'. Can be provided as repeated parameters or comma-separated values.",
            "explode": false,
            "in": "query",
            "name": "member_roles",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "COOWNER",
                  "MEMBER",
                  "OWNER"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "COOWNER": "The user is a co-owner of the spend allocation.",
                  "MEMBER": "The user is a non-owner member of the spend allocation.",
                  "OWNER": "The user owns the spend allocation."
                }
              },
              "nullable": false,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiFundResource"
                }
              }
            },
            "description": "Funds"
          }
        },
        "security": [
          {
            "oauth2": [
              "funds:read"
            ]
          }
        ],
        "summary": "List funds",
        "tags": [
          "Fund"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "Fund may either be created with spend_program_id (inherits program defaults)\nor standalone (must provide display_name, spending_restrictions, and permitted_spend_types).",
        "operationId": "post_fund_creation",
        "parameters": [
          {
            "description": "Unique idempotency key generated by the client. Must be a non-empty string of at most 255 characters.",
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiFundCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fund"
                }
              }
            },
            "description": "Created fund"
          }
        },
        "security": [
          {
            "oauth2": [
              "funds:write"
            ]
          }
        ],
        "summary": "Create a fund",
        "tags": [
          "Fund"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/funds/{fund_id}": {
      "delete": {
        "operationId": "delete_fund_termination",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fund"
                }
              }
            },
            "description": "Terminated fund"
          }
        },
        "security": [
          {
            "oauth2": [
              "funds:write"
            ]
          }
        ],
        "summary": "Terminate a fund",
        "tags": [
          "Fund"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_fund_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fund"
                }
              }
            },
            "description": "Get a fund"
          }
        },
        "security": [
          {
            "oauth2": [
              "funds:read"
            ]
          }
        ],
        "summary": "Fetch a fund",
        "tags": [
          "Fund"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "fund_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_fund_update",
        "parameters": [
          {
            "description": "Unique idempotency key generated by the client. Must be a non-empty string of at most 255 characters.",
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiFundUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fund"
                }
              }
            },
            "description": "Update a fund"
          }
        },
        "security": [
          {
            "oauth2": [
              "funds:write"
            ]
          }
        ],
        "summary": "Update a fund",
        "tags": [
          "Fund"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/funds/{fund_id}/members": {
      "delete": {
        "operationId": "delete_fund_remove_members",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiFundMembersRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fund"
                }
              }
            },
            "description": "Fund with removed members"
          }
        },
        "security": [
          {
            "oauth2": [
              "funds:write"
            ]
          }
        ],
        "summary": "Remove members from a fund",
        "tags": [
          "Fund"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "parameters": [
        {
          "in": "path",
          "name": "fund_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_fund_add_members",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiFundMembersRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fund"
                }
              }
            },
            "description": "Fund with added members"
          }
        },
        "security": [
          {
            "oauth2": [
              "funds:write"
            ]
          }
        ],
        "summary": "Add members to a fund",
        "tags": [
          "Fund"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/funds/{fund_id}/members/{user_id}/suspension": {
      "delete": {
        "operationId": "delete_fund_member_unsuspension",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fund"
                }
              }
            },
            "description": "Fund with unsuspended member"
          }
        },
        "security": [
          {
            "oauth2": [
              "funds:write"
            ]
          }
        ],
        "summary": "Unsuspend a fund member",
        "tags": [
          "Fund"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "parameters": [
        {
          "in": "path",
          "name": "fund_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        },
        {
          "in": "path",
          "name": "user_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_fund_member_suspension",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fund"
                }
              }
            },
            "description": "Fund with suspended member"
          }
        },
        "security": [
          {
            "oauth2": [
              "funds:write"
            ]
          }
        ],
        "summary": "Suspend a fund member",
        "tags": [
          "Fund"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/funds/{fund_id}/suspension": {
      "delete": {
        "operationId": "delete_fund_unsuspension",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fund"
                }
              }
            },
            "description": "Response indicating successful unsuspension of the fund."
          }
        },
        "security": [
          {
            "oauth2": [
              "funds:write"
            ]
          }
        ],
        "summary": "Unsuspend a fund",
        "tags": [
          "Fund"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "parameters": [
        {
          "in": "path",
          "name": "fund_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_fund_suspension",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Fund"
                }
              }
            },
            "description": "Response indicating successful suspension of the fund."
          }
        },
        "security": [
          {
            "oauth2": [
              "funds:write"
            ]
          }
        ],
        "summary": "Suspend a fund",
        "tags": [
          "Fund"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/item-receipts": {
      "get": {
        "operationId": "get_item_receipts_resource",
        "parameters": [
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          },
          {
            "description": "Unique identifier for the associated business entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Unique identifier for the associated purchase order line item.",
            "in": "query",
            "name": "purchase_order_line_item_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Unique identifier for the associated purchase order.",
            "in": "query",
            "name": "purchase_order_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "purchase_orders",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Whether to include archived item receipts. By default, include_archived is false.",
            "in": "query",
            "name": "include_archived",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiItemReceiptResourceSchema"
                }
              }
            },
            "description": "Get all item receipts"
          }
        },
        "security": [
          {
            "oauth2": [
              "item_receipts:read"
            ]
          }
        ],
        "summary": "List item receipts",
        "tags": [
          "Item Receipts"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true,
        "x-uses-read-replica": true
      },
      "post": {
        "operationId": "post_item_receipts_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiItemReceiptCreateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiItemReceiptResource"
                }
              }
            },
            "description": "Create an item receipt"
          }
        },
        "security": [
          {
            "oauth2": [
              "item_receipts:write"
            ]
          }
        ],
        "summary": "Create an item receipt",
        "tags": [
          "Item Receipts"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/item-receipts/{item_receipt_id}": {
      "delete": {
        "operationId": "delete_item_receipt_single_resource",
        "responses": {
          "204": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmptyObject"
                }
              }
            },
            "description": "Item receipt deleted"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Not found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "item_receipts:write"
            ]
          }
        ],
        "summary": "Delete an item receipt",
        "tags": [
          "Item Receipts"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      },
      "get": {
        "operationId": "get_item_receipt_single_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiItemReceiptResource"
                }
              }
            },
            "description": "Item receipt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Not found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "item_receipts:read"
            ]
          }
        ],
        "summary": "Fetch an item receipt",
        "tags": [
          "Item Receipts"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "item_receipt_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/locations": {
      "get": {
        "operationId": "get_location_list_resource",
        "parameters": [
          {
            "description": "Filter by associated business entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiLocationResourceSchema"
                }
              }
            },
            "description": "Locations"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises LocationInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "locations:read"
            ]
          }
        ],
        "summary": "List locations",
        "tags": [
          "Location"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "operationId": "post_location_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiLocationCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Location"
                }
              }
            },
            "description": "Location"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises LocationInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "locations:write"
            ]
          }
        ],
        "summary": "Create a location",
        "tags": [
          "Location"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/locations/{location_id}": {
      "get": {
        "operationId": "get_location_single_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Location"
                }
              }
            },
            "description": "Location"
          }
        },
        "security": [
          {
            "oauth2": [
              "locations:read"
            ]
          }
        ],
        "summary": "Fetch a location",
        "tags": [
          "Location"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "location_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_location_single_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiLocationUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Location"
                }
              }
            },
            "description": "Location"
          }
        },
        "security": [
          {
            "oauth2": [
              "locations:write"
            ]
          }
        ],
        "summary": "Update a location",
        "tags": [
          "Location"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/memos": {
      "get": {
        "operationId": "get_memo_list_with_pagination",
        "parameters": [
          {
            "description": "Filter memos by card.",
            "in": "query",
            "name": "card_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "cards",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter memos by department.",
            "in": "query",
            "name": "department_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "departments",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter memos by location.",
            "in": "query",
            "name": "location_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "locations",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter memos by manager.",
            "in": "query",
            "name": "manager_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter memos by merchant.",
            "in": "query",
            "name": "merchant_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "merchants",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter memos by user.",
            "in": "query",
            "name": "user_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter memos for transactions after this date.",
            "in": "query",
            "name": "from_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter memos for transactions before this date.",
            "in": "query",
            "name": "to_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiMemoResourceSchema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises MemoInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "memos:read"
            ]
          }
        ],
        "summary": "List memos",
        "tags": [
          "Memo"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/memos/{transaction_id}": {
      "get": {
        "operationId": "get_memo_single_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Memo"
                }
              }
            },
            "description": "Memo"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises MemoInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises NotFound",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "memos:read"
            ]
          }
        ],
        "summary": "Fetch a transaction memo",
        "tags": [
          "Memo"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "transaction_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_memo_create_single_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiMemoCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Memo"
                }
              }
            },
            "description": "Memo"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises MemoInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises NotFound",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "memos:write"
            ]
          }
        ],
        "summary": "Upload a new memo for a transaction",
        "tags": [
          "Memo"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/merchants": {
      "get": {
        "operationId": "get_merchant_list_with_pagination",
        "parameters": [
          {
            "description": "Filter merchants by URL or domain after normalization.",
            "in": "query",
            "name": "merchant_url",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter merchants by a case-sensitive display name prefix.",
            "in": "query",
            "name": "merchant_name",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter merchants by transactions occurring (`user_transaction_time`) on or after this date",
            "in": "query",
            "name": "transaction_from_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter merchants by transactions occurring (`user_transaction_time`) on or before this date",
            "in": "query",
            "name": "transaction_to_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiMerchantResourceSchema"
                }
              }
            },
            "description": "Merchants"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "merchants:read"
            ]
          }
        ],
        "summary": "List merchants",
        "tags": [
          "Merchant",
          "merchant"
        ],
        "x-alias": "list",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": true,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/payments": {
      "get": {
        "operationId": "get_payment_list_resource",
        "parameters": [
          {
            "description": "Filter payments by external reference.",
            "in": "query",
            "name": "external_ref",
            "required": false,
            "schema": {
              "minLength": 1,
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter payments by status.",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "CANCELED",
                "COMPLETED",
                "ERROR",
                "PROCESSING",
                "SCHEDULED"
              ],
              "nullable": true,
              "type": "string",
              "x-enum-descriptions": {
                "CANCELED": "The payment was canceled before completion.",
                "COMPLETED": "The payment completed successfully.",
                "ERROR": "The payment encountered an error and was not completed.",
                "PROCESSING": "The payment is currently being processed.",
                "SCHEDULED": "The payment is scheduled to be sent on a future date."
              }
            }
          },
          {
            "description": "Filter payments by vendor ID.",
            "in": "query",
            "name": "vendor_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "vendors",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Include canceled payments. Defaults to False. Filtering by status=CANCELED returns canceled payments regardless.",
            "in": "query",
            "name": "include_canceled",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiPaymentResourceSchema"
                }
              }
            },
            "description": "Payments"
          }
        },
        "security": [
          {
            "oauth2": [
              "payments:read"
            ]
          }
        ],
        "summary": "List payments",
        "tags": [
          "Payment"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "operationId": "post_payment_list_resource",
        "parameters": [
          {
            "description": "Unique idempotency key generated by the client. Must be a non-empty string of at most 255 characters.",
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiPaymentCreateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payment"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "payments:write"
            ]
          }
        ],
        "summary": "Create and initiate a payment",
        "tags": [
          "Payment"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/payments/check-preview": {
      "post": {
        "operationId": "post_payment_check_preview_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiCheckPreviewParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiCheckPreviewResourceJsonMode"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "payments:read"
            ]
          }
        ],
        "summary": "Preview how an address and memo are truncated when printed on a check",
        "tags": [
          "Payment"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/payments/{payment_id}": {
      "delete": {
        "operationId": "delete_payment_detail_resource",
        "responses": {
          "204": {
            "description": "Payment canceled"
          }
        },
        "security": [
          {
            "oauth2": [
              "payments:write"
            ]
          }
        ],
        "summary": "Cancel a payment",
        "tags": [
          "Payment"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_payment_detail_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payment"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "payments:read"
            ]
          }
        ],
        "summary": "Fetch a payment",
        "tags": [
          "Payment"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "description": "Unique identifier of the payment.",
          "in": "path",
          "name": "payment_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_payment_detail_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiPaymentUpdateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payment"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "payments:write"
            ]
          }
        ],
        "summary": "Update a payment",
        "tags": [
          "Payment"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/payments/{payment_id}/remittance-receipt": {
      "get": {
        "operationId": "get_payment_remittance_receipt_resource",
        "responses": {
          "200": {
            "content": {
              "application/pdf": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseFile"
                }
              }
            },
            "description": "Payment remittance receipt PDF"
          }
        },
        "security": [
          {
            "oauth2": [
              "payments:read"
            ]
          }
        ],
        "summary": "Fetch a payment remittance receipt",
        "tags": [
          "Payment"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "description": "Unique identifier of the payment.",
          "in": "path",
          "name": "payment_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/payments/{payment_id}/retry": {
      "parameters": [
        {
          "description": "Unique identifier of the payment.",
          "in": "path",
          "name": "payment_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_payment_retry_resource",
        "parameters": [
          {
            "description": "Unique idempotency key generated by the client. Must be a non-empty string of at most 255 characters.",
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiPaymentRetryParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payment"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "payments:write"
            ]
          }
        ],
        "summary": "Retry a failed payment",
        "tags": [
          "Payment"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/purchase-orders": {
      "get": {
        "operationId": "get_purchase_orders_resource",
        "parameters": [
          {
            "description": "Creation source of the purchase order.",
            "in": "query",
            "name": "creation_source",
            "required": false,
            "schema": {
              "enum": [
                "ACCOUNTING_PROVIDER",
                "DEVELOPER_API",
                "EXTERNAL_IMPORT",
                "RAMP"
              ],
              "type": "string"
            }
          },
          {
            "description": "Filter for purchase orders that were requested after the given date.",
            "in": "query",
            "name": "from_created_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter for purchase orders that were requested before the given date.",
            "in": "query",
            "name": "to_created_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter purchase orders by exact external ID.",
            "in": "query",
            "name": "external_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter purchase orders by exact remote ID from the connected accounting provider.",
            "in": "query",
            "name": "remote_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Receipt status of the purchase order.",
            "in": "query",
            "name": "receipt_status",
            "required": false,
            "schema": {
              "enum": [
                "FULLY_RECEIVED",
                "NOT_RECEIVED",
                "OVER_RECEIVED",
                "PARTIALLY_RECEIVED"
              ],
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          },
          {
            "description": "Unique identifier for the associated business entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Unique identifier for the spend request associated with the purchase order.",
            "in": "query",
            "name": "spend_request_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Whether three-way match is enabled for the purchase order.",
            "in": "query",
            "name": "three_way_match_enabled",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "Whether to include archived purchase orders. By default, include_archived is false.",
            "in": "query",
            "name": "include_archived",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiPurchaseOrderResourceSchema"
                }
              }
            },
            "description": "Get all purchase orders"
          }
        },
        "security": [
          {
            "oauth2": [
              "purchase_orders:read"
            ]
          }
        ],
        "summary": "List purchase orders",
        "tags": [
          "Purchase Order"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true,
        "x-uses-read-replica": true
      },
      "post": {
        "operationId": "post_purchase_orders_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiPurchaseOrderCreateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiPurchaseOrderResource"
                }
              }
            },
            "description": "Create a purchase order"
          }
        },
        "security": [
          {
            "oauth2": [
              "purchase_orders:write"
            ]
          }
        ],
        "summary": "Create a purchase order",
        "tags": [
          "Purchase Order"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/purchase-orders/{purchase_order_id}": {
      "get": {
        "operationId": "get_purchase_order_single_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiPurchaseOrderDetailResource"
                }
              }
            },
            "description": "Get single purchase order"
          }
        },
        "security": [
          {
            "oauth2": [
              "purchase_orders:read"
            ]
          }
        ],
        "summary": "Fetch a purchase order",
        "tags": [
          "Purchase Order"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "purchase_order_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "description": "Purchase order must be approved.",
        "operationId": "patch_purchase_order_single_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiPurchaseOrderUpdateParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiPurchaseOrderDetailResource"
                }
              }
            },
            "description": "Update a purchase order"
          }
        },
        "security": [
          {
            "oauth2": [
              "purchase_orders:write"
            ]
          }
        ],
        "summary": "Update a purchase order",
        "tags": [
          "Purchase Order"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/purchase-orders/{purchase_order_id}/archive": {
      "parameters": [
        {
          "in": "path",
          "name": "purchase_order_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_purchase_order_archive_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiPurchaseOrderArchiveRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmptyObject"
                }
              }
            },
            "description": "Archived purchase order"
          }
        },
        "security": [
          {
            "oauth2": [
              "purchase_orders:write"
            ]
          }
        ],
        "summary": "Archive a purchase order",
        "tags": [
          "Purchase Order"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/purchase-orders/{purchase_order_id}/line-items": {
      "parameters": [
        {
          "in": "path",
          "name": "purchase_order_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_purchase_order_line_items_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiAddPurchaseOrderLineItemParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiPurchaseOrderDetailResource"
                }
              }
            },
            "description": "Add line items to a purchase order"
          }
        },
        "security": [
          {
            "oauth2": [
              "purchase_orders:write"
            ]
          }
        ],
        "summary": "Add line items to an existing purchase order",
        "tags": [
          "Purchase Order"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/purchase-orders/{purchase_order_id}/line-items/{line_item_id}": {
      "delete": {
        "description": "Purchase order must be approved.",
        "operationId": "delete_purchase_order_line_item_single_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiPurchaseOrderDetailResource"
                }
              }
            },
            "description": "Delete a line item from a purchase order"
          }
        },
        "security": [
          {
            "oauth2": [
              "purchase_orders:write"
            ]
          }
        ],
        "summary": "Delete a single line item from an existing purchase order",
        "tags": [
          "Purchase Order"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "line_item_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        },
        {
          "in": "path",
          "name": "purchase_order_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "description": "Purchase order must be approved.",
        "operationId": "patch_purchase_order_line_item_single_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiUpdatePurchaseOrderLineItemParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiPurchaseOrderDetailResource"
                }
              }
            },
            "description": "Update a line item on a purchase order"
          }
        },
        "security": [
          {
            "oauth2": [
              "purchase_orders:write"
            ]
          }
        ],
        "summary": "Update a single line item on an existing purchase order",
        "tags": [
          "Purchase Order"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/receipt-integrations/opt-out": {
      "get": {
        "operationId": "get_receipt_integration_opted_out_emails_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiReceiptIntegrationOptedOutEmailResourceRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiReceiptIntegrationOptedOutEmailResource"
                }
              }
            },
            "description": "MailboxOptedOutEmail"
          }
        },
        "security": [
          {
            "oauth2": [
              "receipt_integrations:read"
            ]
          }
        ],
        "summary": "List emails opted out of receipt integrations",
        "tags": [
          "Receipt Integrations"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "operationId": "post_receipt_integration_opted_out_emails_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiReceiptIntegrationOptedOutEmailCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiReceiptIntegrationOptedOutEmailResource"
                }
              }
            },
            "description": "MailboxOptedOutEmail"
          }
        },
        "security": [
          {
            "oauth2": [
              "receipt_integrations:write"
            ]
          }
        ],
        "summary": "Add a new email to receipt integrations opt-out list",
        "tags": [
          "Receipt Integrations"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/receipt-integrations/opt-out/{mailbox_opted_out_email_uuid}": {
      "delete": {
        "description": "Successful request will opt-in email to receipt integrations.",
        "operationId": "delete_receipt_integration_opted_out_emails_delete_resource",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "receipt_integrations:write"
            ]
          }
        ],
        "summary": "Remove an email from receipt integration opt-out list",
        "tags": [
          "Receipt Integrations"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": false,
        "x-ramp-plus-required": false
      },
      "parameters": [
        {
          "in": "path",
          "name": "mailbox_opted_out_email_uuid",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/receipts": {
      "get": {
        "operationId": "get_receipt_list",
        "parameters": [
          {
            "description": "Filter receipts created after this date (ISO8601 format).",
            "in": "query",
            "name": "created_after",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter receipts created before this date (ISO8601 format).",
            "in": "query",
            "name": "created_before",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter receipts for a specific reimbursement.",
            "in": "query",
            "name": "reimbursement_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "reimbursements",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter receipts for a specific transaction.",
            "in": "query",
            "name": "transaction_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "transactions",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter receipts for transactions with a `user_transaction_time` after this date (ISO8601 format).",
            "in": "query",
            "name": "from_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter receipts for transactions with a `user_transaction_time` before this date (ISO8601 format).",
            "in": "query",
            "name": "to_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Include structured data extracted from receipt OCR, including currency code and line items.",
            "in": "query",
            "name": "include_ocr_data",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiReceiptResourceSchema"
                }
              }
            },
            "description": "Receipts"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises ReceiptInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "receipts:read"
            ]
          }
        ],
        "summary": "List receipts",
        "tags": [
          "Receipt"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "image and optionally associate it with a transaction.\n\nIf a `transaction_id` is provided, the receipt will be linked directly to that transaction. If not, Ramp will attempt to automatically match the receipt to the most relevant transaction based on context.\n\nThis endpoint accepts the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) format.\n\nInclude the receipt image as a part with `Content-Disposition: attachment`. Include metadata as parts with `Content-Disposition: form-data`.",
        "operationId": "post_receipt_upload",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ApiReceiptUploadRequestRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LightReceipt"
                }
              }
            },
            "description": "Uploaded receipt"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises ReceiptInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "receipts:write"
            ]
          }
        ],
        "summary": "Upload a receipt",
        "tags": [
          "Receipt"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/receipts/{receipt_id}": {
      "get": {
        "operationId": "get_receipt_single_resource",
        "parameters": [
          {
            "description": "Include structured data extracted from receipt OCR, including currency code and line items.",
            "in": "query",
            "name": "include_ocr_data",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Receipt"
                }
              }
            },
            "description": "Receipt"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Not Found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "receipts:read"
            ]
          }
        ],
        "summary": "Fetch a receipt",
        "tags": [
          "Receipt"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "receipt_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/reimbursements": {
      "get": {
        "operationId": "get_reimbursement_list_with_pagination",
        "parameters": [
          {
            "description": "Filter by direction (BUSINESS_TO_USER default, USER_TO_BUSINESS for repayments).",
            "in": "query",
            "name": "direction",
            "required": false,
            "schema": {
              "default": "BUSINESS_TO_USER",
              "enum": [
                "BUSINESS_TO_USER",
                "USER_TO_BUSINESS"
              ],
              "type": "string"
            }
          },
          {
            "description": "Filter by reimbursement state.",
            "in": "query",
            "name": "state",
            "required": false,
            "schema": {
              "enum": [
                "APPROVED",
                "AWAITING_EXPORT",
                "AWAITING_PAYMENT",
                "AWAITING_PUSH_PAYMENT",
                "CANCELED",
                "DELETED",
                "DRAFT",
                "EXPORTED",
                "EXPORT_FAILED",
                "EXPORT_INITIATED",
                "EXPORT_MARKED_AS_FAILED",
                "EXPORT_SUCCESSFUL",
                "FAILED_REIMBURSEMENT",
                "INIT",
                "MANUALLY_REIMBURSED",
                "MISSING_ACH",
                "PAYROLL_FAILED",
                "PAYROLL_SUBMITTED",
                "PENDING",
                "PROCESSING",
                "PUSH_PAYMENT_FAILED",
                "PUSH_PAYMENT_INITIATED",
                "REIMBURSED",
                "REIMBURSED_VIA_PAYROLL",
                "REIMBURSED_VIA_PUSH",
                "REJECTED"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "APPROVED": "Approved",
                "AWAITING_EXPORT": "Ready to export",
                "AWAITING_PAYMENT": "Awaiting Payment",
                "AWAITING_PUSH_PAYMENT": "Ready to pay",
                "CANCELED": "Canceled",
                "DELETED": "Deleted",
                "DRAFT": "Draft",
                "EXPORTED": "Exported for payment",
                "EXPORT_FAILED": "Payment failed",
                "EXPORT_INITIATED": "Payment initiated",
                "EXPORT_MARKED_AS_FAILED": "Marked as failed",
                "EXPORT_SUCCESSFUL": "Payment successful",
                "FAILED_REIMBURSEMENT": "Payment Error",
                "INIT": "Init",
                "MANUALLY_REIMBURSED": "Paid outside of Ramp",
                "MISSING_ACH": "Missing ACH",
                "PAYROLL_FAILED": "Payroll payment failed",
                "PAYROLL_SUBMITTED": "Sent to payroll",
                "PENDING": "Pending Review",
                "PROCESSING": "Payment Processing",
                "PUSH_PAYMENT_FAILED": "Payment failed",
                "PUSH_PAYMENT_INITIATED": "Scheduled",
                "REIMBURSED": "Paid",
                "REIMBURSED_VIA_PAYROLL": "Paid via payroll",
                "REIMBURSED_VIA_PUSH": "Paid",
                "REJECTED": "Rejected"
              }
            }
          },
          {
            "description": "Filter by sync status. Supersedes has_no_sync_commits and sync_ready.",
            "in": "query",
            "name": "sync_status",
            "required": false,
            "schema": {
              "enum": [
                "NOT_SYNC_READY",
                "SYNCED",
                "SYNC_READY"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "NOT_SYNC_READY": "The object is missing required accounting setup and is not ready to sync.",
                "SYNCED": "The object has already been synced to the accounting provider.",
                "SYNC_READY": "The object is ready to sync to the accounting provider."
              }
            }
          },
          {
            "description": "Filter by underlying transaction date (after this date).",
            "in": "query",
            "name": "from_transaction_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter by underlying transaction date (before this date).",
            "in": "query",
            "name": "to_transaction_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter for reimbursements awaiting approval by a specific user.",
            "in": "query",
            "name": "awaiting_approval_by_user_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter for reimbursements that are approved or not approved.  If not specified, returns all reimbursements.",
            "in": "query",
            "name": "has_been_approved",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter reimbursements associated with a specific trip.",
            "in": "query",
            "name": "trip_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "trips",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter reimbursements by accounting field selection. This ID uniquely identifies an accounting field selection on Ramp.",
            "in": "query",
            "name": "accounting_field_selection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "custom_field_options",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter reimbursements by business entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter reimbursements created after this date.",
            "in": "query",
            "name": "from_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter reimbursements created before this date.",
            "in": "query",
            "name": "to_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter reimbursements submitted after this date.",
            "in": "query",
            "name": "from_submitted_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter reimbursements submitted before this date.",
            "in": "query",
            "name": "to_submitted_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter reimbursements synced after this date.",
            "in": "query",
            "name": "synced_after",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter reimbursements that are ready to sync to ERP systems.",
            "in": "query",
            "name": "sync_ready",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter reimbursements that haven't been synced to ERP systems.",
            "in": "query",
            "name": "has_no_sync_commits",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter reimbursements updated after this date.",
            "in": "query",
            "name": "updated_after",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "user_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiReimbursementResourceSchema"
                }
              }
            },
            "description": "Reimbursements"
          }
        },
        "security": [
          {
            "oauth2": [
              "reimbursements:read"
            ]
          }
        ],
        "summary": "List reimbursements",
        "tags": [
          "Reimbursement"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/reimbursements/mileage": {
      "post": {
        "operationId": "post_mileage_reimbursement_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiMileageReimbursementCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Reimbursement"
                }
              }
            },
            "description": "Reimbursement"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Unauthorized",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reimbursements:write"
            ]
          }
        ],
        "summary": "Create a mileage reimbursement",
        "tags": [
          "Reimbursement"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/reimbursements/submit-receipt": {
      "post": {
        "description": "If a `reimbursement_id` is provided, the receipt will be linked directly to that reimbursement. If not, Ramp will attempt to automatically create a draft reimbursement via OCR.\n\nThis endpoint accepts the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) format.\n\nInclude the receipt image as a part with `Content-Disposition: attachment`. Include metadata as parts with `Content-Disposition: form-data`.",
        "operationId": "post_reimbursement_receipt_upload",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ApiReimbursementUploadReceiptRequestRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Reimbursement"
                }
              }
            },
            "description": "Reimbursement draft created from receipt"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Bad request",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Unauthorized",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "User not found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "reimbursements:write"
            ]
          }
        ],
        "summary": "Upload a receipt for a reimbursement",
        "tags": [
          "Reimbursement"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/reimbursements/{reimbursement_id}": {
      "get": {
        "operationId": "get_reimbursement_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Reimbursement"
                }
              }
            },
            "description": "Reimbursement"
          }
        },
        "security": [
          {
            "oauth2": [
              "reimbursements:read"
            ]
          }
        ],
        "summary": "Fetch a reimbursement",
        "tags": [
          "Reimbursement"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "reimbursement_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/repayments": {
      "get": {
        "description": "This endpoint supports filtering. Results are sorted by creation date in descending order.",
        "operationId": "get_repayment_list_with_pagination",
        "parameters": [
          {
            "description": "Filter for repayments by business entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter for repayments by funding method. Multiple values can be provided as a comma-separated list (e.g., 'ach,debit_card').",
            "explode": false,
            "in": "query",
            "name": "funding_methods",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "ach",
                  "debit_card",
                  "export_for_payment",
                  "payroll",
                  "prefunded",
                  "push",
                  "repay_off_ramp"
                ],
                "type": "string"
              },
              "nullable": false,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter for repayments by the UUID of their original transaction.",
            "in": "query",
            "name": "original_transaction_id",
            "required": false,
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "transactions",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter for repayments that were repaid after and including the given date. Note: Using this filter will only return repayments that have been completed.",
            "in": "query",
            "name": "from_repaid_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter for repayments that were repaid before the given date. Note: Using this filter will only return repayments that have been completed.",
            "in": "query",
            "name": "to_repaid_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter repayments by the status of their latest repayment accounting sync. Repayments with no repayment sync are excluded when this filter is provided.",
            "in": "query",
            "name": "sync_status",
            "required": false,
            "schema": {
              "enum": [
                "IN_PROGRESS",
                "MARKED_CANCELED",
                "NOT_STARTED",
                "SYNC_FAILURE",
                "SYNC_SUCCESS"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "IN_PROGRESS": "The accounting sync is in progress.",
                "MARKED_CANCELED": "The accounting sync was marked as canceled.",
                "NOT_STARTED": "The accounting sync has not started.",
                "SYNC_FAILURE": "The accounting sync failed.",
                "SYNC_SUCCESS": "The accounting sync completed successfully."
              }
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          },
          {
            "description": "UUID of the user to filter repayments by",
            "in": "query",
            "name": "user_id",
            "required": false,
            "schema": {
              "example": "123e4567-e89b-12d3-a456-426614174000",
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiRepaymentResourceSchema"
                }
              }
            },
            "description": "Repayments"
          }
        },
        "security": [
          {
            "oauth2": [
              "repayments:read"
            ]
          }
        ],
        "summary": "List repayments",
        "tags": [
          "Repayment"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/roles": {
      "get": {
        "operationId": "get_roles_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiRolesList"
                }
              }
            },
            "description": "List custom roles and their product capabilities."
          }
        },
        "security": [
          {
            "oauth2": [
              "users:read"
            ]
          }
        ],
        "summary": "List custom roles",
        "tags": [
          "Role",
          "users"
        ],
        "x-alias": "roles",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": true,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/spend-programs": {
      "get": {
        "operationId": "get_spend_program_resource",
        "parameters": [
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiSpendProgramResourceSchema"
                }
              }
            },
            "description": "SpendPrograms"
          }
        },
        "security": [
          {
            "oauth2": [
              "spend_programs:read"
            ]
          }
        ],
        "summary": "List spend programs",
        "tags": [
          "Spend Program"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "operationId": "post_spend_program_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiSpendProgramCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSpendProgramResource"
                }
              }
            },
            "description": "Create Spend Program"
          }
        },
        "security": [
          {
            "oauth2": [
              "spend_programs:write"
            ]
          }
        ],
        "summary": "Create a spend program",
        "tags": [
          "Spend Program"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/spend-programs/{spend_program_id}": {
      "get": {
        "operationId": "get_spend_program_single_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSpendProgramDetailResource"
                }
              }
            },
            "description": "Get a spend program"
          }
        },
        "security": [
          {
            "oauth2": [
              "spend_programs:read"
            ]
          }
        ],
        "summary": "Fetch a spend program",
        "tags": [
          "Spend Program"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "spend_program_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/spend-programs/{spend_program_id}/workflow-nodes": {
      "get": {
        "operationId": "get_spend_program_workflow_nodes_resource",
        "parameters": [
          {
            "description": "External approval integration key configured on the spend program's External Approval Request nodes. Returned nodes match this value.",
            "in": "query",
            "name": "service_key",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSpendProgramWorkflowNodes"
                }
              }
            },
            "description": "List external approval workflow nodes for a spend program"
          }
        },
        "security": [
          {
            "oauth2": [
              "spend_programs:read"
            ]
          }
        ],
        "summary": "List External Approval Request nodes for a spend program",
        "tags": [
          "Spend Program"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "spend_program_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/spend-requests/draft-via-ocr": {
      "post": {
        "description": "Requests should be made with `multipart/form-data` content type.",
        "operationId": "post_spend_request_draft_via_ocr",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ApiSpendRequestViaOCRUploadRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSpendRequestViaOCRResponse"
                }
              }
            },
            "description": "Create a draft spend request via OCR"
          }
        },
        "security": [
          {
            "oauth2": [
              "spend_requests:write"
            ]
          }
        ],
        "summary": "Create a draft spend request via OCR",
        "tags": [
          "Spend Request"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/statements": {
      "get": {
        "operationId": "get_statement_list_with_pagination",
        "parameters": [
          {
            "description": "Filter statements with end_date on or after this date (ISO8601 format).",
            "in": "query",
            "name": "from_date",
            "required": false,
            "schema": {
              "default": "1970-01-01T00:00:00+00:00",
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter statements with end_date on or before this date (ISO8601 format). Defaults to current time.",
            "in": "query",
            "name": "to_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiStatementResourceSchema"
                }
              }
            },
            "description": "Statement"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "statements:read"
            ]
          }
        ],
        "summary": "List statements",
        "tags": [
          "Statement",
          "statements"
        ],
        "x-alias": "list",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp",
          "third_party"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": true,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/statements/{statement_id}": {
      "get": {
        "operationId": "get_statement_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Statement"
                }
              }
            },
            "description": "Statement"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "statements:read"
            ]
          }
        ],
        "summary": "Fetch a statement",
        "tags": [
          "Statement",
          "statements"
        ],
        "x-alias": "get",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp",
          "third_party"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": true,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "statement_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/transactions": {
      "get": {
        "description": "This endpoint supports filtering and ordering. If state is not set, all transactions except declined transactions will be returned. Note that setting multiple ordering parameters is unsupported.",
        "operationId": "get_transactions_canonical_list_with_pagination",
        "parameters": [
          {
            "description": "Filter by a Ramp category code.",
            "in": "query",
            "name": "sk_category_id",
            "required": false,
            "schema": {
              "enum": [
                1,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                2,
                20,
                21,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                3,
                30,
                31,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39,
                4,
                40,
                41,
                42,
                43,
                44,
                5,
                6,
                7,
                8,
                9
              ],
              "type": "integer",
              "x-enum-descriptions": {
                "1": "Pet",
                "2": "Other",
                "3": "Office",
                "4": "Airlines",
                "5": "Car rental",
                "6": "Lodging",
                "7": "Travel miscellaneous",
                "8": "Taxi and rideshare",
                "9": "Freight, moving and delivery services",
                "10": "Shipping",
                "11": "Utilities",
                "12": "Office supplies and cleaning",
                "13": "General merchandise",
                "14": "Electronics",
                "15": "Clothing",
                "16": "Books and newspapers",
                "17": "Supermarkets and grocery stores",
                "18": "Fuel and gas",
                "19": "Restaurants",
                "20": "Alcohol and bars",
                "21": "Medical",
                "23": "Fees and financial institutions",
                "24": "Entertainment",
                "25": "Professional services",
                "26": "Taxes and tax preparation",
                "27": "Advertising",
                "28": "Parking",
                "29": "Car services",
                "30": "Gambling",
                "31": "Clubs and memberships",
                "32": "Legal",
                "33": "Education",
                "34": "Charitable donations",
                "35": "Political organizations",
                "36": "Religious organizations",
                "37": "Fines",
                "38": "Government services",
                "39": "Intra-company purchases",
                "40": "SaaS / Software",
                "41": "Cloud computing",
                "42": "Streaming services",
                "43": "Internet and phone",
                "44": "Insurance"
              }
            }
          },
          {
            "description": "Filter by department.",
            "in": "query",
            "name": "department_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "departments",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter by limit.",
            "in": "query",
            "name": "limit_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "limits",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter by location.",
            "in": "query",
            "name": "location_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "locations",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter by merchant.",
            "in": "query",
            "name": "merchant_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "merchants",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter by physical card.",
            "in": "query",
            "name": "card_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "cards",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter by spend program.",
            "in": "query",
            "name": "spend_program_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "spend_programs",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter by statement.",
            "in": "query",
            "name": "statement_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "statements",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter by transaction approval status.",
            "in": "query",
            "name": "approval_status",
            "required": false,
            "schema": {
              "enum": [
                "AWAITING_EMPLOYEE",
                "AWAITING_EMPLOYEE_CHANGES_REQUESTED",
                "AWAITING_EMPLOYEE_MISSING_ITEMS",
                "AWAITING_EMPLOYEE_REPAYMENT_FAILED",
                "AWAITING_EMPLOYEE_REPAYMENT_REQUESTED",
                "AWAITING_REVIEWER",
                "FULLY_APPROVED"
              ],
              "type": "string"
            }
          },
          {
            "description": "Filter by transaction state. If set to 'ALL', all transactions including 'DECLINED' will be listed.",
            "in": "query",
            "name": "state",
            "required": false,
            "schema": {
              "enum": [
                "ALL",
                "CLEARED",
                "COMPLETION",
                "DECLINED",
                "ERROR",
                "PENDING",
                "PENDING_INITIATION"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "ALL": "Special filter value to include all transaction states",
                "CLEARED": "Transaction has been cleared and settled",
                "COMPLETION": "Transaction has completed processing",
                "DECLINED": "Transaction was declined",
                "ERROR": "Transaction encountered an error during processing",
                "PENDING": "Transaction is pending and has not yet cleared",
                "PENDING_INITIATION": "Transaction has not yet been initiated"
              }
            }
          },
          {
            "description": "Filter by user.",
            "in": "query",
            "name": "user_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter for transactions awaiting approval by a specific user.",
            "in": "query",
            "name": "awaiting_approval_by_user_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter for transactions by sync status. If set, it supersedes sync_ready and has_no_sync_commits",
            "in": "query",
            "name": "sync_status",
            "required": false,
            "schema": {
              "enum": [
                "NOT_SYNC_READY",
                "SYNCED",
                "SYNC_READY"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "NOT_SYNC_READY": "The object is missing required accounting setup and is not ready to sync.",
                "SYNCED": "The object has already been synced to the accounting provider.",
                "SYNC_READY": "The object is ready to sync to the accounting provider."
              }
            }
          },
          {
            "description": "Filter for transactions that are approved or not approved. If not specified, returns all transactions.",
            "in": "query",
            "name": "has_been_approved",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter for transactions that are fully approved and all cardholder requirements met such as receipts, memos, tracking categories. If not specified, returns all transactions.",
            "in": "query",
            "name": "all_requirements_met_and_approved",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter for transactions that have a statement or do not have a statement. If not specified, returns all transactions.",
            "in": "query",
            "name": "has_statement",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter for transactions that have been synced after the given date, in ISO8601 format.",
            "in": "query",
            "name": "synced_after",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter for transactions that have larger amount that the given amount. This is a U.S. Dollar denominated amount.",
            "in": "query",
            "name": "min_amount",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "format": "decimal",
                  "type": "string"
                },
                {
                  "type": "number"
                }
              ]
            }
          },
          {
            "description": "Filter for transactions that have not been synced to ERP systems yet.",
            "in": "query",
            "name": "has_no_sync_commits",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter for transactions that have smaller amount that the given amount. This is a U.S. Dollar denominated amount.",
            "in": "query",
            "name": "max_amount",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "format": "decimal",
                  "type": "string"
                },
                {
                  "type": "number"
                }
              ]
            }
          },
          {
            "description": "Filter for transactions with a `user_transaction_time` after the given date, in ISO8601 format.",
            "in": "query",
            "name": "from_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter for transactions with a `user_transaction_time` before the given date, in ISO8601 format.",
            "in": "query",
            "name": "to_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter for trip ID.",
            "in": "query",
            "name": "trip_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "trips",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter transactions by accounting field selection. This ID uniquely identifies an accounting field selection on Ramp.",
            "in": "query",
            "name": "accounting_field_selection_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "custom_field_options",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter transactions by business entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filters for transactions which require a memo, but do not have one. This can only be set to true.",
            "in": "query",
            "name": "requires_memo",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "If true, the response's page includes total_count, capped at 10,000, and total_count_capped. Counting adds latency, so only set it when you need the total.",
            "in": "query",
            "name": "include_count",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "Include all purchase data provided by the merchant.",
            "in": "query",
            "name": "include_merchant_data",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Sort transactions by `user_transaction_date` in ascending order, in ISO8601 format.",
            "in": "query",
            "name": "order_by_date_asc",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Sort transactions by `user_transaction_date` in descending order, in ISO8601 format.",
            "in": "query",
            "name": "order_by_date_desc",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Sort transactions by amount in ascending order.",
            "in": "query",
            "name": "order_by_amount_asc",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Sort transactions by amount in descending order.",
            "in": "query",
            "name": "order_by_amount_desc",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountedPaginatedResponseApiTransactionCanonicalSchema"
                }
              }
            },
            "description": "Transactions"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises TransactionInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "transactions:read"
            ]
          }
        ],
        "summary": "List transactions",
        "tags": [
          "Transaction"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/transactions/{transaction_id}": {
      "get": {
        "operationId": "get_transaction_canonical_resource",
        "parameters": [
          {
            "description": "Include all purchase data provided by the merchant",
            "in": "query",
            "name": "include_merchant_data",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleTransaction"
                }
              }
            },
            "description": "Transaction"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises TransactionInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "transactions:read"
            ]
          }
        ],
        "summary": "Fetch a transaction",
        "tags": [
          "Transaction"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "transaction_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "description": "Send line_items with amounts (in minor units) to create or replace the\ntransaction's split; the line item amounts must sum to the transaction\namount. Each line item can carry its own memo and accounting field\nselections. Send an empty line_items array to unsplit (remove all line\nitems). Returns the updated transaction.",
        "operationId": "patch_transaction_canonical_update_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiTransactionsUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SingleTransaction"
                }
              }
            },
            "description": "Transaction"
          }
        },
        "security": [
          {
            "oauth2": [
              "transactions:write"
            ]
          }
        ],
        "summary": "Split a transaction into line items, or update an existing split",
        "tags": [
          "Transaction",
          "transactions"
        ],
        "x-alias": "split",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-destructive": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp",
          "third_party"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": false
      }
    },
    "/developer/v1/transfers": {
      "get": {
        "description": "For information on how to use this endpoint, refer to the [Transfers Guide](/developer-api/v1/guides/transfers).",
        "operationId": "get_transfer_list_with_pagination",
        "parameters": [
          {
            "description": "Filter by sync status. Supersedes has_no_sync_commits if both are provided.",
            "in": "query",
            "name": "sync_status",
            "required": false,
            "schema": {
              "enum": [
                "NOT_SYNC_READY",
                "SYNCED",
                "SYNC_READY"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "NOT_SYNC_READY": "The object is missing required accounting setup and is not ready to sync.",
                "SYNCED": "The object has already been synced to the accounting provider.",
                "SYNC_READY": "The object is ready to sync to the accounting provider."
              }
            }
          },
          {
            "description": "Filter by transfer status. See [Transfers Guide](/developer-api/v1/guides/transfers) for definitions.",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "ACH_CONFIRMED",
                "CANCELED",
                "COMPLETED",
                "ERROR",
                "INITIATED",
                "NOT_ACKED",
                "NOT_ENOUGH_FUNDS",
                "PROCESSING_BY_ODFI",
                "REJECTED_BY_ODFI",
                "RETURNED_BY_RDFI",
                "SUBMITTED_TO_FED",
                "SUBMITTED_TO_RDFI",
                "UNNECESSARY",
                "UPLOADED"
              ],
              "type": "string",
              "x-enum-descriptions": {
                "CANCELED": "The transfer has been canceled and will not be processed. This state is terminal and indicates the transfer was intentionally stopped, either by the customer or due to an operational decision.",
                "COMPLETED": "The transfer has successfully settled and reached its final state. Funds have moved as intended, and no further actions are required. Any subsequent issues would require a new transfer or reversal process.",
                "ERROR": "The transfer encountered a terminal error and could not be completed. This can happen due to issues like invalid account information or system errors. The transfer will need to be retried with corrected details.",
                "INITIATED": "A record of the transfer has been created in Ramp's system. The process of moving funds has started, but no external actions have been taken yet.",
                "NOT_ACKED": "Ramp did not receive an acknowledgment from the bank after submitting the transfer. The transfer may need to be retried or investigated for connectivity issues with the bank.",
                "NOT_ENOUGH_FUNDS": "The transfer could not proceed due to insufficient funds in the originating account. Additional funds need to be added to the account before re-attempting the transfer.",
                "PROCESSING_BY_ODFI": "The transfer file has been submitted to the Originating Bank (ODFI), and the cutoff time for same-day processing has passed. The ODFI has accepted the file and will proceed with sending it to the Fed.",
                "REJECTED_BY_ODFI": "The transfer was rejected by the ODFI before it was sent to the Federal Reserve. The rejection usually occurs due to formatting errors or invalid account information in the transfer file.",
                "RETURNED_BY_RDFI": "The transfer failed at the Receiving Bank (RDFI) due to an issue provided by the receiving bank. Common reasons include closed accounts or incorrect account numbers. This requires corrective action to resolve.",
                "SUBMITTED_TO_FED": "The transfer file has been sent to the Federal Reserve and is awaiting routing to the RDFI. The transfer is now in the Fed's hands and will soon be sent to the receiving bank.",
                "SUBMITTED_TO_RDFI": "The transfer has been delivered to the Receiving Bank (RDFI), and we are awaiting the final transfer of funds. This is the final step before the funds are made available to the receiving party.",
                "UNNECESSARY": "The transfer is for $0 and does not require processing through the ACH system. This is a terminal state, indicating no further actions are required."
              }
            }
          },
          {
            "description": "Filter transfers by business entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter transfers included in the specified statement.",
            "in": "query",
            "name": "statement_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "statements",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter transfers that have not been synced.",
            "in": "query",
            "name": "has_no_sync_commits",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter transfers that occurred after this date (ISO8601 format).",
            "in": "query",
            "name": "from_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter transfers that occurred before this date (ISO8601 format).",
            "in": "query",
            "name": "to_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiTransferResourceSchema"
                }
              }
            },
            "description": "Transfers"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "transfers:read"
            ]
          }
        ],
        "summary": "List transfer payments",
        "tags": [
          "Transfer Payment"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/transfers/{transfer_id}": {
      "get": {
        "description": "For information on how to use this endpoint, refer to the [Transfers Guide](/developer-api/v1/guides/transfers).",
        "operationId": "get_transfer_resource",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Transfer"
                }
              }
            },
            "description": "Transfer"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "transfers:read"
            ]
          }
        ],
        "summary": "Fetch a transfer payment",
        "tags": [
          "Transfer Payment"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "transfer_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/trips": {
      "get": {
        "operationId": "get_trip_list_resource",
        "parameters": [
          {
            "description": "Filter trips by specific user IDs",
            "explode": false,
            "in": "query",
            "name": "user_ids",
            "required": false,
            "schema": {
              "items": {
                "format": "uuid",
                "type": "string"
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter trips by status",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "cancelled",
                "completed",
                "ongoing",
                "upcoming"
              ],
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Show only trips starting on or after this date. If a trip starts before this date but a to_date is provided, the trip will be included if there is an overlap.",
            "in": "query",
            "name": "from_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Show only trips starting on or before this date. If a trip starts after this date but a from_date is provided, the trip will be included if there is an overlap.",
            "in": "query",
            "name": "to_date",
            "required": false,
            "schema": {
              "format": "date-time",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Show only trips with an amount greater than or equal to this value",
            "in": "query",
            "name": "min_amount",
            "required": false,
            "schema": {
              "nullable": true,
              "oneOf": [
                {
                  "format": "decimal",
                  "type": "string"
                },
                {
                  "type": "number"
                }
              ]
            }
          },
          {
            "description": "Show only trips with an amount less than or equal to this value",
            "in": "query",
            "name": "max_amount",
            "required": false,
            "schema": {
              "nullable": true,
              "oneOf": [
                {
                  "format": "decimal",
                  "type": "string"
                },
                {
                  "type": "number"
                }
              ]
            }
          },
          {
            "description": "Show only trips with this name",
            "in": "query",
            "name": "trip_name",
            "required": false,
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseTripResourceSchema"
                }
              }
            },
            "description": "Trips"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "trips:read"
            ]
          }
        ],
        "summary": "List all trips for the business",
        "tags": [
          "Trips"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/trips/{trip_id}": {
      "get": {
        "operationId": "get_trip_single_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TripResource"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "trips:read"
            ]
          }
        ],
        "summary": "Fetch a trip",
        "tags": [
          "Trips"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "trip_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/unified-requests": {
      "get": {
        "description": "NOTE:\n- Response schema is not finalized and will have breaking changes prior to release\n- This endpoint _is_ user aware, meaning perm-based filtering is applied to the query",
        "operationId": "get_unified_request_list_with_pagination",
        "parameters": [
          {
            "description": "Filter unified requests by department ID",
            "explode": false,
            "in": "query",
            "name": "department_ids",
            "required": false,
            "schema": {
              "items": {
                "format": "uuid",
                "type": "string"
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter unified requests by entity ID",
            "explode": false,
            "in": "query",
            "name": "entity_ids",
            "required": false,
            "schema": {
              "items": {
                "format": "uuid",
                "type": "string"
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter unified requests by location ID",
            "explode": false,
            "in": "query",
            "name": "location_ids",
            "required": false,
            "schema": {
              "items": {
                "format": "uuid",
                "type": "string"
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter unified requests by owner user ID",
            "explode": false,
            "in": "query",
            "name": "owner_user_ids",
            "required": false,
            "schema": {
              "items": {
                "format": "uuid",
                "type": "string"
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter unified requests by spend program ID",
            "explode": false,
            "in": "query",
            "name": "spend_program_ids",
            "required": false,
            "schema": {
              "items": {
                "format": "uuid",
                "type": "string"
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter unified requests by spend request type",
            "explode": false,
            "in": "query",
            "name": "spend_request_types",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "APPROVAL_ONLY",
                  "FUND_UNARCHIVE",
                  "PURCHASE_ORDER",
                  "SPEND_LIMIT",
                  "TRAVEL"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "FUND_UNARCHIVE": "A request to restore an existing archived fund without issuing or changing funding."
                }
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter unified requests by status",
            "explode": false,
            "in": "query",
            "name": "request_statuses",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "APPROVED",
                  "DRAFT",
                  "PENDING",
                  "REJECTED"
                ],
                "type": "string"
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter unified requests by unified spend request type",
            "explode": false,
            "in": "query",
            "name": "unified_spend_request_types",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "APPROVAL_ONLY",
                  "FUND_UNARCHIVE",
                  "PROCUREMENT_SPEND_ALLOCATION",
                  "PURCHASE_ORDER",
                  "SPEND_ALLOCATION",
                  "TRAVEL"
                ],
                "type": "string",
                "x-enum-descriptions": {
                  "FUND_UNARCHIVE": "A request to restore an existing archived fund without issuing or changing funding."
                }
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Show deleted unified requests instead of active requests. Defaults to False.",
            "in": "query",
            "name": "include_deleted",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "Show only unified requests with an amount greater than or equal to this value",
            "in": "query",
            "name": "min_amount",
            "required": false,
            "schema": {
              "nullable": true,
              "oneOf": [
                {
                  "format": "decimal",
                  "type": "string"
                },
                {
                  "type": "number"
                }
              ]
            }
          },
          {
            "description": "Show only unified requests with an amount less than or equal to this value",
            "in": "query",
            "name": "max_amount",
            "required": false,
            "schema": {
              "nullable": true,
              "oneOf": [
                {
                  "format": "decimal",
                  "type": "string"
                },
                {
                  "type": "number"
                }
              ]
            }
          },
          {
            "description": "Shows only unified requests with a created_at on or after this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "from_created_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Shows only unified requests with a created_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "to_created_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/UnifiedRequestResource"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "unified_requests:read"
            ]
          }
        ],
        "summary": "List unified requests with pagination",
        "tags": [
          "Unified Request"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "Early access: enabled per business. Requires a business-scoped token.\nPurchase-order and approval-only procurement spend programs are\nsupported; the request is created for `request_owner_id`. Pass\n`submit: false` to create a draft without submitting it; otherwise, the\nrequest is submitted into that program's approval flow by default. File-upload\nform fields are not supported: a program whose form requires one cannot\nbe submitted through this endpoint, and the field is reported in\n`additional_info.fields_to_answer`.\n\nReturns the request detail. Request-level selections appear under\n`purchase_order.accounting_tracking_category_selections`\n(`tracking_category.uuid` = `accounting_field_id`,\n`tracking_category_option.uuid` = `accounting_field_option_id`). Lines\nappear under `purchase_order.purchase_order_line_item_log_entries` with\ntheir `id`, `accounting_tracking_category_selections`, and\n`custom_field_values` (`column_id` = `custom_field_id`).",
        "operationId": "post_unified_request_create_resource",
        "parameters": [
          {
            "description": "Unique idempotency key generated by the client. Must be a non-empty string of at most 255 characters.",
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiProcurementRequestCreateInputRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnifiedRequestDetail"
                }
              }
            },
            "description": "Created procurement request"
          }
        },
        "security": [
          {
            "oauth2": [
              "unified_requests:write"
            ]
          }
        ],
        "summary": "Create a procurement request",
        "tags": [
          "Unified Request"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true,
        "x-sensitive-outputs": [
          "Personal"
        ]
      }
    },
    "/developer/v1/unified-requests/{unified_request_id}": {
      "delete": {
        "description": "Requires a business-scoped token and acts on behalf of the request owner.\nShared procurement eligibility and request-owner permissions apply;\napproved and rejected requests can be eligible for deletion.\nA draft can only be deleted when its owner is also its creator.",
        "operationId": "delete_unified_request_delete_resource",
        "responses": {
          "204": {
            "description": "Deleted request"
          }
        },
        "security": [
          {
            "oauth2": [
              "unified_requests:write"
            ]
          }
        ],
        "summary": "Delete a procurement request",
        "tags": [
          "Unified Request"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      },
      "get": {
        "description": "NOTE:\n- Response schema is not finalized and will have breaking changes prior to release\n- This endpoint _is_ user aware, meaning perm-based filtering is applied to the query",
        "operationId": "get_unified_request_detail_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnifiedRequestDetail"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "unified_requests:read"
            ]
          }
        ],
        "summary": "Get a unified request",
        "tags": [
          "Unified Request"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-sensitive-outputs": [
          "Personal"
        ],
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "description": "Unique identifier of the procurement request.",
          "in": "path",
          "name": "unified_request_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "description": "Edits a native draft or submitted request as its owner. This action never\nsubmits a draft; edits to a submitted request go through normal approval\nreconciliation.\n\nHow each part of the body is applied:\n\n- Top-level scalars (`name`, `currency`, `entity_id`, `start_date`,\n  `end_date`): omit to keep the saved value. `start_date` and `end_date`\n  accept `null` to clear.\n- `field_answers`: omit to keep all answers. When present, the list is the\n  complete set of API-editable answers: supported fields not listed are\n  cleared and `[]` clears them all. File-upload answers are never touched.\n- `accounting_field_selections` (request level): omit to keep. When present,\n  the list is the complete set: enabled fields not listed are cleared and\n  `[]` clears all.\n- `line_items`: omit to keep all lines. When present, the list is the\n  complete set of lines: a line with `id` is retained and updated, a line\n  without `id` is created, and any existing line whose `id` is not listed is\n  deleted. `[]` deletes every line (drafts only; a submitted request must\n  keep at least one line).\n- Every line must carry `unit_price` and `unit_quantity`, and `description`\n  is written on every call: an omitted or `null` description clears it.\n  Always re-send `id` and `description` for lines you want to keep.\n- A line's `accounting_field_selections` and `custom_field_values` follow\n  the collection rule: omit to keep the retained line's saved coding, send\n  the complete list to replace it (enabled fields not listed are cleared),\n  or send `[]` to clear it.\n\nReturns the request detail. Request-level selections appear under\n`purchase_order.accounting_tracking_category_selections`\n(`tracking_category.uuid` = `accounting_field_id`,\n`tracking_category_option.uuid` = `accounting_field_option_id`). Lines\nappear under `purchase_order.purchase_order_line_item_log_entries` with\ntheir `id`, `accounting_tracking_category_selections`, and\n`custom_field_values` (`column_id` = `custom_field_id`).\n\nX-Idempotency-Key is optional; reusing a key rejects the request rather\nthan replaying the original response.",
        "operationId": "patch_unified_request_patch_resource",
        "parameters": [
          {
            "description": "Unique idempotency key generated by the client. Must be a non-empty string of at most 255 characters.",
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiProcurementRequestPatchInputRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnifiedRequestDetail"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "unified_requests:write"
            ]
          }
        ],
        "summary": "Edit a procurement request",
        "tags": [
          "Unified Request"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true,
        "x-sensitive-outputs": [
          "Personal"
        ]
      }
    },
    "/developer/v1/unified-requests/{unified_request_id}/attachments": {
      "get": {
        "description": "Returns every non-deleted attachment on the request, oldest first. This\nincludes supporting documents (SPEND_REQUEST) and files appended to the\npurchase order PDF (PURCHASE_ORDER).",
        "operationId": "get_unified_request_attachments_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ApiUnifiedRequestAttachmentResource"
                  },
                  "type": "array"
                }
              }
            },
            "description": "List attachments on a procurement request"
          }
        },
        "security": [
          {
            "oauth2": [
              "unified_requests:read"
            ]
          }
        ],
        "summary": "List attachments on a procurement request",
        "tags": [
          "Unified Request"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "description": "Unique identifier of the unified request.",
          "in": "path",
          "name": "unified_request_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "This endpoint accepts the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) format.\n\nInclude the file as a part named `file` with `Content-Disposition: attachment`.\nOptionally include `attachment_type` as a form field with value `SPEND_REQUEST`\n(default; supporting document on the request, not shared with the vendor) or\n`PURCHASE_ORDER` (appended to the purchase order PDF sent to the vendor).\nThe request must also include an `X-Idempotency-Key` header.",
        "operationId": "post_unified_request_attachments_resource",
        "parameters": [
          {
            "description": "Unique idempotency key generated by the client. Must be a non-empty string of at most 255 characters.",
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ApiUnifiedRequestAttachmentUploadInputRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiUnifiedRequestAttachmentUploadResponse"
                }
              }
            },
            "description": "Uploaded attachment"
          }
        },
        "security": [
          {
            "oauth2": [
              "unified_requests:write"
            ]
          }
        ],
        "summary": "Upload an attachment to a unified request",
        "tags": [
          "Unified Request"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true
      }
    },
    "/developer/v1/unified-requests/{unified_request_id}/submit": {
      "parameters": [
        {
          "description": "Unique identifier of the procurement request.",
          "in": "path",
          "name": "unified_request_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Submits a procurement draft and returns its detail. An incomplete draft\nfails with error code `DEVELOPER_7195`; `additional_info.validation_errors`\nand `additional_info.fields_to_answer` list what is missing.",
        "operationId": "post_unified_request_submit_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnifiedRequestDetail"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "unified_requests:write"
            ]
          }
        ],
        "summary": "Submit a procurement draft request",
        "tags": [
          "Unified Request"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": true,
        "x-sensitive-outputs": [
          "Personal"
        ]
      }
    },
    "/developer/v1/users": {
      "get": {
        "operationId": "get_user_list_with_pagination",
        "parameters": [
          {
            "description": "Filter by user employee_id",
            "in": "query",
            "name": "employee_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by user role",
            "in": "query",
            "name": "role",
            "required": false,
            "schema": {
              "enum": [
                "AUDITOR",
                "BUSINESS_ADMIN",
                "BUSINESS_BOOKKEEPER",
                "BUSINESS_OWNER",
                "BUSINESS_USER",
                "GUEST_USER",
                "IT_ADMIN"
              ],
              "type": "string"
            }
          },
          {
            "description": "Filter only for users with the given status. Defaults to returning all active and inactive users, but not suspended users",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "default": null,
              "enum": [
                "USER_ACTIVE",
                "USER_DRAFT",
                "USER_INACTIVE",
                "USER_SUSPENDED"
              ],
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          },
          {
            "description": "filter by business entity",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "filter by department",
            "in": "query",
            "name": "department_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "departments",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "filter by email",
            "in": "query",
            "name": "email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "description": "filter by location",
            "in": "query",
            "name": "location_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "locations",
                "type": "many-to-one"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiUserResourceSchema"
                }
              }
            },
            "description": "Users"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises UserInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "users:read"
            ]
          }
        ],
        "summary": "List users",
        "tags": [
          "User"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/users/deferred": {
      "post": {
        "description": "Call this endpoint to trigger an async task to send out a user invite via email. Users will need to accept the invite in order to be onboarded.\n\nAssign a user to a specific entity by specifying a `location_id` on creation. Locations are mapped to entities with a many-to-one relationship.",
        "operationId": "post_user_creation_deferred_task",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiUserCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeferredTaskUUID"
                }
              }
            },
            "description": "Response with the ID of the async task. Task status can be checked via a GET call to .../deferred/status/<task_id>"
          }
        },
        "security": [
          {
            "oauth2": [
              "users:write"
            ]
          }
        ],
        "summary": "Create a user invite",
        "tags": [
          "User"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/users/deferred/status/{task_id}": {
      "get": {
        "operationId": "get_user_deferred_task_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDeferredTask"
                }
              }
            },
            "description": "User deferred task status"
          }
        },
        "security": [
          {
            "oauth2": [
              "users:write"
            ]
          }
        ],
        "summary": "Fetch deferred task status",
        "tags": [
          "User"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "task_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/users/{user_id}": {
      "get": {
        "operationId": "get_user_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            },
            "description": "User"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises UserInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "users:read"
            ]
          }
        ],
        "summary": "Fetch a user",
        "tags": [
          "User"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "user_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_user_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiUserUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Update user"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises UserInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "users:write"
            ]
          }
        ],
        "summary": "Update a user",
        "tags": [
          "User"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/users/{user_id}/deactivate": {
      "parameters": [
        {
          "in": "path",
          "name": "user_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "description": "When users are deactivated, they will no longer be able to log in, spend on cards, or receive any notifications from Ramp.",
        "operationId": "patch_user_deactivation_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmptyObject"
                }
              }
            },
            "description": "User deactivated successfully"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises UserInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "users:write"
            ]
          }
        ],
        "summary": "Deactivate a user",
        "tags": [
          "User"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/users/{user_id}/invite": {
      "parameters": [
        {
          "in": "path",
          "name": "user_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Performs one of three actions against a draft user, delegating to the\nIdentity-owned invite / scheduled-invitation services:\n\n- `SCHEDULE`: Create or update a scheduled invitation at `invitation_time`.\n- `DESCHEDULE`: Cancel any pending scheduled invitation.\n- `SEND_NOW`: Immediately publish the draft invite and send the invite email.\n\nThe user must be in DRAFT status for `SCHEDULE` and `SEND_NOW`.\n`DESCHEDULE` is a no-op if no pending scheduled invitation exists.",
        "operationId": "post_user_invite_action_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiUserInviteActionRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmptyObject"
                }
              }
            },
            "description": "Invite action completed"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Invalid invite action",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "User not found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "users:write"
            ]
          }
        ],
        "summary": "Manage a user's invite lifecycle",
        "tags": [
          "User"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/users/{user_id}/reactivate": {
      "parameters": [
        {
          "in": "path",
          "name": "user_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "description": "Upon reactivation, users can log in to Ramp again, spend on their previously issued cards and resume receiving Ramp notifications.",
        "operationId": "patch_user_reactivation_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmptyObject"
                }
              }
            },
            "description": "User reactivated successfully"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises UserInvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "users:write"
            ]
          }
        ],
        "summary": "Reactivate a user",
        "tags": [
          "User"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/vendors": {
      "get": {
        "operationId": "get_vendor_list_resource",
        "parameters": [
          {
            "description": "Filter by customer-defined external vendor ID. This is independent of accounting system remote IDs.",
            "in": "query",
            "name": "external_vendor_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by the unique identifier of a card merchant associated with the vendor.",
            "in": "query",
            "name": "merchant_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "merchants",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Show only vendors whose accounting field remote id matches the passed list. Expects a comma-separated list of strings.",
            "explode": false,
            "in": "query",
            "name": "accounting_vendor_remote_ids",
            "required": false,
            "schema": {
              "items": {
                "type": "string"
              },
              "nullable": false,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Show only vendors whose accounting field selection id matches the passed list. Expects a comma-separated list of UUIDs.",
            "explode": false,
            "in": "query",
            "name": "vendor_tracking_category_option_ids",
            "required": false,
            "schema": {
              "items": {
                "format": "uuid",
                "type": "string"
              },
              "nullable": false,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Show only vendors whose sk_category_id matches a Ramp category code in the passed list. Expects a comma-separated list of integers.",
            "explode": false,
            "in": "query",
            "name": "sk_category_ids",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  1,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  2,
                  20,
                  21,
                  23,
                  24,
                  25,
                  26,
                  27,
                  28,
                  29,
                  3,
                  30,
                  31,
                  32,
                  33,
                  34,
                  35,
                  36,
                  37,
                  38,
                  39,
                  4,
                  40,
                  41,
                  42,
                  43,
                  44,
                  5,
                  6,
                  7,
                  8,
                  9
                ],
                "type": "integer",
                "x-enum-descriptions": {
                  "1": "Pet",
                  "2": "Other",
                  "3": "Office",
                  "4": "Airlines",
                  "5": "Car rental",
                  "6": "Lodging",
                  "7": "Travel miscellaneous",
                  "8": "Taxi and rideshare",
                  "9": "Freight, moving and delivery services",
                  "10": "Shipping",
                  "11": "Utilities",
                  "12": "Office supplies and cleaning",
                  "13": "General merchandise",
                  "14": "Electronics",
                  "15": "Clothing",
                  "16": "Books and newspapers",
                  "17": "Supermarkets and grocery stores",
                  "18": "Fuel and gas",
                  "19": "Restaurants",
                  "20": "Alcohol and bars",
                  "21": "Medical",
                  "23": "Fees and financial institutions",
                  "24": "Entertainment",
                  "25": "Professional services",
                  "26": "Taxes and tax preparation",
                  "27": "Advertising",
                  "28": "Parking",
                  "29": "Car services",
                  "30": "Gambling",
                  "31": "Clubs and memberships",
                  "32": "Legal",
                  "33": "Education",
                  "34": "Charitable donations",
                  "35": "Political organizations",
                  "36": "Religious organizations",
                  "37": "Fines",
                  "38": "Government services",
                  "39": "Intra-company purchases",
                  "40": "SaaS / Software",
                  "41": "Cloud computing",
                  "42": "Streaming services",
                  "43": "Internet and phone",
                  "44": "Insurance"
                }
              },
              "nullable": true,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Show only vendors with created_at after this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "from_created_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Show only vendors with created_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "to_created_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Show only vendors with updated_at after this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "from_updated_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Show only vendors with updated_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601",
            "in": "query",
            "name": "to_updated_at",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          },
          {
            "description": "Unique identifier of the user which owns this vendor.",
            "in": "query",
            "name": "vendor_owner_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "users",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "When true, include the ERP subsidiary identifiers associated with each vendor, if available.",
            "in": "query",
            "name": "include_subsidiary",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "When true, include vendors that have not yet been fully approved and published: both plain drafts and vendors that were created via POST /developer/v1/vendors but are still waiting on creation approval. Useful for deduplicating by external_vendor_id immediately after creating a vendor. Defaults to false, which matches the historical behavior of this endpoint.",
            "in": "query",
            "name": "include_draft",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "is_active",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiVendorResourceSchema"
                }
              }
            },
            "description": "Vendors"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "List vendors",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "Vendors created in the API are approved by default, and are not subject to\nexisting approval policies.\n\nAdmin/owner tokens may set `requesting_user_id` in the body to choose the\nrequestor recorded on any payment/tax details request created for this vendor.\n`acting_user_id` is accepted but ignored for backward compatibility.",
        "operationId": "post_vendor_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vendor"
                }
              }
            },
            "description": "Vendors"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Create a new vendor",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/vendors/agreements": {
      "post": {
        "operationId": "post_vendor_agreement_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorAgreementQueryRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiVendorAgreementListResource"
                }
              }
            },
            "description": "Vendor agreements"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "List vendor agreements",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/vendors/agreements/{agreement_id}": {
      "delete": {
        "operationId": "delete_vendor_agreement_resource",
        "responses": {
          "204": {
            "description": "Delete vendor agreement"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Delete a vendor agreement",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_vendor_agreement_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVendorAgreementDetailResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "Fetch a vendor agreement",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "agreement_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_vendor_agreement_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorAgreementUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVendorAgreementDetailResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Update a vendor agreement",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/vendors/agreements/{agreement_id}/documents": {
      "parameters": [
        {
          "in": "path",
          "name": "agreement_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "This endpoint accepts the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) format.\n\nInclude each agreement file as a repeated `documents` part. The request\nmust also include an `X-Idempotency-Key` header.",
        "operationId": "post_vendor_agreement_document_upload_resource",
        "parameters": [
          {
            "description": "Unique idempotency key generated by the client. Must be a non-empty string of at most 255 characters.",
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": true,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorAgreementDocumentUploadInputRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVendorAgreementDocumentUploadResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Upload documents for a vendor agreement",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/vendors/agreements/{agreement_id}/link": {
      "parameters": [
        {
          "in": "path",
          "name": "agreement_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_vendor_agreement_link_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorAgreementLinkInputRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVendorAgreementLinkResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Link purchase orders or documents to a vendor agreement",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/vendors/agreements/{agreement_id}/link-spend-request": {
      "parameters": [
        {
          "in": "path",
          "name": "agreement_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_vendor_agreement_spend_request_link_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorAgreementSpendRequestLinkInputRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVendorAgreementLinkResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Link a spend request to a vendor agreement",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/vendors/agreements/{agreement_id}/unlink": {
      "delete": {
        "operationId": "delete_vendor_agreement_unlink_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorAgreementUnlinkInputRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVendorAgreementUnlinkResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Unlink purchase orders or documents from a vendor agreement",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      },
      "parameters": [
        {
          "in": "path",
          "name": "agreement_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/vendors/credits": {
      "get": {
        "description": "Returns active, visible credits by default. Set is_archived=true to return\nvisible archived credits instead, subject to the remaining filters.\nArchived credits cannot be applied to bills.",
        "operationId": "get_all_vendor_credits_list",
        "parameters": [
          {
            "description": "Filter by vendor credits associated with the provided business entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "default": null,
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter by vendor credits with a created_at on or after this date. This parameter should be provided as a datetime string that conforms to ISO 8601.",
            "in": "query",
            "name": "from_created_at",
            "required": false,
            "schema": {
              "default": null,
              "format": "date-time",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter by vendor credits with a created_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601.",
            "in": "query",
            "name": "to_created_at",
            "required": false,
            "schema": {
              "default": null,
              "format": "date-time",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter by vendor credits with an accounting date on or after the provided date.",
            "in": "query",
            "name": "from_accounting_date",
            "required": false,
            "schema": {
              "default": null,
              "format": "date",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter by vendor credits with an accounting date up to or on the provided date.",
            "in": "query",
            "name": "to_accounting_date",
            "required": false,
            "schema": {
              "default": null,
              "format": "date",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Include vendor credits that are marked as fully used. Defaults to false.",
            "in": "query",
            "name": "include_fully_used",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "Show archived vendor credits instead of active vendor credits. Defaults to false.",
            "in": "query",
            "name": "is_archived",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseVendorCreditResourceSchema"
                }
              }
            },
            "description": "List all vendor credits for all vendors of a business"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "List all vendor credits for all vendors of a business",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      }
    },
    "/developer/v1/vendors/credits/{vendor_credit_id}": {
      "get": {
        "description": "Returns a credit by ID, including archived or hidden credits. A non-null\narchived_at identifies an archived credit; its remaining_amount is retained\nfor reference and cannot be applied to bills.",
        "operationId": "get_vendor_credit_detail",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorCreditResource"
                }
              }
            },
            "description": "Success"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "Vendor Credit not found",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "Fetch a vendor credit",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "vendor_credit_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/vendors/{vendor_id}": {
      "delete": {
        "description": "A vendor cannot be deleted if it has associated transactions, bills, contracts, spend requests, or child vendors.",
        "operationId": "delete_vendor_resource",
        "responses": {
          "204": {
            "description": "Delete vendor"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Delete a vendor",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_vendor_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVendorDetailResource"
                }
              }
            },
            "description": "Vendors"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "Fetch a vendor",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "patch": {
        "operationId": "patch_vendor_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Vendor"
                }
              }
            },
            "description": "Vendors"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Update a vendor",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/vendors/{vendor_id}/accounts": {
      "get": {
        "operationId": "get_vendor_bank_account_list_resource",
        "parameters": [
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiVendorBankAccountResource"
                }
              }
            },
            "description": "Vendor Bank Accounts"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "List vendor bank accounts",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/vendors/{vendor_id}/accounts/{bank_account_id}": {
      "get": {
        "operationId": "get_vendor_bank_account_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVendorBankAccountResource"
                }
              }
            },
            "description": "Vendor Bank Account"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "Fetch a vendor bank account",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "bank_account_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        },
        {
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/vendors/{vendor_id}/accounts/{bank_account_id}/archive": {
      "parameters": [
        {
          "in": "path",
          "name": "bank_account_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        },
        {
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "If the bank account has associated bills, drafts, or recurring templates,\na replacement_bank_account_id must be provided in the request body.",
        "operationId": "post_vendor_bank_account_archive_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorBankAccountArchiveParamsRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Bank account archived"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Archive a vendor bank account",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/vendors/{vendor_id}/agreements": {
      "parameters": [
        {
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_vendor_agreement_create_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorAgreementCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVendorAgreementDetailResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Create a vendor agreement",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/vendors/{vendor_id}/children": {
      "get": {
        "operationId": "get_vendor_children_list_resource",
        "parameters": [
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiVendorResourceSchema"
                }
              }
            },
            "description": "Child vendors"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "List child vendors of a parent vendor",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/vendors/{vendor_id}/contacts": {
      "get": {
        "operationId": "get_vendor_contact_list_resource",
        "parameters": [
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiVendorContactResourceSchema"
                }
              }
            },
            "description": "Vendor Contacts"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "List vendor contacts for vendor",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_vendor_contact_list_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorContactCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVendorContactCreateResponse"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Create a vendor contact",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/vendors/{vendor_id}/contacts/{vendor_contact_id}": {
      "get": {
        "operationId": "get_vendor_contact_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVendorContactResource"
                }
              }
            },
            "description": "Vendor Contact"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "Fetch a vendor contact",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "vendor_contact_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        },
        {
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/vendors/{vendor_id}/credits": {
      "get": {
        "description": "Returns active, visible credits by default. Set is_archived=true to return\nvisible archived credits instead. Archived credits cannot be applied to bills.",
        "operationId": "get_vendor_credits_list",
        "parameters": [
          {
            "description": "Filter by vendor credits associated with the provided business entity.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "default": null,
              "format": "uuid",
              "nullable": true,
              "type": "string",
              "x-relationship": {
                "inverse_field_name": null,
                "reference_field_name": "id",
                "target_resource": "entities",
                "type": "many-to-one"
              }
            }
          },
          {
            "description": "Filter by vendor credits with a created_at on or after this date. This parameter should be provided as a datetime string that conforms to ISO 8601.",
            "in": "query",
            "name": "from_created_at",
            "required": false,
            "schema": {
              "default": null,
              "format": "date-time",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter by vendor credits with a created_at on or before this date. This parameter should be provided as a datetime string that conforms to ISO 8601.",
            "in": "query",
            "name": "to_created_at",
            "required": false,
            "schema": {
              "default": null,
              "format": "date-time",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter by vendor credits with an accounting date on or after the provided date.",
            "in": "query",
            "name": "from_accounting_date",
            "required": false,
            "schema": {
              "default": null,
              "format": "date",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Filter by vendor credits with an accounting date up to or on the provided date.",
            "in": "query",
            "name": "to_accounting_date",
            "required": false,
            "schema": {
              "default": null,
              "format": "date",
              "nullable": true,
              "type": "string"
            }
          },
          {
            "description": "Include vendor credits that are marked as fully used. Defaults to false.",
            "in": "query",
            "name": "include_fully_used",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "Show archived vendor credits instead of active vendor credits. Defaults to false.",
            "in": "query",
            "name": "is_archived",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseVendorCreditResourceSchema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperApiErrorResponse"
                }
              }
            },
            "description": "raises InvalidInput",
            "headers": {
              "x-trace-id": {
                "description": "Trace identifier for support and debugging.",
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "List vendor credits by vendor",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/vendors/{vendor_id}/hold": {
      "parameters": [
        {
          "description": "Unique identifier of the vendor.",
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Blocks payments to this vendor by placing a vendor-scoped hold. Open,\nunpaid bills for the vendor that can still be modified are removed from\nscheduled payment flows. An optional `reason` can be supplied to record\nwhy the hold was placed.",
        "operationId": "post_vendor_hold_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorHoldParamsRequestBody"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmptyObject"
                }
              }
            },
            "description": "Vendor hold pending approval"
          },
          "204": {
            "description": "Vendor placed on hold"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Place a hold on a vendor",
        "tags": [
          "Vendor",
          "vendors"
        ],
        "x-alias": "hold",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-destructive": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp",
          "third_party"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": false
      }
    },
    "/developer/v1/vendors/{vendor_id}/payment-methods": {
      "get": {
        "description": "Returns ACH and CHECK payment methods with associated fee information.",
        "operationId": "get_vendor_payment_method_list_resource",
        "parameters": [
          {
            "description": "The ID of the last entity of the previous page, used for pagination to get the next page.",
            "in": "query",
            "name": "start",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The number of results to be returned in each page. The value must be between 2 and 100. If not specified, the default value 20 will be used.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "default": 20,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponseApiVendorPaymentMethodResourceSchema"
                }
              }
            },
            "description": "Vendor Payment Methods"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:read"
            ]
          }
        ],
        "summary": "List available payment methods for a vendor",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-beta": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "description": "Unique identifier of the vendor.",
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/vendors/{vendor_id}/release": {
      "parameters": [
        {
          "description": "Unique identifier of the vendor.",
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Releases the active vendor-scoped hold and allows new payments to be\nscheduled for the vendor. Payments that were removed from scheduled\npayment flows while the hold was active must be scheduled again after\nthe hold is released.",
        "operationId": "post_vendor_hold_release_resource",
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmptyObject"
                }
              }
            },
            "description": "Vendor hold release pending approval"
          },
          "204": {
            "description": "Vendor hold released"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Release Vendor Hold",
        "tags": [
          "Vendor",
          "vendors"
        ],
        "x-alias": "hold-release",
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-destructive": true,
        "x-open-world": false,
        "x-platforms": [
          "cli",
          "mcp",
          "third_party"
        ],
        "x-ramp-plus-required": false,
        "x-read-only": false
      }
    },
    "/developer/v1/vendors/{vendor_id}/update-bank-accounts": {
      "parameters": [
        {
          "in": "path",
          "name": "vendor_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "description": "Adds payment details for the vendor through the approval workflow.\nThe proposal may require approval depending on the business's approval policies.\n\nSupported payment methods:\n- ACH: US bank account with routing and account numbers\n- Wire: US wire transfer with routing and account numbers\n- Crypto: stablecoin wallet with a wallet address and network",
        "operationId": "post_vendor_bank_account_update_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiVendorBankAccountUpdateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiVendorBankAccountUpdateResponse"
                }
              }
            },
            "description": "Bank Account Update Response"
          }
        },
        "security": [
          {
            "oauth2": [
              "vendors:write"
            ]
          }
        ],
        "summary": "Add to a vendor's bank account details",
        "tags": [
          "Vendor"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/webhooks": {
      "get": {
        "operationId": "get_outbound_webhook_subscription_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/OutboundWebhookSubscriptionResource"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": []
          }
        ],
        "summary": "Get all webhook subscriptions",
        "tags": [
          "Webhooks"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "post": {
        "description": "The newly registered subscription will be in the pending verficiation state. You will need to verify your endpoint with the provided challenge.",
        "operationId": "post_outbound_webhook_subscription_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OutboundWebhookSubscriptionCreateRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutboundWebhookSubscriptionWithSecretResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": []
          }
        ],
        "summary": "Creates a new webhook subscription",
        "tags": [
          "Webhooks"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/webhooks/mock-webhook-event": {
      "post": {
        "operationId": "post_mock_outbound_webhook_event_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MockOutboundWebhookEventRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MockOutboundWebhookEventPayload"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": []
          }
        ],
        "summary": "Create a mock webhook event for active subscriptions matching the event type",
        "tags": [
          "Webhooks"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    },
    "/developer/v1/webhooks/{webhook_id}": {
      "delete": {
        "operationId": "delete_outbound_webhook_subscription_detail_resource",
        "responses": {
          "204": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmptyObject"
                }
              }
            },
            "description": "Success, No content"
          }
        },
        "security": [
          {
            "oauth2": []
          }
        ],
        "summary": "Delete a webhook subscription by id",
        "tags": [
          "Webhooks"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      },
      "get": {
        "operationId": "get_outbound_webhook_subscription_detail_resource",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutboundWebhookSubscriptionResource"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": []
          }
        ],
        "summary": "Get a webhook subscription by id",
        "tags": [
          "Webhooks"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false,
        "x-uses-read-replica": true
      },
      "parameters": [
        {
          "in": "path",
          "name": "webhook_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ]
    },
    "/developer/v1/webhooks/{webhook_id}/verify": {
      "parameters": [
        {
          "in": "path",
          "name": "webhook_id",
          "required": true,
          "schema": {
            "format": "uuid",
            "type": "string"
          },
          "style": "simple"
        }
      ],
      "post": {
        "operationId": "post_outbound_webhook_subscription_verify_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OutboundWebhookSubscriptionVerifyRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleSuccess"
                }
              }
            },
            "description": "Success"
          }
        },
        "security": [
          {
            "oauth2": []
          }
        ],
        "summary": "Verify a webhook subscription",
        "tags": [
          "Webhooks"
        ],
        "x-annotatedRequest": true,
        "x-annotatedResponse": true,
        "x-ramp-plus-required": false
      }
    }
  },
  "servers": [
    {
      "description": "Production",
      "url": "https://api.ramp.com"
    }
  ],
  "tags": [
    {
      "description": "Analyze AI usage and spend.",
      "name": "AI Spend"
    },
    {
      "description": "Billing Statements",
      "name": "BillingStatement"
    },
    {
      "description": "Funds",
      "name": "Fund"
    },
    {
      "description": "Issue Machine Payments Protocol credentials",
      "name": "MPP"
    },
    {
      "description": "Limit Operations",
      "name": "Limit"
    },
    {
      "description": "Manage Agent Wallet policies and execute payments.",
      "name": "Agent Wallet"
    },
    {
      "description": "Manage standalone agent identities.",
      "name": "Agents"
    },
    {
      "description": "Operations related to Banking",
      "name": "Banking"
    },
    {
      "description": "Operations related to Embedded Cards",
      "name": "Embedded Cards"
    },
    {
      "description": "Operations related to accounting",
      "name": "Accounting"
    },
    {
      "description": "Operations related to accounts receivable invoices",
      "name": "Invoices"
    },
    {
      "description": "Operations related to approvals",
      "name": "Approvals"
    },
    {
      "description": "Operations related to audit log",
      "name": "Audit Log"
    },
    {
      "description": "Operations related to bank accounts",
      "name": "Bank Accounts"
    },
    {
      "description": "Operations related to bill pay",
      "name": "Bill"
    },
    {
      "description": "Operations related to blank canvas workflow approvals",
      "name": "BlankCanvas"
    },
    {
      "description": "Operations related to business",
      "name": "Business"
    },
    {
      "description": "Operations related to cards in vault",
      "name": "Card Vault Alias"
    },
    {
      "description": "Operations related to cards in vault",
      "name": "Card Vault"
    },
    {
      "description": "Operations related to cards",
      "name": "Card"
    },
    {
      "description": "Operations related to cashback",
      "name": "Cashback"
    },
    {
      "description": "Operations related to comments",
      "name": "Comments"
    },
    {
      "description": "Operations related to custom forms",
      "name": "CustomForm"
    },
    {
      "description": "Operations related to custom records.",
      "name": "Custom Records"
    },
    {
      "description": "Operations related to departments",
      "name": "Department"
    },
    {
      "description": "Operations related to entity",
      "name": "Business Entities"
    },
    {
      "description": "Operations related to external dimensions",
      "name": "External Dimensions"
    },
    {
      "description": "Operations related to financing applications",
      "name": "Application"
    },
    {
      "description": "Operations related to incorporating a US business via Ramp's incorporation partner",
      "name": "Incorporation"
    },
    {
      "description": "Operations related to item receipts",
      "name": "Item Receipts"
    },
    {
      "description": "Operations related to location",
      "name": "Location"
    },
    {
      "description": "Operations related to memos",
      "name": "Memo"
    },
    {
      "description": "Operations related to merchant",
      "name": "Merchant"
    },
    {
      "description": "Operations related to payments",
      "name": "Payment"
    },
    {
      "description": "Operations related to physical cards",
      "name": "Physical Card"
    },
    {
      "description": "Operations related to purchase orders",
      "name": "Purchase Order"
    },
    {
      "description": "Operations related to receipt integrations.",
      "name": "Receipt Integrations"
    },
    {
      "description": "Operations related to receipts",
      "name": "Receipt"
    },
    {
      "description": "Operations related to reimbursements",
      "name": "Reimbursement"
    },
    {
      "description": "Operations related to repayments",
      "name": "Repayment"
    },
    {
      "description": "Operations related to roles",
      "name": "Role"
    },
    {
      "description": "Operations related to spend events for Excel plug-in",
      "name": "Spend Export"
    },
    {
      "description": "Operations related to spend requests",
      "name": "Spend Request"
    },
    {
      "description": "Operations related to statements",
      "name": "Statement"
    },
    {
      "description": "Operations related to token",
      "name": "Token"
    },
    {
      "description": "Operations related to transactions",
      "name": "Transaction"
    },
    {
      "description": "Operations related to transfer payments",
      "name": "Transfer Payment"
    },
    {
      "description": "Operations related to trips and travel",
      "name": "Trips"
    },
    {
      "description": "Operations related to unified requests",
      "name": "Unified Request"
    },
    {
      "description": "Operations related to users",
      "name": "User"
    },
    {
      "description": "Operations related to vendors in vault",
      "name": "Vendor Vault"
    },
    {
      "description": "Operations related to vendors",
      "name": "Vendor"
    },
    {
      "description": "Operations related to virtual cards.",
      "name": "Virtual Cards"
    },
    {
      "description": "Sourcing agent tool operations",
      "name": "Sourcing Agent Tool"
    },
    {
      "description": "Spend Program Operations",
      "name": "Spend Program"
    },
    {
      "description": "Subscribe to webhooks through developer API",
      "name": "Webhooks"
    },
    {
      "name": "accounting"
    },
    {
      "name": "ai-token-spend"
    },
    {
      "name": "applications"
    },
    {
      "name": "audit_logs"
    },
    {
      "name": "bank-link"
    },
    {
      "name": "merchant"
    },
    {
      "name": "statements"
    },
    {
      "name": "transactions"
    },
    {
      "name": "users"
    },
    {
      "name": "vendors"
    }
  ],
  "x-relationship-summary": [
    {
      "relationships": [
        {
          "field": "accounting_connection_id",
          "target": "accounting_connections",
          "type": "one-to-many"
        },
        {
          "field": "accounting_connection_id",
          "target": "accounting_connections",
          "type": "many-to-one"
        }
      ],
      "resource": "custom_field_options"
    },
    {
      "relationships": [
        {
          "field": "accounting_connection_id",
          "target": "accounting_connections",
          "type": "one-to-many"
        }
      ],
      "resource": "accounting_fields"
    },
    {
      "relationships": [
        {
          "field": "accounting_connection_id",
          "target": "accounting_connections",
          "type": "one-to-many"
        },
        {
          "field": "accounting_connection_id",
          "target": "accounting_connections",
          "type": "one-to-many"
        }
      ],
      "resource": "gl_accounts"
    },
    {
      "relationships": [
        {
          "field": "accounting_connection_id",
          "target": "accounting_connections",
          "type": "many-to-one"
        }
      ],
      "resource": "inventory_item_options"
    },
    {
      "relationships": [
        {
          "field": "accounting_connection_id",
          "target": "accounting_connections",
          "type": "many-to-one"
        }
      ],
      "resource": "tax_code_options"
    },
    {
      "relationships": [
        {
          "field": "accounting_connection_id",
          "target": "accounting_connections",
          "type": "many-to-one"
        },
        {
          "field": "accounting_gl_account_id",
          "target": "gl_accounts",
          "type": "many-to-one"
        },
        {
          "field": "accounting_connection_id",
          "target": "accounting_connections",
          "type": "one-to-many"
        }
      ],
      "resource": "tax_rates"
    },
    {
      "relationships": [
        {
          "field": "id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "id",
          "target": "vendors",
          "type": "one-to-many"
        },
        {
          "field": "bill_id",
          "target": "bills",
          "type": "many-to-many"
        },
        {
          "field": "draft_bill_id",
          "target": "draft_bills",
          "type": "many-to-one"
        },
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        },
        {
          "field": "item_receipt_ids",
          "target": "item_receipts",
          "type": "many-to-many"
        },
        {
          "field": "purchase_order_id",
          "target": "purchase_orders",
          "type": "many-to-one"
        },
        {
          "field": "vendor_contact_id",
          "target": "vendor_contacts",
          "type": "many-to-one"
        }
      ],
      "resource": "bills"
    },
    {
      "relationships": [
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        }
      ],
      "resource": "comments"
    },
    {
      "relationships": [
        {
          "field": "default_bill_pay_payment_account_id",
          "target": "bank_accounts",
          "type": "many-to-one"
        },
        {
          "field": "id",
          "target": "bank_accounts",
          "type": "many-to-one"
        },
        {
          "field": "bank_account_id",
          "target": "bank_accounts",
          "type": "many-to-one"
        }
      ],
      "resource": "entities"
    },
    {
      "relationships": [
        {
          "field": "card_id",
          "target": "cards",
          "type": "one-to-many"
        },
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "allowed_vendor_ids",
          "target": "merchants",
          "type": "many-to-many"
        },
        {
          "field": "blocked_vendor_ids",
          "target": "merchants",
          "type": "many-to-many"
        },
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        },
        {
          "field": "spend_program_id",
          "target": "spend_programs",
          "type": "many-to-one"
        }
      ],
      "resource": "funds"
    },
    {
      "relationships": [
        {
          "field": "purchase_order_id",
          "target": "purchase_orders",
          "type": "many-to-one"
        }
      ],
      "resource": "item_receipts"
    },
    {
      "relationships": [
        {
          "field": "fund_id",
          "target": "funds",
          "type": "many-to-one"
        },
        {
          "field": "user_id",
          "target": "users",
          "type": "one-to-one"
        },
        {
          "field": "cardholder_id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "fund_id",
          "target": "funds",
          "type": "many-to-one"
        }
      ],
      "resource": "physical_cards"
    },
    {
      "relationships": [
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        },
        {
          "field": "owner_id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "spend_program_id",
          "target": "spend_programs",
          "type": "many-to-one"
        },
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "vendor_id",
          "target": "vendors",
          "type": "many-to-one"
        },
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        },
        {
          "field": "owner_id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "spend_program_id",
          "target": "spend_programs",
          "type": "many-to-one"
        },
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "vendor_id",
          "target": "vendors",
          "type": "many-to-one"
        }
      ],
      "resource": "purchase_orders"
    },
    {
      "relationships": [
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        },
        {
          "field": "fund_id",
          "target": "funds",
          "type": "many-to-one"
        },
        {
          "field": "merchant_id",
          "target": "merchants",
          "type": "many-to-one"
        },
        {
          "field": "spend_limit_id",
          "target": "limits",
          "type": "many-to-one"
        },
        {
          "field": "trip_id",
          "target": "trips",
          "type": "many-to-one"
        },
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        }
      ],
      "resource": "reimbursements"
    },
    {
      "relationships": [
        {
          "field": "id",
          "target": "accounting_fields",
          "type": "many-to-many"
        },
        {
          "field": "allowed_vendors",
          "target": "merchants",
          "type": "many-to-many"
        },
        {
          "field": "blocked_vendors",
          "target": "merchants",
          "type": "many-to-many"
        }
      ],
      "resource": "spend_programs"
    },
    {
      "relationships": [
        {
          "field": "requester_user_id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "spend_intent_id",
          "target": "spend_programs",
          "type": "many-to-one"
        }
      ],
      "resource": "spend_requests"
    },
    {
      "relationships": [
        {
          "field": "allowed_vendors",
          "target": "merchants",
          "type": "many-to-many"
        },
        {
          "field": "blocked_vendors",
          "target": "merchants",
          "type": "many-to-many"
        },
        {
          "field": "id",
          "target": "cards",
          "type": "one-to-one"
        },
        {
          "field": "spend_limit_id",
          "target": "limits",
          "type": "many-to-one"
        },
        {
          "field": "spend_program_id",
          "target": "spend_programs",
          "type": "many-to-one"
        }
      ],
      "resource": "limits"
    },
    {
      "relationships": [
        {
          "field": "id",
          "target": "accounting_fields",
          "type": "many-to-many"
        },
        {
          "field": "id",
          "target": "custom_field_options",
          "type": "many-to-many"
        },
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "department_id",
          "target": "departments",
          "type": "many-to-one"
        },
        {
          "field": "location_id",
          "target": "locations",
          "type": "many-to-one"
        },
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "card_id",
          "target": "cards",
          "type": "many-to-one"
        },
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        },
        {
          "field": "fund_id",
          "target": "funds",
          "type": "many-to-one"
        },
        {
          "field": "limit_id",
          "target": "limits",
          "type": "many-to-one"
        },
        {
          "field": "merchant_id",
          "target": "merchants",
          "type": "many-to-one"
        },
        {
          "field": "spend_program_id",
          "target": "spend_programs",
          "type": "many-to-one"
        },
        {
          "field": "statement_id",
          "target": "statements",
          "type": "many-to-one"
        },
        {
          "field": "trip_id",
          "target": "trips",
          "type": "many-to-one"
        },
        {
          "field": "card_id",
          "target": "cards",
          "type": "many-to-one"
        },
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        },
        {
          "field": "fund_id",
          "target": "funds",
          "type": "many-to-one"
        },
        {
          "field": "limit_id",
          "target": "limits",
          "type": "many-to-one"
        },
        {
          "field": "merchant_id",
          "target": "merchants",
          "type": "many-to-one"
        },
        {
          "field": "spend_program_id",
          "target": "spend_programs",
          "type": "many-to-one"
        },
        {
          "field": "statement_id",
          "target": "statements",
          "type": "many-to-one"
        },
        {
          "field": "trip_id",
          "target": "trips",
          "type": "many-to-one"
        }
      ],
      "resource": "transactions"
    },
    {
      "relationships": [
        {
          "field": "uploaded_by_user_id",
          "target": "users",
          "type": "many-to-one"
        }
      ],
      "resource": "unified_request_attachments"
    },
    {
      "relationships": [
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        }
      ],
      "resource": "user_deferred_task_data"
    },
    {
      "relationships": [
        {
          "field": "default_entity_id",
          "target": "entities",
          "type": "many-to-one"
        },
        {
          "field": "merchant_id",
          "target": "merchants",
          "type": "many-to-many"
        },
        {
          "field": "default_entity_id",
          "target": "entities",
          "type": "many-to-one"
        },
        {
          "field": "merchant_id",
          "target": "merchants",
          "type": "many-to-many"
        }
      ],
      "resource": "vendors"
    },
    {
      "relationships": [
        {
          "field": "id",
          "target": "audit_log_events",
          "type": "many-to-one"
        }
      ],
      "resource": "audit_log_events"
    },
    {
      "relationships": [
        {
          "field": "cardholder_id",
          "target": "users",
          "type": "many-to-one"
        },
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        }
      ],
      "resource": "cards"
    },
    {
      "relationships": [
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        }
      ],
      "resource": "cashbacks"
    },
    {
      "relationships": [
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        }
      ],
      "resource": "draft_bills"
    },
    {
      "relationships": [
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        }
      ],
      "resource": "locations"
    },
    {
      "relationships": [
        {
          "field": "business_id",
          "target": "businesses",
          "type": "many-to-one"
        },
        {
          "field": "business_id",
          "target": "businesses",
          "type": "many-to-one"
        }
      ],
      "resource": "outbound_webhook_subscription"
    },
    {
      "relationships": [
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        },
        {
          "field": "source_bank_account_id",
          "target": "bank_accounts",
          "type": "many-to-one"
        },
        {
          "field": "vendor_id",
          "target": "vendors",
          "type": "many-to-one"
        }
      ],
      "resource": "payments"
    },
    {
      "relationships": [
        {
          "field": "reimbursement_id",
          "target": "reimbursements",
          "type": "many-to-one"
        },
        {
          "field": "transaction_id",
          "target": "transactions",
          "type": "many-to-one"
        },
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        }
      ],
      "resource": "receipts"
    },
    {
      "relationships": [
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        }
      ],
      "resource": "repayments"
    },
    {
      "relationships": [
        {
          "field": "preceding_statement_id",
          "target": "statements",
          "type": "one-to-one"
        },
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        }
      ],
      "resource": "statements"
    },
    {
      "relationships": [
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        }
      ],
      "resource": "transfers"
    },
    {
      "relationships": [
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        }
      ],
      "resource": "trips"
    },
    {
      "relationships": [
        {
          "field": "business_id",
          "target": "businesses",
          "type": "many-to-one"
        },
        {
          "field": "department_id",
          "target": "departments",
          "type": "many-to-one"
        },
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        },
        {
          "field": "location_id",
          "target": "locations",
          "type": "many-to-one"
        },
        {
          "field": "manager_id",
          "target": "users",
          "type": "many-to-one"
        }
      ],
      "resource": "users"
    },
    {
      "relationships": [
        {
          "field": "entity_id",
          "target": "entities",
          "type": "many-to-one"
        },
        {
          "field": "reference_bill_id",
          "target": "bills",
          "type": "many-to-one"
        },
        {
          "field": "vendor_id",
          "target": "vendors",
          "type": "many-to-one"
        }
      ],
      "resource": "vendor_credits"
    },
    {
      "relationships": [
        {
          "field": "fund_id",
          "target": "funds",
          "type": "many-to-one"
        },
        {
          "field": "user_id",
          "target": "users",
          "type": "many-to-one"
        }
      ],
      "resource": "virtual_cards"
    }
  ]
}
