From bcc0a1712eb9a921140c68f72e9598a852520271 Mon Sep 17 00:00:00 2001 From: eden wang <64514273+eyw520@users.noreply.github.com> Date: Fri, 22 Nov 2024 18:36:07 -0500 Subject: [PATCH] fix(cli): docs generation now preserves original model schema names. (#5255) * fix(cli): docs generation now preserves original model schema names. * chore: update changelog * Add test cases & refine `getSchemaName`. * Update versions.yml. --------- Co-authored-by: eyw520 <eyw520@users.noreply.github.com> --- .../converters/endpoint/convertParameters.ts | 2 +- .../operation/convertAsyncSyncOperation.ts | 2 +- .../operation/convertHttpOperation.ts | 2 +- .../operation/convertWebhookOperation.ts | 2 +- .../v3/extensions/getVariableDefinitions.ts | 7 +- .../src/openapi/v3/generateIr.ts | 7 +- .../openapi/openapi-ir-parser/src/options.ts | 5 +- .../openapi/openapi-ir-parser/src/parse.ts | 3 +- .../src/schema/convertObject.ts | 7 +- .../src/schema/convertSchemas.ts | 13 +- .../src/schema/convertUndiscriminatedOneOf.ts | 7 +- .../src/schema/utils/getSchemaName.ts | 18 +- .../__snapshots__/openapi-docs/ntropy.json | 10921 ++++++++++ .../__snapshots__/openapi-ir/ntropy.json | 17567 ++++++++++++++++ .../__snapshots__/openapi/ntropy.json | 10019 +++++++++ .../fixtures/ntropy/fern/fern.config.json | 4 + .../fixtures/ntropy/fern/generators.yml | 3 + .../src/__test__/fixtures/ntropy/openapi.yml | 4145 ++++ .../fixtures/ntropy/personalization.json | 568 + .../src/__test__/openapiDocs.test.ts | 2 +- packages/cli/cli/src/cli.ts | 11 +- .../src/commands/docs-dev/devDocsWorkspace.ts | 2 +- .../generate/generateDocsWorkspace.ts | 2 +- .../writeDefinitionForWorkspaces.ts | 6 +- packages/cli/cli/versions.yml | 7 + packages/cli/docs-preview/src/previewDocs.ts | 2 +- .../lazy-fern-workspace/src/OSSWorkspace.ts | 9 +- .../cli/project-loader/src/loadProject.ts | 1 + 28 files changed, 43312 insertions(+), 32 deletions(-) create mode 100644 packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/ntropy.json create mode 100644 packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-ir/ntropy.json create mode 100644 packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/ntropy.json create mode 100644 packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/fern/fern.config.json create mode 100644 packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/fern/generators.yml create mode 100644 packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/openapi.yml create mode 100644 packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/personalization.json diff --git a/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/endpoint/convertParameters.ts b/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/endpoint/convertParameters.ts index b2a18deb15a..b0803ca4e08 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/endpoint/convertParameters.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/endpoint/convertParameters.ts @@ -63,7 +63,7 @@ export function convertParameters({ const availability = convertAvailability(resolvedParameter); const parameterBreadcrumbs = [...requestBreadcrumbs, resolvedParameter.name]; - const generatedName = getGeneratedTypeName(parameterBreadcrumbs); + const generatedName = getGeneratedTypeName(parameterBreadcrumbs, context.options.preserveSchemaIds); let schema = resolvedParameter.schema != null diff --git a/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/operation/convertAsyncSyncOperation.ts b/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/operation/convertAsyncSyncOperation.ts index 460573cd163..0701018e7fe 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/operation/convertAsyncSyncOperation.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/operation/convertAsyncSyncOperation.ts @@ -69,7 +69,7 @@ export function convertAsyncSyncOperation({ name: headerToIgnore, schema: SchemaWithExample.literal({ nameOverride: undefined, - generatedName: getGeneratedTypeName([headerToIgnore]), + generatedName: getGeneratedTypeName([headerToIgnore], context.options.preserveSchemaIds), title: undefined, description: undefined, availability: undefined, diff --git a/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/operation/convertHttpOperation.ts b/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/operation/convertHttpOperation.ts index c69febdce1d..c01c372bf7a 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/operation/convertHttpOperation.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/operation/convertHttpOperation.ts @@ -121,7 +121,7 @@ export function convertHttpOperation({ queryParameters: convertedParameters.queryParameters, headers: convertedParameters.headers, requestNameOverride: requestNameOverride ?? undefined, - generatedRequestName: getGeneratedTypeName(requestBreadcrumbs), + generatedRequestName: getGeneratedTypeName(requestBreadcrumbs, context.options.preserveSchemaIds), request: convertedRequest, response: convertedResponse.value, errors: convertedResponse.errors, diff --git a/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/operation/convertWebhookOperation.ts b/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/operation/convertWebhookOperation.ts index ee5f1a984b8..13968c1df3d 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/operation/convertWebhookOperation.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/converters/operation/convertWebhookOperation.ts @@ -64,7 +64,7 @@ export function convertWebhookOperation({ operationId: operation.operationId, tags: context.resolveTagsToTagIds(operation.tags), headers: convertedParameters.headers, - generatedPayloadName: getGeneratedTypeName(payloadBreadcrumbs), + generatedPayloadName: getGeneratedTypeName(payloadBreadcrumbs, context.options.preserveSchemaIds), payload: convertedPayload.schema, description: operation.description, examples: convertWebhookExamples(convertedPayload.fullExamples), diff --git a/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/extensions/getVariableDefinitions.ts b/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/extensions/getVariableDefinitions.ts index 8a3d27de161..e6de1fe8d5a 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/extensions/getVariableDefinitions.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/extensions/getVariableDefinitions.ts @@ -5,7 +5,10 @@ import { getDefaultAsString } from "../../../schema/defaults/getDefault"; import { getGeneratedTypeName } from "../../../schema/utils/getSchemaName"; import { FernOpenAPIExtension } from "./fernExtensions"; -export function getVariableDefinitions(document: OpenAPIV3.Document): Record<string, PrimitiveSchema> { +export function getVariableDefinitions( + document: OpenAPIV3.Document, + preserveSchemaIds: boolean +): Record<string, PrimitiveSchema> { const variables = getExtension<Record<string, OpenAPIV3.SchemaObject>>( document, FernOpenAPIExtension.SDK_VARIABLES @@ -22,7 +25,7 @@ export function getVariableDefinitions(document: OpenAPIV3.Document): Record<str variableName, { nameOverride: undefined, - generatedName: getGeneratedTypeName([variableName]), + generatedName: getGeneratedTypeName([variableName], preserveSchemaIds), title: schema.title, schema: PrimitiveSchemaValue.string({ default: getDefaultAsString(schema), diff --git a/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/generateIr.ts b/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/generateIr.ts index 888ae2fa49f..86850e7d149 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/generateIr.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-parser/src/openapi/v3/generateIr.ts @@ -91,7 +91,7 @@ export function generateIr({ source, namespace }); - const variables = getVariableDefinitions(openApi); + const variables = getVariableDefinitions(openApi, options.preserveSchemaIds); const globalHeaders = getGlobalHeaders(openApi); const idempotencyHeaders = getIdempotencyHeaders(openApi); @@ -465,7 +465,10 @@ function maybeAddBackDiscriminantsFromSchemas( ...property, schema: SchemaWithExample.literal({ nameOverride: undefined, - generatedName: getGeneratedTypeName([schema.generatedName, discriminantValue]), + generatedName: getGeneratedTypeName( + [schema.generatedName, discriminantValue], + context.options.preserveSchemaIds + ), title: undefined, value: LiteralSchemaValue.string(discriminantValue), groupName: undefined, diff --git a/packages/cli/api-importers/openapi/openapi-ir-parser/src/options.ts b/packages/cli/api-importers/openapi/openapi-ir-parser/src/options.ts index 0a6316c0897..4d35dc3127c 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-parser/src/options.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-parser/src/options.ts @@ -19,6 +19,8 @@ export interface ParseOpenAPIOptions { onlyIncludeReferencedSchemas: boolean; /* Whether or not to include path parameters in the in-lined request */ inlinePathParameters: boolean; + /* Whether or not to preserve original schema Ids in the IR */ + preserveSchemaIds: boolean; } export const DEFAULT_PARSE_OPENAPI_SETTINGS: ParseOpenAPIOptions = { @@ -30,5 +32,6 @@ export const DEFAULT_PARSE_OPENAPI_SETTINGS: ParseOpenAPIOptions = { cooerceEnumsToLiterals: true, respectReadonlySchemas: false, onlyIncludeReferencedSchemas: false, - inlinePathParameters: false + inlinePathParameters: false, + preserveSchemaIds: false }; diff --git a/packages/cli/api-importers/openapi/openapi-ir-parser/src/parse.ts b/packages/cli/api-importers/openapi/openapi-ir-parser/src/parse.ts index 2f90e6ee199..149863578d5 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-parser/src/parse.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-parser/src/parse.ts @@ -206,7 +206,8 @@ function getParseOptions({ inlinePathParameters: overrides?.inlinePathParameters ?? specSettings?.inlinePathParameters ?? - DEFAULT_PARSE_OPENAPI_SETTINGS.inlinePathParameters + DEFAULT_PARSE_OPENAPI_SETTINGS.inlinePathParameters, + preserveSchemaIds: overrides?.preserveSchemaIds ?? DEFAULT_PARSE_OPENAPI_SETTINGS.preserveSchemaIds }; } diff --git a/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/convertObject.ts b/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/convertObject.ts index be636225c99..0dcd74d5f44 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/convertObject.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/convertObject.ts @@ -127,7 +127,12 @@ export function convertObject({ } parents.push({ schemaId, - convertedSchema: convertToReferencedSchema(allOfElement, [schemaId], source), + convertedSchema: convertToReferencedSchema( + allOfElement, + [schemaId], + source, + context.options.preserveSchemaIds + ), properties: getAllProperties({ schema: allOfElement, context, breadcrumbs, source, namespace }) }); context.markSchemaAsReferencedByNonRequest(schemaId); diff --git a/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/convertSchemas.ts b/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/convertSchemas.ts index 3c969959bec..07de8a6f125 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/convertSchemas.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/convertSchemas.ts @@ -115,12 +115,14 @@ export function convertReferenceObject( namespace, new Set() ) - : SchemaWithExample.reference(convertToReferencedSchema(schema, breadcrumbs, source)); + : SchemaWithExample.reference( + convertToReferencedSchema(schema, breadcrumbs, source, context.options.preserveSchemaIds) + ); if (wrapAsNullable) { return SchemaWithExample.nullable({ title: undefined, nameOverride: undefined, - generatedName: getGeneratedTypeName(breadcrumbs), + generatedName: getGeneratedTypeName(breadcrumbs, context.options.preserveSchemaIds), value: referenceSchema, description: undefined, availability: undefined, @@ -166,7 +168,7 @@ export function convertSchemaObject( let groupName: SdkGroupName = (typeof mixedGroupName === "string" ? [mixedGroupName] : mixedGroupName) ?? []; groupName = context.resolveGroupName(groupName); - const generatedName = getGeneratedTypeName(breadcrumbs); + const generatedName = getGeneratedTypeName(breadcrumbs, context.options.preserveSchemaIds); const title = schema.title; const description = schema.description; const availability = convertAvailability(schema); @@ -935,10 +937,11 @@ export function getSchemaIdFromReference(ref: OpenAPIV3.ReferenceObject): string export function convertToReferencedSchema( schema: OpenAPIV3.ReferenceObject, breadcrumbs: string[], - source: Source + source: Source, + preserveSchemaIds: boolean ): ReferencedSchema { const nameOverride = getExtension<string>(schema, FernOpenAPIExtension.TYPE_NAME); - const generatedName = getGeneratedTypeName(breadcrumbs); + const generatedName = getGeneratedTypeName(breadcrumbs, preserveSchemaIds); // eslint-disable-next-line @typescript-eslint/no-explicit-any const description = (schema as any).description; const availability = convertAvailability(schema); diff --git a/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/convertUndiscriminatedOneOf.ts b/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/convertUndiscriminatedOneOf.ts index eb99f23f498..34aabed2039 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/convertUndiscriminatedOneOf.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/convertUndiscriminatedOneOf.ts @@ -66,7 +66,7 @@ export function convertUndiscriminatedOneOf({ return schema.enum.map((enumValue) => { return SchemaWithExample.literal({ nameOverride: undefined, - generatedName: getGeneratedTypeName([generatedName, enumValue]), + generatedName: getGeneratedTypeName([generatedName, enumValue], context.options.preserveSchemaIds), title: undefined, value: LiteralSchemaValue.string(enumValue), groupName: undefined, @@ -201,7 +201,10 @@ export function convertUndiscriminatedOneOfWithDiscriminant({ subtypeReference.properties = { [discriminator.propertyName]: SchemaWithExample.literal({ nameOverride: undefined, - generatedName: getGeneratedTypeName([generatedName, discriminantValue]), + generatedName: getGeneratedTypeName( + [generatedName, discriminantValue], + context.options.preserveSchemaIds + ), title: undefined, value: LiteralSchemaValue.string(discriminantValue), groupName: undefined, diff --git a/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/utils/getSchemaName.ts b/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/utils/getSchemaName.ts index b854ffaa1db..d8cd9a88d84 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/utils/getSchemaName.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-parser/src/schema/utils/getSchemaName.ts @@ -1,9 +1,17 @@ import { camelCase, upperFirst } from "lodash-es"; import { replaceStartingNumber } from "./replaceStartingNumber"; -export function getGeneratedTypeName(breadcrumbs: string[]): string { - const underscoreDelimeted = breadcrumbs.join("_"); - const name = upperFirst(camelCase(underscoreDelimeted)); +export function getGeneratedTypeName(breadcrumbs: string[], useOriginalSchemaIds: boolean): string { + const processedTokens = breadcrumbs.map((token) => { + if (/^[^a-zA-Z0-9]+$/.test(token)) { + return token; + } else { + return upperFirst(camelCase(token)); + } + }); + + const name = processedTokens.join(""); + if (/^\d/.test(name)) { return replaceStartingNumber(name) ?? name; } @@ -11,6 +19,6 @@ export function getGeneratedTypeName(breadcrumbs: string[]): string { } export function getGeneratedPropertyName(breadcrumbs: string[]): string { - const underscoreDelimeted = breadcrumbs.join("_"); - return camelCase(underscoreDelimeted); + const underscoreDelimited = breadcrumbs.join("_"); + return camelCase(underscoreDelimited); } diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/ntropy.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/ntropy.json new file mode 100644 index 00000000000..da9a04af27f --- /dev/null +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/ntropy.json @@ -0,0 +1,10921 @@ +{ + "absoluteFilePath": "/DUMMY_PATH", + "importedDefinitions": {}, + "namedDefinitionFiles": { + "__package__.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "errors": { + "CreateAccountHolderV3AccountHoldersPostRequestBadRequestError": { + "docs": "Account holder with the provided id already exists.", + "status-code": 400, + "type": "unknown", + }, + "CreateAccountHolderV3AccountHoldersPostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "CustomCategoriesPostV3CategoriesAccountHolderTypePostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "DeleteAccountHolderV3AccountHoldersIdDeleteRequestNotFoundError": { + "docs": "Account holder with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "DeleteAccountHolderV3AccountHoldersIdDeleteRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "DeleteBankStatementV3BankStatementsIdDeleteRequestNotFoundError": { + "docs": "Bank statement with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "DeleteBankStatementV3BankStatementsIdDeleteRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "DeleteCustomCategorySetV3CategoriesAccountHolderTypeResetPostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "DeleteReportV3ReportsIdDeleteRequestNotFoundError": { + "docs": "Report with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "DeleteReportV3ReportsIdDeleteRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "DeleteTransactionV3TransactionsIdDeleteRequestNotFoundError": { + "docs": "Transaction with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "DeleteTransactionV3TransactionsIdDeleteRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "DeleteWebhookV3WebhooksIdDeleteRequestNotFoundError": { + "docs": "Webhook with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "DeleteWebhookV3WebhooksIdDeleteRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "FilterAppendV3RulesAppendPostRequestBadRequestError": { + "docs": "Provided rule has invalid structure", + "status-code": 400, + "type": "unknown", + }, + "FilterAppendV3RulesAppendPostRequestContentTooLargeError": { + "docs": "Ruleset after append was larger than 50KiB", + "status-code": 413, + "type": "unknown", + }, + "FilterAppendV3RulesAppendPostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "FilterDeleteV3RulesIndexDeleteRequestBadRequestError": { + "docs": "Provided index does not exist in ruleset", + "status-code": 400, + "type": "unknown", + }, + "FilterDeleteV3RulesIndexDeleteRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "FilterGetV3RulesGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "FilterPatchV3RulesIndexPatchRequestBadRequestError": { + "docs": "Provided index does not exist in ruleset", + "status-code": 400, + "type": "unknown", + }, + "FilterPatchV3RulesIndexPatchRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "FilterPostV3RulesPostRequestBadRequestError": { + "docs": "Provided ruleset has invalid structure", + "status-code": 400, + "type": "unknown", + }, + "FilterPostV3RulesPostRequestContentTooLargeError": { + "docs": "Ruleset was larger than 50KiB", + "status-code": 413, + "type": "unknown", + }, + "FilterPostV3RulesPostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetAccountHolderRecurringPaymentsV3AccountHoldersIdRecurringGroupsPostRequestNotFoundError": { + "docs": "Account holder with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "GetAccountHolderRecurringPaymentsV3AccountHoldersIdRecurringGroupsPostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetAccountHolderV3AccountHoldersIdGetRequestNotFoundError": { + "docs": "Account holder with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "GetAccountHolderV3AccountHoldersIdGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetAccountHoldersV3AccountHoldersGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetBankStatementResultV3BankStatementsIdResultsGetRequestNotFoundError": { + "docs": "Bank statement with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "GetBankStatementResultV3BankStatementsIdResultsGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetBankStatementStatementInfoV3BankStatementsIdOverviewPostRequestNotFoundError": { + "docs": "Bank statement with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "GetBankStatementStatementInfoV3BankStatementsIdOverviewPostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetBankStatementV3BankStatementsIdGetRequestNotFoundError": { + "docs": "Bank statement with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "GetBankStatementV3BankStatementsIdGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetBankStatementsV3BankStatementsGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetBatchResultsV3BatchesIdResultsGetRequestNotFoundError": { + "docs": "Batch with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "GetBatchResultsV3BatchesIdResultsGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetBatchesV3BatchesGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetCategorySetV3CategoriesAccountHolderTypeGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetEntityByIdV3EntitiesIdGetRequestBadRequestError": { + "docs": "Bad request.", + "status-code": 400, + "type": "unknown", + }, + "GetEntityByIdV3EntitiesIdGetRequestNotFoundError": { + "docs": "Entity does not exist for ID", + "status-code": 404, + "type": "unknown", + }, + "GetEntityByIdV3EntitiesIdGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetReportV3ReportsIdGetRequestNotFoundError": { + "docs": "Report with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "GetReportV3ReportsIdGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetReportsV3ReportsGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetSingleBatchV3BatchesIdGetRequestNotFoundError": { + "docs": "Batch with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "GetSingleBatchV3BatchesIdGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetTransactionV3TransactionsIdGetRequestNotFoundError": { + "docs": "Transaction with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "GetTransactionV3TransactionsIdGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetWebhookV3WebhooksIdGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "GetWebhooksV3WebhooksGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "ListTransactionsV3TransactionsGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "PatchWebhookV3WebhooksIdPatchRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "PostBankStatementV3BankStatementsPostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "PostBatchV3BatchesPostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "PostReportV3ReportsPostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "PostTransactionsV3TransactionsPostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "PostWebhookV3WebhooksPostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "SearchEntityV3EntitiesLookupGetRequestBadRequestError": { + "docs": "Bad request.", + "status-code": 400, + "type": "unknown", + }, + "SearchEntityV3EntitiesLookupGetRequestLockedError": { + "docs": "Not enough credits.", + "status-code": 423, + "type": "unknown", + }, + "SearchEntityV3EntitiesLookupGetRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + "SetTransactionAhV3TransactionsIdAssignPostRequestNotFoundError": { + "docs": "Transaction or account holder with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "SetTransactionAhV3TransactionsIdAssignPostRequestUnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + }, + "types": { + "Account": { + "docs": undefined, + "properties": { + "closing_balance": { + "type": "optional<double>", + }, + "iso_currency_code": { + "type": "optional<string>", + }, + "number": { + "type": "optional<string>", + }, + "opening_balance": { + "type": "optional<double>", + }, + "type": { + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "AccountHolder": { + "docs": undefined, + "properties": { + "address": { + "type": "optional<Address>", + }, + "name": { + "type": "optional<string>", + }, + "type": { + "type": "optional<AccountType>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "AccountHolderExternal": { + "docs": undefined, + "properties": { + "created_at": { + "docs": "The timestamp of when the account holder was created.", + "type": "datetime", + }, + "id": { + "docs": "The unique ID of the account holder of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "name": { + "docs": "The name of the account holder", + "type": "optional<string>", + }, + "type": { + "docs": "The type of the account holder. ", + "type": "AccountHolderType", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "AccountHolderType": { + "docs": "An enumeration.", + "enum": [ + "consumer", + "business", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "AccountType": { + "docs": "An enumeration.", + "enum": [ + "consumer", + "business", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "AccountingCategory": { + "docs": "An enumeration.", + "enum": [ + { + "name": "OperationalExpenses", + "value": "operational expenses", + }, + { + "name": "CostOfGoodsSold", + "value": "cost of goods sold", + }, + "revenue", + "financing", + "taxes", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "ActionModel": { + "type": "action", + }, + "Address": { + "docs": undefined, + "properties": { + "city": { + "type": "optional<string>", + }, + "country": { + "type": "optional<string>", + }, + "postcode": { + "type": "optional<string>", + }, + "state": { + "type": "optional<string>", + }, + "street": { + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatement": { + "docs": "Represents a bank statement with details about the file and its status.", + "properties": { + "created_at": { + "docs": "The date and time when the job was created.", + "type": "datetime", + }, + "error": { + "type": "optional<BankStatementError>", + }, + "file": { + "docs": "Information about the bank statement file being processed.", + "type": "BankStatementFile", + }, + "id": { + "docs": "A unique identifier for the bank statement job.", + "type": "string", + }, + "name": { + "docs": "The name of the bank statement file, if available.", + "type": "optional<string>", + }, + "status": { + "docs": "The current status of the document.", + "type": "BankStatementStatus", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementAccount": { + "docs": undefined, + "properties": { + "closing_balance": { + "docs": "The closing balance of the account for the statement period.", + "type": "optional<double>", + }, + "end_date": { + "docs": "The end date of the statement period.", + "type": "optional<string>", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "is_balance_reconciled": { + "docs": "Indicates whether the balance has been reconciled.", + "type": "optional<boolean>", + }, + "number": { + "docs": "The account number, if available.", + "type": "optional<string>", + }, + "opening_balance": { + "docs": "The opening balance of the account for the statement period.", + "type": "optional<double>", + }, + "start_date": { + "docs": "The start date of the statement period.", + "type": "optional<string>", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "total_incoming": { + "docs": "The sum of amounts of all incoming transactions.", + "type": "optional<double>", + }, + "total_outgoing": { + "docs": "The sum of amounts of all outgoing transactions.", + "type": "optional<double>", + }, + "transactions": { + "docs": "List of transactions for this account.", + "type": "list<BankStatementTransaction>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementError": { + "docs": undefined, + "properties": { + "code": { + "type": "BankStatementErrorCode", + }, + "message": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementErrorCode": { + "docs": "An enumeration.", + "enum": [ + "invalid_bank_statement", + "internal_error", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementFile": { + "docs": undefined, + "properties": { + "no_pages": { + "docs": "The number of pages in the bank statement file.", + "type": "integer", + }, + "size": { + "docs": "The size of the bank statement file in bytes, if available.", + "type": "optional<integer>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementResults": { + "docs": undefined, + "properties": { + "accounts": { + "docs": "List of accounts in the bank statement.", + "type": "list<BankStatementAccount>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementStatus": { + "docs": "An enumeration.", + "enum": [ + "processing", + "completed", + "error", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementTransaction": { + "docs": undefined, + "properties": { + "amount": { + "docs": "The amount of the transaction in the `currency`. Must be a positive value. For example, if the `currency` is USD, then it's the amount in dollars.", + "type": "double", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": 0, + "multipleOf": undefined, + }, + }, + "currency": { + "docs": "The currency of the transaction in ISO 4217 format", + "type": "Currency", + }, + "date": { + "docs": "The date that the transaction was posted. Uses ISO 8601 format (YYYY-MM-DD)", + "type": "string", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "description": { + "docs": "The description string of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": 1024, + "minLength": 0, + "pattern": undefined, + }, + }, + "entry_type": { + "docs": "The direction of the flow of the money from the perspective of the account holder. `outgoing` to represent money leaving the account, such as purchases or fees, while `incoming` represents money entering the account, such as income or refunds.", + "type": "EntryType", + }, + "id": { + "docs": "A unique identifier of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "running_balance": { + "docs": "The account's balance when this transaction was performed", + "type": "optional<double>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Batch": { + "docs": "The `Batch` object represents the status and progress of an asynchronous batch enrichment job.", + "properties": { + "created_at": { + "docs": "The timestamp of when the batch was created.", + "type": "datetime", + }, + "id": { + "docs": "A unique identifier for the batch.", + "type": "string", + }, + "progress": { + "docs": "The number of transactions processed so far.", + "type": "integer", + }, + "status": { + "docs": "The current status of the batch. A batch will error if at least one of the transactions contains an error.", + "type": "BatchStatus", + }, + "total": { + "docs": "The total number of transactions in the batch.", + "type": "integer", + }, + "updated_at": { + "docs": "The timestamp of when the batch was last updated.", + "type": "datetime", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BatchResult": { + "docs": "The `BatchResult` object represents the result of a batch enrichment job, including its status and +enriched transactions.", + "properties": { + "id": { + "docs": "A unique identifier for the batch.", + "type": "string", + }, + "results": { + "type": "EnrichmentResult", + }, + "status": { + "docs": "The current status of the batch job.", + "type": "BatchStatus", + }, + "total": { + "docs": "The total number of transactions in the batch result.", + "type": "integer", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BatchStatus": { + "docs": "An enumeration.", + "enum": [ + "processing", + "completed", + "error", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "Categories": { + "docs": undefined, + "properties": { + "accounting": { + "docs": "The corresponding accounting category. Only available for `business` transactions.", + "type": "optional<AccountingCategory>", + }, + "general": { + "docs": "The category of the transaction. View the valid set of categories for your key [here](./docs/v3/enrichment/entities).", + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "CategoryConfidence": { + "docs": "An enumeration.", + "enum": [ + "high", + "medium", + "low", + "unknown", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "CategorySet": { + "docs": undefined, + "properties": { + "incoming": { + "type": "list<string>", + }, + "outgoing": { + "type": "list<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Counterparty": { + "docs": undefined, + "properties": { + "id": { + "docs": "The unique UUID identifier of the entity", + "type": "optional<string>", + }, + "logo": { + "docs": "Logo's URL", + "type": "optional<string>", + }, + "mccs": { + "docs": "A list of [Merchant Category Codes](https://en.wikipedia.org/wiki/Merchant_category_code)", + "type": "optional<list<integer>>", + }, + "name": { + "docs": "The name of the entity", + "type": "optional<string>", + }, + "type": { + "type": "CounterpartyType", + }, + "website": { + "docs": "The website URL of the entity", + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "CounterpartyType": { + "docs": "An enumeration.", + "enum": [ + "person", + "organization", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "Country": { + "docs": "An enumeration.", + "enum": [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AR", + "AS", + "AT", + "AU", + "AW", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "Currency": { + "docs": "An enumeration.", + "enum": [ + "EUR", + "AED", + "AFN", + "XCD", + "ALL", + "AMD", + "AOA", + "ARS", + "USD", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "XOF", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "INR", + "NOK", + "BWP", + "BYR", + "BZD", + "CAD", + "CDF", + "XAF", + "CHF", + "NZD", + "CLP", + "CNY", + "COP", + "CRC", + "CUP", + "CVE", + "ANG", + "CZK", + "DJF", + "DKK", + "DOP", + "DZD", + "EGP", + "MAD", + "ERN", + "ETB", + "FJD", + "FKP", + "GBP", + "GEL", + "GHS", + "GIP", + "GMD", + "GNF", + "GTQ", + "GYD", + "HKD", + "HNL", + "HUF", + "IDR", + "ILS", + "IQD", + "IRR", + "ISK", + "JMD", + "JOD", + "JPY", + "KES", + "KGS", + "KHR", + "KMF", + "KPW", + "KRW", + "KWD", + "KYD", + "KZT", + "LAK", + "LBP", + "LKR", + "LRD", + "ZAR", + "LYD", + "MDL", + "MGA", + "MKD", + "MMK", + "MNT", + "MOP", + "MRO", + "MUR", + "MVR", + "MWK", + "MXN", + "MYR", + "MZN", + "XPF", + "NGN", + "NIO", + "NPR", + "OMR", + "PEN", + "PGK", + "PHP", + "PKR", + "PLN", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SRD", + "SSP", + "STD", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TWD", + "TZS", + "UAH", + "UGX", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "YER", + "ZMW", + "ZWL", + "HRK", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "CustomCategorySet": { + "docs": undefined, + "properties": { + "incoming": { + "type": "list<string>", + }, + "outgoing": { + "type": "list<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "DocumentStatus": { + "docs": "An enumeration.", + "enum": [ + "queued", + "processing", + "processed", + "failed", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "EditableTxProp": { + "enum": [ + "logo", + "website", + "merchant", + "merchant_id", + "location", + "person", + "transaction_type", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "EnrichedTransaction": { + "docs": undefined, + "properties": { + "categories": { + "type": "optional<Categories>", + }, + "created_at": { + "docs": "The timestamp of when the account holder was created.", + "type": "datetime", + }, + "entities": { + "type": "optional<Entities>", + }, + "error": { + "type": "optional<TransactionError>", + }, + "id": { + "docs": "A unique identifier for the transaction. If two transactions are submitted with the same `id` the most recent one will replace the previous one.", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "location": { + "type": "optional<Location>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "EnrichmentResult": { + "docs": undefined, + "properties": { + "transactions": { + "docs": "A list of enriched transactions resulting from the enrichment of this batch.", + "type": "list<EnrichedTransaction>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Entities": { + "docs": "Entities found by identity identification", + "properties": { + "counterparty": { + "type": "optional<Counterparty>", + }, + "intermediaries": { + "type": "optional<list<Intermediary>>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Entity": { + "docs": undefined, + "properties": { + "id": { + "docs": "The unique UUID identifier of the entity", + "type": "optional<string>", + }, + "logo": { + "docs": "Logo's URL", + "type": "optional<string>", + }, + "mccs": { + "docs": "A list of [Merchant Category Codes](https://en.wikipedia.org/wiki/Merchant_category_code)", + "type": "optional<list<integer>>", + }, + "name": { + "docs": "The name of the entity", + "type": "optional<string>", + }, + "website": { + "docs": "The website URL of the entity", + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "EntryType": { + "docs": "An enumeration.", + "enum": [ + "incoming", + "outgoing", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "Filter": { + "type": "list<action>", + }, + "FilterModel": { + "type": "Filter", + }, + "FnCall": { + "discriminated": false, + "docs": undefined, + "encoding": undefined, + "source": { + "openapi": "../openapi.yml", + }, + "union": [ + { + "type": "FnCall&&", + }, + { + "type": "FnCall||", + }, + { + "type": "FnCall==", + }, + { + "type": "FnCall+", + }, + { + "type": "FnCall-", + }, + { + "type": "FnCall*", + }, + { + "type": "FnCall/", + }, + { + "type": "FnCall//", + }, + { + "type": "FnCall<", + }, + { + "type": "FnCall<=", + }, + { + "type": "FnCall>", + }, + { + "type": "FnCall>=", + }, + { + "type": "FnCall!", + }, + { + "type": "FnCallIsSubstring", + }, + { + "type": "FnCallStartsWith", + }, + { + "type": "FnCallEndsWith", + }, + { + "type": "FnCallToLower", + }, + { + "type": "FnCallToUpper", + }, + { + "type": "FnCallHasLabel", + }, + { + "type": "FnCallHasMcc", + }, + { + "type": "FnCallGet", + }, + ], + }, + "FnCall!": { + "docs": undefined, + "properties": { + "!": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall&&": { + "docs": undefined, + "properties": { + "&&": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall*": { + "docs": undefined, + "properties": { + "*": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall+": { + "docs": undefined, + "properties": { + "+": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall-": { + "docs": undefined, + "properties": { + "-": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall/": { + "docs": undefined, + "properties": { + "/": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall//": { + "docs": undefined, + "properties": { + "//": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall<": { + "docs": undefined, + "properties": { + "<": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall<=": { + "docs": undefined, + "properties": { + "<=": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall==": { + "docs": undefined, + "properties": { + "==": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall>": { + "docs": undefined, + "properties": { + ">": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall>=": { + "docs": undefined, + "properties": { + ">=": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallEndsWith": { + "docs": undefined, + "properties": { + "ends_with": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallGet": { + "docs": undefined, + "properties": { + "get": { + "type": "properties", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallHasLabel": { + "docs": undefined, + "properties": { + "has_label": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallHasMcc": { + "docs": undefined, + "properties": { + "has_mcc": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallIsSubstring": { + "docs": undefined, + "properties": { + "is_substring": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallStartsWith": { + "docs": undefined, + "properties": { + "starts_with": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallToLower": { + "docs": undefined, + "properties": { + "to_lower": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallToUpper": { + "docs": undefined, + "properties": { + "to_upper": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall||": { + "docs": undefined, + "properties": { + "||": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "HTTPValidationError": { + "docs": undefined, + "properties": { + "detail": { + "type": "optional<list<ValidationError>>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Intermediary": { + "docs": undefined, + "properties": { + "id": { + "docs": "The unique UUID identifier of the entity", + "type": "optional<string>", + }, + "logo": { + "docs": "Logo's URL", + "type": "optional<string>", + }, + "mccs": { + "docs": "A list of [Merchant Category Codes](https://en.wikipedia.org/wiki/Merchant_category_code)", + "type": "optional<list<integer>>", + }, + "name": { + "docs": "The name of the entity", + "type": "optional<string>", + }, + "type": { + "type": "IntermediaryType", + }, + "website": { + "docs": "The website URL of the entity", + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "IntermediaryType": { + "docs": "An enumeration.", + "enum": [ + "delivery_service", + "payment_processor", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "Location": { + "docs": undefined, + "properties": { + "raw_address": { + "docs": "An unstructured string containing the address", + "type": "optional<string>", + }, + "structured": { + "docs": "When raw is set, a structured representation of it.", + "type": "optional<LocationStructured>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "LocationInput": { + "docs": "Location of where the transaction has taken place. This can greatly improve entity identification, especially +under ambiguity.", + "properties": { + "country": { + "docs": "The country where the transaction was made in ISO 3166-2 format", + "type": "Country", + }, + "raw_address": { + "docs": "An unstructured string containing the address", + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "LocationStructured": { + "docs": undefined, + "properties": { + "apple_maps_url": { + "docs": "A URL link to view the location on Apple Maps", + "type": "optional<string>", + }, + "city": { + "docs": "The city where the location is situated", + "type": "optional<string>", + }, + "country": { + "docs": "The full name of the country", + "type": "optional<string>", + }, + "country_code": { + "docs": "The country code of the location in ISO 3166-2 format", + "type": "optional<string>", + }, + "google_maps_url": { + "docs": "A URL link to view the location on Google Maps", + "type": "optional<string>", + }, + "latitude": { + "docs": "The latitude coordinate of the location", + "type": "optional<double>", + }, + "longitude": { + "docs": "The longitude coordinate of the location", + "type": "optional<double>", + }, + "postcode": { + "docs": "The postal code or ZIP code of the location", + "type": "optional<string>", + }, + "state": { + "docs": "The state or region of the location", + "type": "optional<string>", + }, + "store_number": { + "docs": "A unique identifier for a specific store or branch, if applicable", + "type": "optional<string>", + }, + "street": { + "docs": "The street name and number of the location", + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ModifyLabels": { + "discriminated": false, + "docs": undefined, + "encoding": undefined, + "source": { + "openapi": "../openapi.yml", + }, + "union": [ + { + "type": "ModifyLabelsAddLabel", + }, + { + "type": "ModifyLabelsRemoveLabel", + }, + { + "type": "ModifyLabelsSetLabels", + }, + { + "type": "ModifyLabelsAddMcc", + }, + { + "type": "ModifyLabelsRemoveMcc", + }, + { + "type": "ModifyLabelsSetMcc", + }, + ], + }, + "ModifyLabelsAddLabel": { + "docs": undefined, + "properties": { + "add_label": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ModifyLabelsAddMcc": { + "docs": undefined, + "properties": { + "add_mcc": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ModifyLabelsRemoveLabel": { + "docs": undefined, + "properties": { + "remove_label": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ModifyLabelsRemoveMcc": { + "docs": undefined, + "properties": { + "remove_mcc": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ModifyLabelsSetLabels": { + "docs": undefined, + "properties": { + "set_labels": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ModifyLabelsSetMcc": { + "docs": undefined, + "properties": { + "set_mcc": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "PagedResponseAccountHolderExternal": { + "docs": undefined, + "properties": { + "data": { + "type": "list<AccountHolderExternal>", + }, + "next_cursor": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "PagedResponseBankStatement": { + "docs": undefined, + "properties": { + "data": { + "type": "list<BankStatement>", + }, + "next_cursor": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "PagedResponseBatch": { + "docs": undefined, + "properties": { + "data": { + "type": "list<Batch>", + }, + "next_cursor": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "PagedResponseReport": { + "docs": undefined, + "properties": { + "data": { + "type": "list<Report>", + }, + "next_cursor": { + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "PagedResponseTransaction": { + "docs": undefined, + "properties": { + "data": { + "type": "list<Transaction>", + }, + "next_cursor": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "PagedResponseWebhook": { + "docs": undefined, + "properties": { + "data": { + "type": "list<Webhook>", + }, + "next_cursor": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Recurrence": { + "docs": "The `Recurrence` object represents the recurrence pattern of a transaction. It provides information about +whether a transaction is a one-time event or a part of a recurring series.", + "properties": { + "type": { + "docs": "Whether the transaction is a one-time transfer `one-off`, regularly with varying pricing `recurring` or with fixed pricing `subscription`", + "type": "RecurrenceType", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "RecurrenceGroup": { + "docs": undefined, + "properties": { + "average_amount": { + "docs": "The average amount per transaction in this group", + "type": "double", + }, + "categories": { + "docs": "Categories of the transactions in the recurrence group", + "type": "Categories", + }, + "counterparty": { + "docs": "Counterparty of the transactions", + "type": "Counterparty", + }, + "end_date": { + "docs": "The date of the most recent transaction in the group", + "type": "string", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "id": { + "docs": "A unique UUID identifier for the group", + "type": "string", + }, + "periodicity": { + "docs": "A human-readable description of the transaction frequency", + "type": "RecurrencePeriodicity", + }, + "periodicity_in_days": { + "docs": "The estimated number of days between transactions in this group", + "type": "double", + }, + "start_date": { + "docs": "The date of the oldest transaction in the group", + "type": "string", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "total_amount": { + "docs": "The sum of all transaction amounts in this group", + "type": "double", + }, + "transaction_ids": { + "docs": "Transactions in this recurrence group", + "type": "list<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "RecurrencePeriodicity": { + "docs": "An enumeration.", + "enum": [ + "daily", + "weekly", + "bi_weekly", + "monthly", + "bi_monthly", + "quarterly", + "semi_yearly", + "yearly", + "other", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "RecurrenceType": { + "docs": "An enumeration.", + "enum": [ + "recurring", + "subscription", + { + "name": "OneOff", + "value": "one off", + }, + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "Report": { + "docs": undefined, + "properties": { + "created_at": { + "docs": "The date and time when the report was created.", + "type": "datetime", + }, + "description": { + "docs": "A description of what is wrong in the transaction", + "type": "string", + }, + "fields": { + "docs": "A list of the fields that are incorrect", + "type": "list<string>", + }, + "id": { + "docs": "A generated unique identifier for the report.", + "type": "string", + }, + "rejection_reason": { + "docs": "An explanation of why the report was rejected", + "type": "optional<string>", + }, + "status": { + "docs": "The status of the report. + +* `open`: a newly created report +* `pending`: the report is being investigated +* `rejected`: the original enrichment output was deemed correct or we couldn't resolve it, check `rejection_reason` +* `resolved`: the issue has been resolved", + "type": "ReportStatus", + }, + "transaction_id": { + "docs": "The unique identifier of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ReportStatus": { + "docs": "An enumeration.", + "enum": [ + "open", + "pending", + "resolved", + "rejected", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "StatementInfo": { + "docs": undefined, + "properties": { + "account_holder": { + "type": "optional<AccountHolder>", + }, + "accounts": { + "type": "optional<list<Account>>", + }, + "end_date": { + "type": "optional<string>", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "institution": { + "type": "optional<string>", + }, + "start_date": { + "type": "optional<string>", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "SyncEnrichmentOutput": { + "docs": undefined, + "properties": { + "transactions": { + "docs": "A list of enriched transactions resulting from the enrichment of this batch.", + "type": "list<EnrichedTransaction>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Transaction": { + "docs": undefined, + "properties": { + "account_holder_id": { + "docs": "The unique ID of the account holder of the transaction", + "type": "optional<string>", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "amount": { + "docs": "The amount of the transaction in the `currency`. Must be a positive value. For example, if the `currency` is USD, then it's the amount in dollars.", + "type": "double", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": 0, + "multipleOf": undefined, + }, + }, + "categories": { + "type": "optional<Categories>", + }, + "created_at": { + "docs": "The timestamp of when the account holder was created.", + "type": "datetime", + }, + "currency": { + "docs": "The currency of the transaction in ISO 4217 format", + "type": "Currency", + }, + "date": { + "docs": "The date that the transaction was posted. Uses ISO 8601 format (YYYY-MM-DD)", + "type": "string", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "description": { + "docs": "The description string of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": 1024, + "minLength": 0, + "pattern": undefined, + }, + }, + "entities": { + "type": "optional<Entities>", + }, + "entry_type": { + "docs": "The direction of the flow of the money from the perspective of the account holder. `outgoing` to represent money leaving the account, such as purchases or fees, while `incoming` represents money entering the account, such as income or refunds.", + "type": "EntryType", + }, + "error": { + "type": "optional<TransactionError>", + }, + "id": { + "docs": "A unique identifier of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "location": { + "type": "optional<Location>", + }, + "recurrence": { + "type": "optional<Recurrence>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "TransactionError": { + "docs": undefined, + "properties": { + "code": { + "type": "TransactionErrorCode", + }, + "message": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "TransactionErrorCode": { + "docs": "An enumeration.", + "enum": [ + "account_holder_not_found", + "internal_error", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "TransactionInput": { + "docs": undefined, + "properties": { + "account_holder_id": { + "docs": "The unique ID of the account holder. Unsetting it will disable [categorization](./docs/v3/enrichment/entities).", + "type": "string", + }, + "amount": { + "docs": "The amount of the transaction in the `currency`. Must be a positive value. For example, if the `currency` is USD, then it's the amount in dollars.", + "type": "double", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": 0, + "multipleOf": undefined, + }, + }, + "currency": { + "docs": "The currency of the transaction in ISO 4217 format", + "type": "Currency", + }, + "date": { + "docs": "The date that the transaction was posted. Uses ISO 8601 format (YYYY-MM-DD)", + "type": "string", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "description": { + "docs": "The description string of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": 1024, + "minLength": 0, + "pattern": undefined, + }, + }, + "entry_type": { + "docs": "The direction of the flow of the money from the perspective of the account holder. `outgoing` to represent money leaving the account, such as purchases or fees, while `incoming` represents money entering the account, such as income or refunds.", + "type": "EntryType", + }, + "id": { + "docs": "A unique identifier of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "location": { + "type": "optional<LocationInput>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ValidationError": { + "docs": undefined, + "properties": { + "loc": { + "type": "list<ValidationErrorLocItem>", + }, + "msg": "string", + "type": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ValidationErrorLocItem": { + "discriminated": false, + "docs": undefined, + "encoding": undefined, + "source": { + "openapi": "../openapi.yml", + }, + "union": [ + "string", + "integer", + ], + }, + "Webhook": { + "docs": undefined, + "properties": { + "created_at": { + "docs": "The date and time when the webhook was created.", + "type": "datetime", + }, + "enabled": { + "docs": "Whether the webhook is enabled or not.", + "type": "boolean", + }, + "events": { + "docs": "A list of events that this webhook subscribes to", + "type": "list<WebhookEventsItem>", + }, + "id": { + "docs": "A generated unique identifier for the webhook", + "type": "string", + }, + "token": { + "docs": "A secret string used to authenticate the webhook. This value will be included in the `X-Ntropy-Token` header when sending requests to the webhook", + "type": "optional<string>", + "validation": { + "format": undefined, + "maxLength": 128, + "minLength": undefined, + "pattern": undefined, + }, + }, + "url": { + "docs": "The URL of the webhook", + "type": "string", + "validation": { + "format": "uri", + "maxLength": 1024, + "minLength": 1, + "pattern": undefined, + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "WebhookEventsItem": { + "enum": [ + { + "name": "ReportsResolved", + "value": "reports.resolved", + }, + { + "name": "ReportsRejected", + "value": "reports.rejected", + }, + { + "name": "ReportsPending", + "value": "reports.pending", + }, + { + "name": "BankStatementsCompleted", + "value": "bank_statements.completed", + }, + { + "name": "BankStatementsError", + "value": "bank_statements.error", + }, + { + "name": "BatchesCompleted", + "value": "batches.completed", + }, + { + "name": "BatchesError", + "value": "batches.error", + }, + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "action": { + "discriminated": false, + "docs": undefined, + "encoding": undefined, + "source": { + "openapi": "../openapi.yml", + }, + "union": [ + { + "type": "if", + }, + { + "type": "ModifyLabels", + }, + { + "type": "set", + }, + ], + }, + "expression": { + "discriminated": false, + "docs": undefined, + "encoding": undefined, + "source": { + "openapi": "../openapi.yml", + }, + "union": [ + "boolean", + "string", + "double", + "FnCall", + ], + }, + "if": { + "docs": undefined, + "properties": { + "else": { + "type": "optional<list<action>>", + }, + "if": { + "type": "expression", + }, + "then": { + "type": "optional<list<action>>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "properties": { + "enum": [ + "logo", + "website", + "merchant", + "description", + "merchant_id", + "location", + "person", + "transaction_type", + "amount", + "entry_type", + "account_holder_type", + "account_holder_id", + "account_holder_name", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "set": { + "docs": undefined, + "properties": { + "set": { + "type": "EditableTxProp", + }, + "to": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + }, + "rawContents": "errors: + GetTransactionV3TransactionsIdGetRequestNotFoundError: + status-code: 404 + type: unknown + docs: Transaction with the provided id not found. + GetTransactionV3TransactionsIdGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + DeleteTransactionV3TransactionsIdDeleteRequestNotFoundError: + status-code: 404 + type: unknown + docs: Transaction with the provided id not found. + DeleteTransactionV3TransactionsIdDeleteRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + ListTransactionsV3TransactionsGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + PostTransactionsV3TransactionsPostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + SetTransactionAhV3TransactionsIdAssignPostRequestNotFoundError: + status-code: 404 + type: unknown + docs: Transaction or account holder with the provided id not found. + SetTransactionAhV3TransactionsIdAssignPostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetBatchesV3BatchesGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + PostBatchV3BatchesPostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetSingleBatchV3BatchesIdGetRequestNotFoundError: + status-code: 404 + type: unknown + docs: Batch with the provided id not found. + GetSingleBatchV3BatchesIdGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetBatchResultsV3BatchesIdResultsGetRequestNotFoundError: + status-code: 404 + type: unknown + docs: Batch with the provided id not found. + GetBatchResultsV3BatchesIdResultsGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetBankStatementsV3BankStatementsGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + PostBankStatementV3BankStatementsPostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetBankStatementV3BankStatementsIdGetRequestNotFoundError: + status-code: 404 + type: unknown + docs: Bank statement with the provided id not found. + GetBankStatementV3BankStatementsIdGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + DeleteBankStatementV3BankStatementsIdDeleteRequestNotFoundError: + status-code: 404 + type: unknown + docs: Bank statement with the provided id not found. + DeleteBankStatementV3BankStatementsIdDeleteRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetBankStatementStatementInfoV3BankStatementsIdOverviewPostRequestNotFoundError: + status-code: 404 + type: unknown + docs: Bank statement with the provided id not found. + GetBankStatementStatementInfoV3BankStatementsIdOverviewPostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetBankStatementResultV3BankStatementsIdResultsGetRequestNotFoundError: + status-code: 404 + type: unknown + docs: Bank statement with the provided id not found. + GetBankStatementResultV3BankStatementsIdResultsGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetAccountHolderV3AccountHoldersIdGetRequestNotFoundError: + status-code: 404 + type: unknown + docs: Account holder with the provided id not found. + GetAccountHolderV3AccountHoldersIdGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + DeleteAccountHolderV3AccountHoldersIdDeleteRequestNotFoundError: + status-code: 404 + type: unknown + docs: Account holder with the provided id not found. + DeleteAccountHolderV3AccountHoldersIdDeleteRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetAccountHoldersV3AccountHoldersGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + CreateAccountHolderV3AccountHoldersPostRequestBadRequestError: + status-code: 400 + type: unknown + docs: Account holder with the provided id already exists. + CreateAccountHolderV3AccountHoldersPostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetAccountHolderRecurringPaymentsV3AccountHoldersIdRecurringGroupsPostRequestNotFoundError: + status-code: 404 + type: unknown + docs: Account holder with the provided id not found. + GetAccountHolderRecurringPaymentsV3AccountHoldersIdRecurringGroupsPostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetWebhooksV3WebhooksGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + PostWebhookV3WebhooksPostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetWebhookV3WebhooksIdGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + DeleteWebhookV3WebhooksIdDeleteRequestNotFoundError: + status-code: 404 + type: unknown + docs: Webhook with the provided id not found. + DeleteWebhookV3WebhooksIdDeleteRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + PatchWebhookV3WebhooksIdPatchRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + FilterGetV3RulesGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + FilterPostV3RulesPostRequestBadRequestError: + status-code: 400 + type: unknown + docs: Provided ruleset has invalid structure + FilterPostV3RulesPostRequestContentTooLargeError: + status-code: 413 + type: unknown + docs: Ruleset was larger than 50KiB + FilterPostV3RulesPostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + FilterAppendV3RulesAppendPostRequestBadRequestError: + status-code: 400 + type: unknown + docs: Provided rule has invalid structure + FilterAppendV3RulesAppendPostRequestContentTooLargeError: + status-code: 413 + type: unknown + docs: Ruleset after append was larger than 50KiB + FilterAppendV3RulesAppendPostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + FilterDeleteV3RulesIndexDeleteRequestBadRequestError: + status-code: 400 + type: unknown + docs: Provided index does not exist in ruleset + FilterDeleteV3RulesIndexDeleteRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + FilterPatchV3RulesIndexPatchRequestBadRequestError: + status-code: 400 + type: unknown + docs: Provided index does not exist in ruleset + FilterPatchV3RulesIndexPatchRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetReportsV3ReportsGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + PostReportV3ReportsPostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetReportV3ReportsIdGetRequestNotFoundError: + status-code: 404 + type: unknown + docs: Report with the provided id not found. + GetReportV3ReportsIdGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + DeleteReportV3ReportsIdDeleteRequestNotFoundError: + status-code: 404 + type: unknown + docs: Report with the provided id not found. + DeleteReportV3ReportsIdDeleteRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + GetCategorySetV3CategoriesAccountHolderTypeGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + CustomCategoriesPostV3CategoriesAccountHolderTypePostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + DeleteCustomCategorySetV3CategoriesAccountHolderTypeResetPostRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + SearchEntityV3EntitiesLookupGetRequestBadRequestError: + status-code: 400 + type: unknown + docs: Bad request. + SearchEntityV3EntitiesLookupGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + SearchEntityV3EntitiesLookupGetRequestLockedError: + status-code: 423 + type: unknown + docs: Not enough credits. + GetEntityByIdV3EntitiesIdGetRequestBadRequestError: + status-code: 400 + type: unknown + docs: Bad request. + GetEntityByIdV3EntitiesIdGetRequestNotFoundError: + status-code: 404 + type: unknown + docs: Entity does not exist for ID + GetEntityByIdV3EntitiesIdGetRequestUnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} +types: + Account: + properties: + type: + type: optional<string> + number: + type: optional<string> + opening_balance: + type: optional<double> + closing_balance: + type: optional<double> + iso_currency_code: + type: optional<string> + source: + openapi: ../openapi.yml + AccountHolder: + properties: + type: + type: optional<AccountType> + name: + type: optional<string> + address: + type: optional<Address> + source: + openapi: ../openapi.yml + AccountHolderExternal: + properties: + id: + type: string + docs: The unique ID of the account holder of the transaction + validation: + minLength: 1 + type: + type: AccountHolderType + docs: 'The type of the account holder. ' + name: + type: optional<string> + docs: The name of the account holder + created_at: + type: datetime + docs: The timestamp of when the account holder was created. + source: + openapi: ../openapi.yml + AccountHolderType: + enum: + - consumer + - business + docs: An enumeration. + source: + openapi: ../openapi.yml + AccountType: + enum: + - consumer + - business + docs: An enumeration. + source: + openapi: ../openapi.yml + AccountingCategory: + enum: + - value: operational expenses + name: OperationalExpenses + - value: cost of goods sold + name: CostOfGoodsSold + - revenue + - financing + - taxes + docs: An enumeration. + source: + openapi: ../openapi.yml + ActionModel: + type: action + Address: + properties: + street: + type: optional<string> + postcode: + type: optional<string> + city: + type: optional<string> + state: + type: optional<string> + country: + type: optional<string> + source: + openapi: ../openapi.yml + BankStatement: + docs: Represents a bank statement with details about the file and its status. + properties: + id: + type: string + docs: A unique identifier for the bank statement job. + name: + type: optional<string> + docs: The name of the bank statement file, if available. + status: + type: BankStatementStatus + docs: The current status of the document. + created_at: + type: datetime + docs: The date and time when the job was created. + file: + type: BankStatementFile + docs: Information about the bank statement file being processed. + error: + type: optional<BankStatementError> + source: + openapi: ../openapi.yml + BankStatementAccount: + properties: + number: + type: optional<string> + docs: The account number, if available. + opening_balance: + type: optional<double> + docs: The opening balance of the account for the statement period. + closing_balance: + type: optional<double> + docs: The closing balance of the account for the statement period. + start_date: + type: optional<string> + docs: The start date of the statement period. + validation: + format: date + end_date: + type: optional<string> + docs: The end date of the statement period. + validation: + format: date + is_balance_reconciled: + type: optional<boolean> + docs: Indicates whether the balance has been reconciled. + total_incoming: + type: optional<double> + docs: The sum of amounts of all incoming transactions. + total_outgoing: + type: optional<double> + docs: The sum of amounts of all outgoing transactions. + transactions: + docs: List of transactions for this account. + type: list<BankStatementTransaction> + source: + openapi: ../openapi.yml + BankStatementError: + properties: + code: + type: BankStatementErrorCode + message: string + source: + openapi: ../openapi.yml + BankStatementErrorCode: + enum: + - invalid_bank_statement + - internal_error + docs: An enumeration. + source: + openapi: ../openapi.yml + BankStatementFile: + properties: + no_pages: + type: integer + docs: The number of pages in the bank statement file. + size: + type: optional<integer> + docs: The size of the bank statement file in bytes, if available. + source: + openapi: ../openapi.yml + BankStatementResults: + properties: + accounts: + docs: List of accounts in the bank statement. + type: list<BankStatementAccount> + source: + openapi: ../openapi.yml + BankStatementStatus: + enum: + - processing + - completed + - error + docs: An enumeration. + source: + openapi: ../openapi.yml + BankStatementTransaction: + properties: + id: + type: string + docs: A unique identifier of the transaction + validation: + minLength: 1 + description: + type: string + docs: The description string of the transaction + validation: + minLength: 0 + maxLength: 1024 + date: + type: string + docs: >- + The date that the transaction was posted. Uses ISO 8601 format + (YYYY-MM-DD) + validation: + format: date + amount: + type: double + docs: >- + The amount of the transaction in the `currency`. Must be a positive + value. For example, if the `currency` is USD, then it's the amount in + dollars. + validation: + min: 0 + entry_type: + type: EntryType + docs: >- + The direction of the flow of the money from the perspective of the + account holder. `outgoing` to represent money leaving the account, + such as purchases or fees, while `incoming` represents money entering + the account, such as income or refunds. + currency: + type: Currency + docs: The currency of the transaction in ISO 4217 format + running_balance: + type: optional<double> + docs: The account's balance when this transaction was performed + source: + openapi: ../openapi.yml + Batch: + docs: >- + The `Batch` object represents the status and progress of an asynchronous + batch enrichment job. + properties: + id: + type: string + docs: A unique identifier for the batch. + status: + type: BatchStatus + docs: >- + The current status of the batch. A batch will error if at least one of + the transactions contains an error. + created_at: + type: datetime + docs: The timestamp of when the batch was created. + updated_at: + type: datetime + docs: The timestamp of when the batch was last updated. + progress: + type: integer + docs: The number of transactions processed so far. + total: + type: integer + docs: The total number of transactions in the batch. + source: + openapi: ../openapi.yml + BatchResult: + docs: >- + The `BatchResult` object represents the result of a batch enrichment job, + including its status and + + enriched transactions. + properties: + id: + type: string + docs: A unique identifier for the batch. + total: + type: integer + docs: The total number of transactions in the batch result. + status: + type: BatchStatus + docs: The current status of the batch job. + results: + type: EnrichmentResult + source: + openapi: ../openapi.yml + BatchStatus: + enum: + - processing + - completed + - error + docs: An enumeration. + source: + openapi: ../openapi.yml + Categories: + properties: + general: + type: optional<string> + docs: >- + The category of the transaction. View the valid set of categories for + your key [here](./docs/v3/enrichment/entities). + accounting: + type: optional<AccountingCategory> + docs: >- + The corresponding accounting category. Only available for `business` + transactions. + source: + openapi: ../openapi.yml + CategoryConfidence: + enum: + - high + - medium + - low + - unknown + docs: An enumeration. + source: + openapi: ../openapi.yml + CategorySet: + properties: + incoming: + type: list<string> + outgoing: + type: list<string> + source: + openapi: ../openapi.yml + Counterparty: + properties: + id: + type: optional<string> + docs: The unique UUID identifier of the entity + name: + type: optional<string> + docs: The name of the entity + website: + type: optional<string> + docs: The website URL of the entity + logo: + type: optional<string> + docs: Logo's URL + mccs: + type: optional<list<integer>> + docs: >- + A list of [Merchant Category + Codes](https://en.wikipedia.org/wiki/Merchant_category_code) + type: + type: CounterpartyType + source: + openapi: ../openapi.yml + CounterpartyType: + enum: + - person + - organization + docs: An enumeration. + source: + openapi: ../openapi.yml + Country: + enum: + - AD + - AE + - AF + - AG + - AI + - AL + - AM + - AO + - AR + - AS + - AT + - AU + - AW + - AZ + - BA + - BB + - BD + - BE + - BF + - BG + - BH + - BI + - BJ + - BL + - BM + - BN + - BO + - BQ + - BR + - BS + - BT + - BV + - BW + - BY + - BZ + - CA + - CC + - CD + - CF + - CG + - CH + - CI + - CK + - CL + - CM + - CN + - CO + - CR + - CU + - CV + - CW + - CX + - CY + - CZ + - DE + - DJ + - DK + - DM + - DO + - DZ + - EC + - EE + - EG + - EH + - ER + - ES + - ET + - FI + - FJ + - FK + - FM + - FR + - GA + - GB + - GD + - GE + - GF + - GG + - GH + - GI + - GL + - GM + - GN + - GP + - GQ + - GR + - GS + - GT + - GU + - GW + - GY + - HK + - HM + - HN + - HR + - HT + - HU + - ID + - IE + - IL + - IM + - IN + - IO + - IQ + - IR + - IS + - IT + - JE + - JM + - JO + - JP + - KE + - KG + - KH + - KI + - KM + - KN + - KP + - KR + - KW + - KY + - KZ + - LA + - LB + - LC + - LI + - LK + - LR + - LS + - LT + - LU + - LV + - LY + - MA + - MC + - MD + - ME + - MF + - MG + - MH + - MK + - ML + - MM + - MN + - MO + - MP + - MQ + - MR + - MS + - MT + - MU + - MV + - MW + - MX + - MY + - MZ + - NA + - NC + - NE + - NF + - NG + - NI + - NL + - 'NO' + - NP + - NR + - NU + - NZ + - OM + - PA + - PE + - PF + - PG + - PH + - PK + - PL + - PM + - PN + - PR + - PS + - PT + - PW + - PY + - QA + - RE + - RO + - RS + - RU + - RW + - SA + - SB + - SC + - SD + - SE + - SG + - SH + - SI + - SJ + - SK + - SL + - SM + - SN + - SO + - SR + - SS + - ST + - SV + - SX + - SY + - SZ + - TC + - TD + - TG + - TH + - TJ + - TK + - TL + - TM + - TN + - TO + - TR + - TT + - TV + - TW + - TZ + - UA + - UG + - UM + - US + - UY + - UZ + - VC + - VE + - VG + - VI + - VN + - VU + - WF + - WS + - YE + - YT + - ZA + - ZM + - ZW + docs: An enumeration. + source: + openapi: ../openapi.yml + Currency: + enum: + - EUR + - AED + - AFN + - XCD + - ALL + - AMD + - AOA + - ARS + - USD + - AUD + - AWG + - AZN + - BAM + - BBD + - BDT + - XOF + - BGN + - BHD + - BIF + - BMD + - BND + - BOB + - BRL + - BSD + - INR + - NOK + - BWP + - BYR + - BZD + - CAD + - CDF + - XAF + - CHF + - NZD + - CLP + - CNY + - COP + - CRC + - CUP + - CVE + - ANG + - CZK + - DJF + - DKK + - DOP + - DZD + - EGP + - MAD + - ERN + - ETB + - FJD + - FKP + - GBP + - GEL + - GHS + - GIP + - GMD + - GNF + - GTQ + - GYD + - HKD + - HNL + - HUF + - IDR + - ILS + - IQD + - IRR + - ISK + - JMD + - JOD + - JPY + - KES + - KGS + - KHR + - KMF + - KPW + - KRW + - KWD + - KYD + - KZT + - LAK + - LBP + - LKR + - LRD + - ZAR + - LYD + - MDL + - MGA + - MKD + - MMK + - MNT + - MOP + - MRO + - MUR + - MVR + - MWK + - MXN + - MYR + - MZN + - XPF + - NGN + - NIO + - NPR + - OMR + - PEN + - PGK + - PHP + - PKR + - PLN + - PYG + - QAR + - RON + - RSD + - RUB + - RWF + - SAR + - SBD + - SCR + - SDG + - SEK + - SGD + - SHP + - SLL + - SOS + - SRD + - SSP + - STD + - SYP + - SZL + - THB + - TJS + - TMT + - TND + - TOP + - TRY + - TTD + - TWD + - TZS + - UAH + - UGX + - UYU + - UZS + - VEF + - VND + - VUV + - WST + - YER + - ZMW + - ZWL + - HRK + docs: An enumeration. + source: + openapi: ../openapi.yml + CustomCategorySet: + properties: + incoming: + type: list<string> + outgoing: + type: list<string> + source: + openapi: ../openapi.yml + DocumentStatus: + enum: + - queued + - processing + - processed + - failed + docs: An enumeration. + source: + openapi: ../openapi.yml + EnrichedTransaction: + properties: + entities: + type: optional<Entities> + categories: + type: optional<Categories> + location: + type: optional<Location> + error: + type: optional<TransactionError> + created_at: + type: datetime + docs: The timestamp of when the account holder was created. + id: + type: string + docs: >- + A unique identifier for the transaction. If two transactions are + submitted with the same `id` the most recent one will replace the + previous one. + validation: + minLength: 1 + source: + openapi: ../openapi.yml + EnrichmentResult: + properties: + transactions: + docs: >- + A list of enriched transactions resulting from the enrichment of this + batch. + type: list<EnrichedTransaction> + source: + openapi: ../openapi.yml + Entities: + docs: Entities found by identity identification + properties: + counterparty: + type: optional<Counterparty> + intermediaries: + type: optional<list<Intermediary>> + source: + openapi: ../openapi.yml + Entity: + properties: + id: + type: optional<string> + docs: The unique UUID identifier of the entity + name: + type: optional<string> + docs: The name of the entity + website: + type: optional<string> + docs: The website URL of the entity + logo: + type: optional<string> + docs: Logo's URL + mccs: + type: optional<list<integer>> + docs: >- + A list of [Merchant Category + Codes](https://en.wikipedia.org/wiki/Merchant_category_code) + source: + openapi: ../openapi.yml + EntryType: + enum: + - incoming + - outgoing + docs: An enumeration. + source: + openapi: ../openapi.yml + FilterModel: + type: Filter + HTTPValidationError: + properties: + detail: + type: optional<list<ValidationError>> + source: + openapi: ../openapi.yml + Intermediary: + properties: + id: + type: optional<string> + docs: The unique UUID identifier of the entity + name: + type: optional<string> + docs: The name of the entity + website: + type: optional<string> + docs: The website URL of the entity + logo: + type: optional<string> + docs: Logo's URL + mccs: + type: optional<list<integer>> + docs: >- + A list of [Merchant Category + Codes](https://en.wikipedia.org/wiki/Merchant_category_code) + type: + type: IntermediaryType + source: + openapi: ../openapi.yml + IntermediaryType: + enum: + - delivery_service + - payment_processor + docs: An enumeration. + source: + openapi: ../openapi.yml + Location: + properties: + raw_address: + type: optional<string> + docs: An unstructured string containing the address + structured: + type: optional<LocationStructured> + docs: When raw is set, a structured representation of it. + source: + openapi: ../openapi.yml + LocationInput: + docs: >- + Location of where the transaction has taken place. This can greatly + improve entity identification, especially + + under ambiguity. + properties: + raw_address: + type: optional<string> + docs: An unstructured string containing the address + country: + type: Country + docs: The country where the transaction was made in ISO 3166-2 format + source: + openapi: ../openapi.yml + LocationStructured: + properties: + street: + type: optional<string> + docs: The street name and number of the location + city: + type: optional<string> + docs: The city where the location is situated + state: + type: optional<string> + docs: The state or region of the location + postcode: + type: optional<string> + docs: The postal code or ZIP code of the location + country_code: + type: optional<string> + docs: The country code of the location in ISO 3166-2 format + country: + type: optional<string> + docs: The full name of the country + latitude: + type: optional<double> + docs: The latitude coordinate of the location + longitude: + type: optional<double> + docs: The longitude coordinate of the location + google_maps_url: + type: optional<string> + docs: A URL link to view the location on Google Maps + apple_maps_url: + type: optional<string> + docs: A URL link to view the location on Apple Maps + store_number: + type: optional<string> + docs: A unique identifier for a specific store or branch, if applicable + source: + openapi: ../openapi.yml + PagedResponseAccountHolderExternal: + properties: + next_cursor: string + data: + type: list<AccountHolderExternal> + source: + openapi: ../openapi.yml + PagedResponseBankStatement: + properties: + next_cursor: string + data: + type: list<BankStatement> + source: + openapi: ../openapi.yml + PagedResponseBatch: + properties: + next_cursor: string + data: + type: list<Batch> + source: + openapi: ../openapi.yml + PagedResponseReport: + properties: + next_cursor: + type: optional<string> + data: + type: list<Report> + source: + openapi: ../openapi.yml + PagedResponseTransaction: + properties: + next_cursor: string + data: + type: list<Transaction> + source: + openapi: ../openapi.yml + PagedResponseWebhook: + properties: + next_cursor: string + data: + type: list<Webhook> + source: + openapi: ../openapi.yml + Recurrence: + docs: >- + The `Recurrence` object represents the recurrence pattern of a + transaction. It provides information about + + whether a transaction is a one-time event or a part of a recurring series. + properties: + type: + type: RecurrenceType + docs: >- + Whether the transaction is a one-time transfer `one-off`, regularly + with varying pricing `recurring` or with fixed pricing `subscription` + source: + openapi: ../openapi.yml + RecurrenceGroup: + properties: + id: + type: string + docs: A unique UUID identifier for the group + start_date: + type: string + docs: The date of the oldest transaction in the group + validation: + format: date + end_date: + type: string + docs: The date of the most recent transaction in the group + validation: + format: date + total_amount: + type: double + docs: The sum of all transaction amounts in this group + average_amount: + type: double + docs: The average amount per transaction in this group + periodicity_in_days: + type: double + docs: The estimated number of days between transactions in this group + periodicity: + type: RecurrencePeriodicity + docs: A human-readable description of the transaction frequency + counterparty: + type: Counterparty + docs: Counterparty of the transactions + categories: + type: Categories + docs: Categories of the transactions in the recurrence group + transaction_ids: + docs: Transactions in this recurrence group + type: list<string> + source: + openapi: ../openapi.yml + RecurrencePeriodicity: + enum: + - daily + - weekly + - bi_weekly + - monthly + - bi_monthly + - quarterly + - semi_yearly + - yearly + - other + docs: An enumeration. + source: + openapi: ../openapi.yml + RecurrenceType: + enum: + - recurring + - subscription + - value: one off + name: OneOff + docs: An enumeration. + source: + openapi: ../openapi.yml + Report: + properties: + transaction_id: + type: string + docs: The unique identifier of the transaction + validation: + minLength: 1 + description: + type: string + docs: A description of what is wrong in the transaction + fields: + docs: A list of the fields that are incorrect + type: list<string> + id: + type: string + docs: A generated unique identifier for the report. + created_at: + type: datetime + docs: The date and time when the report was created. + status: + type: ReportStatus + docs: >- + The status of the report. + + + * `open`: a newly created report + + * `pending`: the report is being investigated + + * `rejected`: the original enrichment output was deemed correct or we + couldn't resolve it, check `rejection_reason` + + * `resolved`: the issue has been resolved + rejection_reason: + type: optional<string> + docs: An explanation of why the report was rejected + source: + openapi: ../openapi.yml + ReportStatus: + enum: + - open + - pending + - resolved + - rejected + docs: An enumeration. + source: + openapi: ../openapi.yml + StatementInfo: + properties: + institution: + type: optional<string> + start_date: + type: optional<string> + validation: + format: date + end_date: + type: optional<string> + validation: + format: date + account_holder: + type: optional<AccountHolder> + accounts: + type: optional<list<Account>> + source: + openapi: ../openapi.yml + SyncEnrichmentOutput: + properties: + transactions: + docs: >- + A list of enriched transactions resulting from the enrichment of this + batch. + type: list<EnrichedTransaction> + source: + openapi: ../openapi.yml + Transaction: + properties: + id: + type: string + docs: A unique identifier of the transaction + validation: + minLength: 1 + description: + type: string + docs: The description string of the transaction + validation: + minLength: 0 + maxLength: 1024 + date: + type: string + docs: >- + The date that the transaction was posted. Uses ISO 8601 format + (YYYY-MM-DD) + validation: + format: date + amount: + type: double + docs: >- + The amount of the transaction in the `currency`. Must be a positive + value. For example, if the `currency` is USD, then it's the amount in + dollars. + validation: + min: 0 + entry_type: + type: EntryType + docs: >- + The direction of the flow of the money from the perspective of the + account holder. `outgoing` to represent money leaving the account, + such as purchases or fees, while `incoming` represents money entering + the account, such as income or refunds. + currency: + type: Currency + docs: The currency of the transaction in ISO 4217 format + entities: + type: optional<Entities> + categories: + type: optional<Categories> + location: + type: optional<Location> + error: + type: optional<TransactionError> + created_at: + type: datetime + docs: The timestamp of when the account holder was created. + account_holder_id: + type: optional<string> + docs: The unique ID of the account holder of the transaction + validation: + minLength: 1 + recurrence: + type: optional<Recurrence> + source: + openapi: ../openapi.yml + TransactionError: + properties: + code: + type: TransactionErrorCode + message: string + source: + openapi: ../openapi.yml + TransactionErrorCode: + enum: + - account_holder_not_found + - internal_error + docs: An enumeration. + source: + openapi: ../openapi.yml + TransactionInput: + properties: + id: + type: string + docs: A unique identifier of the transaction + validation: + minLength: 1 + description: + type: string + docs: The description string of the transaction + validation: + minLength: 0 + maxLength: 1024 + date: + type: string + docs: >- + The date that the transaction was posted. Uses ISO 8601 format + (YYYY-MM-DD) + validation: + format: date + amount: + type: double + docs: >- + The amount of the transaction in the `currency`. Must be a positive + value. For example, if the `currency` is USD, then it's the amount in + dollars. + validation: + min: 0 + entry_type: + type: EntryType + docs: >- + The direction of the flow of the money from the perspective of the + account holder. `outgoing` to represent money leaving the account, + such as purchases or fees, while `incoming` represents money entering + the account, such as income or refunds. + currency: + type: Currency + docs: The currency of the transaction in ISO 4217 format + account_holder_id: + type: string + docs: >- + The unique ID of the account holder. Unsetting it will disable + [categorization](./docs/v3/enrichment/entities). + location: + type: optional<LocationInput> + source: + openapi: ../openapi.yml + ValidationErrorLocItem: + discriminated: false + union: + - string + - integer + source: + openapi: ../openapi.yml + ValidationError: + properties: + loc: + type: list<ValidationErrorLocItem> + msg: string + type: string + source: + openapi: ../openapi.yml + WebhookEventsItem: + enum: + - value: reports.resolved + name: ReportsResolved + - value: reports.rejected + name: ReportsRejected + - value: reports.pending + name: ReportsPending + - value: bank_statements.completed + name: BankStatementsCompleted + - value: bank_statements.error + name: BankStatementsError + - value: batches.completed + name: BatchesCompleted + - value: batches.error + name: BatchesError + source: + openapi: ../openapi.yml + Webhook: + properties: + url: + type: string + docs: The URL of the webhook + validation: + format: uri + minLength: 1 + maxLength: 1024 + events: + docs: A list of events that this webhook subscribes to + type: list<WebhookEventsItem> + token: + type: optional<string> + docs: >- + A secret string used to authenticate the webhook. This value will be + included in the `X-Ntropy-Token` header when sending requests to the + webhook + validation: + maxLength: 128 + id: + type: string + docs: A generated unique identifier for the webhook + created_at: + type: datetime + docs: The date and time when the webhook was created. + enabled: + type: boolean + docs: Whether the webhook is enabled or not. + source: + openapi: ../openapi.yml + expression: + discriminated: false + union: + - boolean + - string + - double + - FnCall + source: + openapi: ../openapi.yml + properties: + enum: + - logo + - website + - merchant + - description + - merchant_id + - location + - person + - transaction_type + - amount + - entry_type + - account_holder_type + - account_holder_id + - account_holder_name + source: + openapi: ../openapi.yml + FnCall&&: + properties: + '&&': list<expression> + source: + openapi: ../openapi.yml + FnCall||: + properties: + '||': list<expression> + source: + openapi: ../openapi.yml + FnCall==: + properties: + '==': list<expression> + source: + openapi: ../openapi.yml + FnCall+: + properties: + +: list<expression> + source: + openapi: ../openapi.yml + FnCall-: + properties: + '-': list<expression> + source: + openapi: ../openapi.yml + FnCall*: + properties: + '*': list<expression> + source: + openapi: ../openapi.yml + FnCall/: + properties: + /: list<expression> + source: + openapi: ../openapi.yml + FnCall//: + properties: + //: list<expression> + source: + openapi: ../openapi.yml + FnCall<: + properties: + <: list<expression> + source: + openapi: ../openapi.yml + FnCall<=: + properties: + <=: list<expression> + source: + openapi: ../openapi.yml + FnCall>: + properties: + '>': list<expression> + source: + openapi: ../openapi.yml + FnCall>=: + properties: + '>=': list<expression> + source: + openapi: ../openapi.yml + FnCall!: + properties: + '!': + type: expression + source: + openapi: ../openapi.yml + FnCallIsSubstring: + properties: + is_substring: list<expression> + source: + openapi: ../openapi.yml + FnCallStartsWith: + properties: + starts_with: list<expression> + source: + openapi: ../openapi.yml + FnCallEndsWith: + properties: + ends_with: list<expression> + source: + openapi: ../openapi.yml + FnCallToLower: + properties: + to_lower: + type: expression + source: + openapi: ../openapi.yml + FnCallToUpper: + properties: + to_upper: + type: expression + source: + openapi: ../openapi.yml + FnCallHasLabel: + properties: + has_label: + type: expression + source: + openapi: ../openapi.yml + FnCallHasMcc: + properties: + has_mcc: + type: expression + source: + openapi: ../openapi.yml + FnCallGet: + properties: + get: + type: properties + source: + openapi: ../openapi.yml + FnCall: + discriminated: false + union: + - type: FnCall&& + - type: FnCall|| + - type: FnCall== + - type: FnCall+ + - type: FnCall- + - type: FnCall* + - type: FnCall/ + - type: FnCall// + - type: FnCall< + - type: FnCall<= + - type: FnCall> + - type: FnCall>= + - type: FnCall! + - type: FnCallIsSubstring + - type: FnCallStartsWith + - type: FnCallEndsWith + - type: FnCallToLower + - type: FnCallToUpper + - type: FnCallHasLabel + - type: FnCallHasMcc + - type: FnCallGet + source: + openapi: ../openapi.yml + action: + discriminated: false + union: + - type: if + - type: ModifyLabels + - type: set + source: + openapi: ../openapi.yml + if: + properties: + if: + type: expression + then: + type: optional<list<action>> + else: + type: optional<list<action>> + source: + openapi: ../openapi.yml + ModifyLabelsAddLabel: + properties: + add_label: + type: expression + source: + openapi: ../openapi.yml + ModifyLabelsRemoveLabel: + properties: + remove_label: + type: expression + source: + openapi: ../openapi.yml + ModifyLabelsSetLabels: + properties: + set_labels: list<expression> + source: + openapi: ../openapi.yml + ModifyLabelsAddMcc: + properties: + add_mcc: + type: expression + source: + openapi: ../openapi.yml + ModifyLabelsRemoveMcc: + properties: + remove_mcc: + type: expression + source: + openapi: ../openapi.yml + ModifyLabelsSetMcc: + properties: + set_mcc: list<expression> + source: + openapi: ../openapi.yml + ModifyLabels: + discriminated: false + union: + - type: ModifyLabelsAddLabel + - type: ModifyLabelsRemoveLabel + - type: ModifyLabelsSetLabels + - type: ModifyLabelsAddMcc + - type: ModifyLabelsRemoveMcc + - type: ModifyLabelsSetMcc + source: + openapi: ../openapi.yml + EditableTxProp: + enum: + - logo + - website + - merchant + - merchant_id + - location + - person + - transaction_type + source: + openapi: ../openapi.yml + set: + properties: + set: + type: EditableTxProp + to: + type: expression + source: + openapi: ../openapi.yml + Filter: + type: list<action> +", + }, + "accountHolders.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Account Holder API allows you to retrieve, create and modify account holders. An account holder represents an +entity that holds an account associated with transactions. An account holder can either be a business or an individual +person - consumer. + +The fields chosen for an account holder are used by our enrichment process and can dramatically improve the accuracy +of the results. + +Complete guide: [Account Holders](../../../account-holders). +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Account Holders", + "endpoints": { + "createAccountHolder": { + "auth": true, + "display-name": "Create an account holder.", + "docs": undefined, + "errors": [ + "root.CreateAccountHolderV3AccountHoldersPostRequestBadRequestError", + "root.CreateAccountHolderV3AccountHoldersPostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/account_holders" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "type": "consumer", + "name": "John Doe" + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +ah = sdk.account_holders.create( + id="35b927b6-6fda-40aa-93b8-95b47c2b2cad", + type="consumer", + name="John Doe", +) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": { + "id": "id", + "type": "consumer", + }, + "response": { + "body": { + "created_at": "2024-03-30T00:00:00Z", + "id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "name": "John Doe", + "type": "consumer", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/account_holders", + "request": { + "body": { + "properties": { + "id": { + "docs": "The unique ID of the account holder of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "name": { + "docs": "The name of the account holder", + "type": "optional<string>", + }, + "type": { + "docs": "The type of the account holder. ", + "type": "root.AccountHolderType", + }, + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "AccountHolderCreate", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Successful Response", + "type": "root.AccountHolderExternal", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "deleteAccountHolder": { + "auth": true, + "display-name": "Deletes an account holder and their transactions", + "docs": "Deletes all of the transactions in the account holder's history. This operation is permanent and irreversible", + "errors": [ + "root.DeleteAccountHolderV3AccountHoldersIdDeleteRequestNotFoundError", + "root.DeleteAccountHolderV3AccountHoldersIdDeleteRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "DELETE" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +ah = sdk.account_holders.delete("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + }, + ], + "method": "DELETE", + "pagination": undefined, + "path": "/v3/account_holders/{id}", + "path-parameters": { + "id": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getAccountHolder": { + "auth": true, + "display-name": "Retrieve an account holder.", + "docs": undefined, + "errors": [ + "root.GetAccountHolderV3AccountHoldersIdGetRequestNotFoundError", + "root.GetAccountHolderV3AccountHoldersIdGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +ah = sdk.account_holders.get("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "created_at": "2024-03-30T00:00:00Z", + "id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "name": "John Doe", + "type": "consumer", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/account_holders/{id}", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.AccountHolderExternal", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getAccountHolders": { + "auth": true, + "display-name": "List all account holders.", + "docs": undefined, + "errors": [ + "root.GetAccountHoldersV3AccountHoldersGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +ah = sdk.account_holders.get("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "data": [ + { + "created_at": "2024-03-30T00:00:00Z", + "id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "name": "John Doe", + "type": "consumer", + }, + ], + "next_cursor": "XjdHaksD", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/account_holders", + "request": { + "name": "GetAccountHoldersV3AccountHoldersGetRequest", + "query-parameters": { + "created_after": { + "docs": "Only return account holders older or equal than this date", + "type": "optional<datetime>", + }, + "created_before": { + "docs": "Only return account holders newer than this date", + "type": "optional<datetime>", + }, + "cursor": { + "docs": "Starting point for the set of account holders", + "type": "optional<string>", + }, + "limit": { + "docs": "The limit of account holders to be returned", + "type": "optional<integer>", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": 50, + "min": 1, + "multipleOf": undefined, + }, + }, + }, + }, + "response": { + "docs": "Successful Response", + "type": "root.PagedResponseAccountHolderExternal", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getAccountHolder: + path: /v3/account_holders/{id} + method: GET + auth: true + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve an account holder. + response: + docs: Successful Response + type: root.AccountHolderExternal + errors: + - root.GetAccountHolderV3AccountHoldersIdGetRequestNotFoundError + - >- + root.GetAccountHolderV3AccountHoldersIdGetRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + type: consumer + name: John Doe + created_at: '2024-03-30T00:00:00Z' + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: >- + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + ah = + sdk.account_holders.get("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") + deleteAccountHolder: + path: /v3/account_holders/{id} + method: DELETE + auth: true + docs: >- + Deletes all of the transactions in the account holder's history. This + operation is permanent and irreversible + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Deletes an account holder and their transactions + errors: + - root.DeleteAccountHolderV3AccountHoldersIdDeleteRequestNotFoundError + - >- + root.DeleteAccountHolderV3AccountHoldersIdDeleteRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "DELETE" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: >- + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + ah = + sdk.account_holders.delete("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") + getAccountHolders: + path: /v3/account_holders + method: GET + auth: true + source: + openapi: ../openapi.yml + display-name: List all account holders. + request: + name: GetAccountHoldersV3AccountHoldersGetRequest + query-parameters: + created_after: + type: optional<datetime> + docs: Only return account holders older or equal than this date + created_before: + type: optional<datetime> + docs: Only return account holders newer than this date + cursor: + type: optional<string> + docs: Starting point for the set of account holders + limit: + type: optional<integer> + docs: The limit of account holders to be returned + validation: + min: 1 + max: 50 + response: + docs: Successful Response + type: root.PagedResponseAccountHolderExternal + errors: + - >- + root.GetAccountHoldersV3AccountHoldersGetRequestUnprocessableEntityError + examples: + - response: + body: + next_cursor: XjdHaksD + data: + - id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + type: consumer + name: John Doe + created_at: '2024-03-30T00:00:00Z' + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: >- + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + ah = + sdk.account_holders.get("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") + createAccountHolder: + path: /v3/account_holders + method: POST + auth: true + source: + openapi: ../openapi.yml + display-name: Create an account holder. + request: + name: AccountHolderCreate + body: + properties: + id: + type: string + docs: The unique ID of the account holder of the transaction + validation: + minLength: 1 + type: + type: root.AccountHolderType + docs: 'The type of the account holder. ' + name: + type: optional<string> + docs: The name of the account holder + content-type: application/json + response: + docs: Successful Response + type: root.AccountHolderExternal + errors: + - root.CreateAccountHolderV3AccountHoldersPostRequestBadRequestError + - >- + root.CreateAccountHolderV3AccountHoldersPostRequestUnprocessableEntityError + examples: + - request: + id: id + type: consumer + response: + body: + id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + type: consumer + name: John Doe + created_at: '2024-03-30T00:00:00Z' + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/account_holders" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "type": "consumer", + "name": "John Doe" + }]' + + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + ah = sdk.account_holders.create( + id="35b927b6-6fda-40aa-93b8-95b47c2b2cad", + type="consumer", + name="John Doe", + ) + source: + openapi: ../openapi.yml + display-name: Account Holders +docs: > + + The Account Holder API allows you to retrieve, create and modify account + holders. An account holder represents an + + entity that holds an account associated with transactions. An account holder + can either be a business or an individual + + person - consumer. + + + The fields chosen for an account holder are used by our enrichment process and + can dramatically improve the accuracy + + of the results. + + + Complete guide: [Account Holders](../../../account-holders). +", + }, + "bankStatements.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Bank Statements API allows you to manage and extract information from bank statements. We support extraction of +account holder information, account information and transaction records. Files should be uploaded in PDF format. + +During the extraction process, the bank statements undergo several status changes: +| Status | Description | +|----------|------------------------------------------------------------------------| +|processing|The upload was successful. Extraction is in progress. | +|completed |The extraction was successful. Results are available. | +|error |An error occurred during extraction. Check `error` for more information.| + + +A list of error codes for the `error` status can be found below: +| Code | Description | +|----------------------|-------------------------------------------| +|invalid_bank_statement|Failed to process file as a bank statement.| +|internal_error |Internal error. Please contact support. | + + +Complete guide: [Bank Statements](../../../bank-statements). +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Bank statements", + "endpoints": { + "deleteBankStatement": { + "auth": true, + "display-name": "Deletes a bank statement", + "docs": undefined, + "errors": [ + "root.DeleteBankStatementV3BankStatementsIdDeleteRequestNotFoundError", + "root.DeleteBankStatementV3BankStatementsIdDeleteRequestUnprocessableEntityError", + ], + "examples": [ + { + "path-parameters": { + "id": "id", + }, + }, + ], + "method": "DELETE", + "pagination": undefined, + "path": "/v3/bank_statements/{id}", + "path-parameters": { + "id": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getBankStatement": { + "auth": true, + "display-name": "Retrieve a bank statement", + "docs": undefined, + "errors": [ + "root.GetBankStatementV3BankStatementsIdGetRequestNotFoundError", + "root.GetBankStatementV3BankStatementsIdGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +bs = sdk.bank_statements.get("7f8dceac-2848-472d-b5c3-55cdbaf35a9b") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "created_at": "2024-01-01T00:00:00Z", + "error": { + "code": "invalid_bank_statement", + "message": "message", + }, + "file": { + "no_pages": 1, + "size": 4096, + }, + "id": "7f8dceac-2848-472d-b5c3-55cdbaf35a9b", + "name": "2014-01-01_2014-02-01_statement.pdf", + "status": "processing", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/bank_statements/{id}", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.BankStatement", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getBankStatementResult": { + "auth": true, + "display-name": "Retrieve the extraction results", + "docs": "Return the extracted account information and associated transactions from a bank statement PDF. The results are accessible once the statement's status is `completed`.", + "errors": [ + "root.GetBankStatementResultV3BankStatementsIdResultsGetRequestNotFoundError", + "root.GetBankStatementResultV3BankStatementsIdResultsGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b/results" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +bs = sdk.bank_statements.get("7f8dceac-2848-472d-b5c3-55cdbaf35a9b") +results = sdk.bank_statements.wait_for_results( + "7f8dceac-2848-472d-b5c3-55cdbaf35a9b" +) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "accounts": [ + { + "closing_balance": 200, + "end_date": "2024-02-01", + "is_balance_reconciled": true, + "number": "972913289", + "opening_balance": 400, + "start_date": "2024-01-01", + "total_incoming": 0, + "total_outgoing": 200, + "transactions": [ + { + "amount": 200, + "currency": "USD", + "date": "2024-03-30", + "description": "SQ* STARBUCKS NW 43RD", + "entry_type": "outgoing", + "id": "xbx8YP14g565Xk", + "running_balance": 400, + }, + ], + }, + ], + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/bank_statements/{id}/results", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.BankStatementResults", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getBankStatementStatementInfo": { + "auth": true, + "display-name": "Quickly extract account holder, institution and first account", + "docs": "Extracts account holder, bank and account information extracted from the first page of the bank statement, which is typically available before the full results. This is a synchronous call. + +Complete guide: [Overview](../../../bank-statements)", + "errors": [ + "root.GetBankStatementStatementInfoV3BankStatementsIdOverviewPostRequestNotFoundError", + "root.GetBankStatementStatementInfoV3BankStatementsIdOverviewPostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b/overview" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +overview = sdk.bank_statements.overview( + "7f8dceac-2848-472d-b5c3-55cdbaf35a9b" +) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "account_holder": { + "address": { + "city": "Victoria", + "country": "United States", + "postcode": "77901", + "state": "Texas", + "street": "601 Rosebud Avenue", + }, + "name": "John Doe", + "type": "consumer", + }, + "accounts": [ + { + "closing_balance": 1500, + "iso_currency_code": "USD", + "number": "83721", + "opening_balance": 1000, + "type": "checking", + }, + ], + "end_date": "2024-02-01", + "institution": "Well's Fargo", + "start_date": "2024-01-01", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/bank_statements/{id}/overview", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.StatementInfo", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getBankStatements": { + "auth": true, + "display-name": "List all bank statements", + "docs": "Return a list of submitted bank statements starting with the most recent one.", + "errors": [ + "root.GetBankStatementsV3BankStatementsGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/bank_statements" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +for bs in sdk.bank_statements.list().auto_paginate(): + ... ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "data": [ + { + "created_at": "2024-01-01T00:00:00Z", + "error": { + "code": "invalid_bank_statement", + "message": "message", + }, + "file": { + "no_pages": 1, + "size": 4096, + }, + "id": "7f8dceac-2848-472d-b5c3-55cdbaf35a9b", + "name": "2014-01-01_2014-02-01_statement.pdf", + "status": "processing", + }, + ], + "next_cursor": "XjdHaksD", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/bank_statements", + "request": { + "name": "GetBankStatementsV3BankStatementsGetRequest", + "query-parameters": { + "created_after": { + "docs": "Only return bank statements older or equal than this date", + "type": "optional<datetime>", + }, + "created_before": { + "docs": "Only return bank statements newer than this date", + "type": "optional<datetime>", + }, + "cursor": { + "docs": "Starting point for the set of bank statements", + "type": "optional<string>", + }, + "limit": { + "docs": "The limit of bank statements to be returned", + "type": "optional<integer>", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": 50, + "min": 1, + "multipleOf": undefined, + }, + }, + "status": { + "docs": "If specified, only return bank statements with this status", + "type": "optional<root.DocumentStatus>", + }, + }, + }, + "response": { + "docs": "Successful Response", + "type": "root.PagedResponseBankStatement", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "postBankStatement": { + "auth": true, + "display-name": "Submit a bank statement PDF", + "docs": "Upload a PDF file and queue it for extraction.", + "errors": [ + "root.PostBankStatementV3BankStatementsPostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/bank_statements" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + --form file=@bank_statement.pdf + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +with open('bank_statement.pdf', 'rb') as fh: + bank_statement = sdk.bank_statements.create(fh) + results = sdk.bank_statement.wait_for_results(bank_statement.id) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": {}, + "response": { + "body": { + "created_at": "2024-01-01T00:00:00Z", + "error": { + "code": "invalid_bank_statement", + "message": "message", + }, + "file": { + "no_pages": 1, + "size": 4096, + }, + "id": "7f8dceac-2848-472d-b5c3-55cdbaf35a9b", + "name": "2014-01-01_2014-02-01_statement.pdf", + "status": "processing", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/bank_statements", + "request": { + "body": { + "properties": { + "file": "file", + }, + }, + "content-type": "multipart/form-data", + "headers": undefined, + "name": "Body_post_bank_statement_v3_bank_statements_post", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Successful Response", + "type": "root.BankStatement", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getBankStatements: + path: /v3/bank_statements + method: GET + auth: true + docs: >- + Return a list of submitted bank statements starting with the most recent + one. + source: + openapi: ../openapi.yml + display-name: List all bank statements + request: + name: GetBankStatementsV3BankStatementsGetRequest + query-parameters: + created_after: + type: optional<datetime> + docs: Only return bank statements older or equal than this date + created_before: + type: optional<datetime> + docs: Only return bank statements newer than this date + cursor: + type: optional<string> + docs: Starting point for the set of bank statements + limit: + type: optional<integer> + docs: The limit of bank statements to be returned + validation: + min: 1 + max: 50 + status: + type: optional<root.DocumentStatus> + docs: If specified, only return bank statements with this status + response: + docs: Successful Response + type: root.PagedResponseBankStatement + errors: + - >- + root.GetBankStatementsV3BankStatementsGetRequestUnprocessableEntityError + examples: + - response: + body: + next_cursor: XjdHaksD + data: + - id: 7f8dceac-2848-472d-b5c3-55cdbaf35a9b + name: 2014-01-01_2014-02-01_statement.pdf + status: processing + created_at: '2024-01-01T00:00:00Z' + file: + no_pages: 1 + size: 4096 + error: + code: invalid_bank_statement + message: message + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/bank_statements" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + for bs in sdk.bank_statements.list().auto_paginate(): + ... + postBankStatement: + path: /v3/bank_statements + method: POST + auth: true + docs: Upload a PDF file and queue it for extraction. + source: + openapi: ../openapi.yml + display-name: Submit a bank statement PDF + request: + name: Body_post_bank_statement_v3_bank_statements_post + body: + properties: + file: file + content-type: multipart/form-data + response: + docs: Successful Response + type: root.BankStatement + errors: + - >- + root.PostBankStatementV3BankStatementsPostRequestUnprocessableEntityError + examples: + - request: {} + response: + body: + id: 7f8dceac-2848-472d-b5c3-55cdbaf35a9b + name: 2014-01-01_2014-02-01_statement.pdf + status: processing + created_at: '2024-01-01T00:00:00Z' + file: + no_pages: 1 + size: 4096 + error: + code: invalid_bank_statement + message: message + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/bank_statements" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + --form file=@bank_statement.pdf + + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + with open('bank_statement.pdf', 'rb') as fh: + bank_statement = sdk.bank_statements.create(fh) + results = sdk.bank_statement.wait_for_results(bank_statement.id) + getBankStatement: + path: /v3/bank_statements/{id} + method: GET + auth: true + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve a bank statement + response: + docs: Successful Response + type: root.BankStatement + errors: + - root.GetBankStatementV3BankStatementsIdGetRequestNotFoundError + - >- + root.GetBankStatementV3BankStatementsIdGetRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + id: 7f8dceac-2848-472d-b5c3-55cdbaf35a9b + name: 2014-01-01_2014-02-01_statement.pdf + status: processing + created_at: '2024-01-01T00:00:00Z' + file: + no_pages: 1 + size: 4096 + error: + code: invalid_bank_statement + message: message + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: >- + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + bs = + sdk.bank_statements.get("7f8dceac-2848-472d-b5c3-55cdbaf35a9b") + deleteBankStatement: + path: /v3/bank_statements/{id} + method: DELETE + auth: true + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Deletes a bank statement + errors: + - root.DeleteBankStatementV3BankStatementsIdDeleteRequestNotFoundError + - >- + root.DeleteBankStatementV3BankStatementsIdDeleteRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + getBankStatementStatementInfo: + path: /v3/bank_statements/{id}/overview + method: POST + auth: true + docs: >- + Extracts account holder, bank and account information extracted from the + first page of the bank statement, which is typically available before + the full results. This is a synchronous call. + + + Complete guide: [Overview](../../../bank-statements) + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Quickly extract account holder, institution and first account + response: + docs: Successful Response + type: root.StatementInfo + errors: + - >- + root.GetBankStatementStatementInfoV3BankStatementsIdOverviewPostRequestNotFoundError + - >- + root.GetBankStatementStatementInfoV3BankStatementsIdOverviewPostRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + institution: Well's Fargo + start_date: '2024-01-01' + end_date: '2024-02-01' + account_holder: + type: consumer + name: John Doe + address: + street: 601 Rosebud Avenue + postcode: '77901' + city: Victoria + state: Texas + country: United States + accounts: + - type: checking + number: '83721' + opening_balance: 1000 + closing_balance: 1500 + iso_currency_code: USD + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b/overview" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + overview = sdk.bank_statements.overview( + "7f8dceac-2848-472d-b5c3-55cdbaf35a9b" + ) + getBankStatementResult: + path: /v3/bank_statements/{id}/results + method: GET + auth: true + docs: >- + Return the extracted account information and associated transactions + from a bank statement PDF. The results are accessible once the + statement's status is `completed`. + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve the extraction results + response: + docs: Successful Response + type: root.BankStatementResults + errors: + - >- + root.GetBankStatementResultV3BankStatementsIdResultsGetRequestNotFoundError + - >- + root.GetBankStatementResultV3BankStatementsIdResultsGetRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + accounts: + - number: '972913289' + opening_balance: 400 + closing_balance: 200 + start_date: '2024-01-01' + end_date: '2024-02-01' + is_balance_reconciled: true + total_incoming: 0 + total_outgoing: 200 + transactions: + - id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 200 + entry_type: outgoing + currency: USD + running_balance: 400 + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b/results" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: >- + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + bs = + sdk.bank_statements.get("7f8dceac-2848-472d-b5c3-55cdbaf35a9b") + + results = sdk.bank_statements.wait_for_results( + "7f8dceac-2848-472d-b5c3-55cdbaf35a9b" + ) + source: + openapi: ../openapi.yml + display-name: Bank statements +docs: > + + The Bank Statements API allows you to manage and extract information from bank + statements. We support extraction of + + account holder information, account information and transaction records. Files + should be uploaded in PDF format. + + + During the extraction process, the bank statements undergo several status + changes: + + | Status | + Description | + + |----------|------------------------------------------------------------------------| + + |processing|The upload was successful. Extraction is in + progress. | + + |completed |The extraction was successful. Results are + available. | + + |error |An error occurred during extraction. Check `error` for more + information.| + + + + A list of error codes for the `error` status can be found below: + + | Code | Description | + + |----------------------|-------------------------------------------| + + |invalid_bank_statement|Failed to process file as a bank statement.| + + |internal_error |Internal error. Please contact support. | + + + + Complete guide: [Bank Statements](../../../bank-statements). +", + }, + "batches.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "endpoints": { + "getBatchResults": { + "auth": true, + "display-name": "Retrieve the results of a batch", + "docs": "Returns the results of the enrichment request. The resulting enriched transactions are returned in the same order they were submitted. Results are available after the batch has finished processing.", + "errors": [ + "root.GetBatchResultsV3BatchesIdResultsGetRequestNotFoundError", + "root.GetBatchResultsV3BatchesIdResultsGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/batches/203613d2-83c8-4130-8809-d14206eeec20/results" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +results = sdk.batches.wait_for_results("f203613d2-83c8-4130-8809-d14206eeec20") +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "id": "id", + "results": { + "transactions": [ + { + "categories": { + "general": "outgoing - coffee shops", + }, + "created_at": "2024-03-30T00:00:00Z", + "entities": { + "counterparty": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "type": "organization", + "website": "starbucks.com", + }, + "intermediaries": [ + { + "id": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "logo": "https://logos.ntropy.com/squareup.com", + "mccs": [ + 1, + ], + "name": "Square", + "type": "payment_processor", + "website": "squareup.com", + }, + ], + }, + "id": "xbx8YP14g565Xk", + "location": { + "raw_address": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "structured": { + "apple_maps_url": "https://maps.apple.com/?q=29.704558,-82.389277", + "city": "Gainesville", + "country": "United States", + "country_code": "US", + "google_maps_url": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "latitude": 29.704558, + "longitude": -82.389277, + "postcode": "32653", + "state": "Florida", + "street": "Nw 43rd Street 5480", + }, + }, + }, + ], + }, + "status": "processing", + "total": 1, + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/batches/{id}/results", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Returned batch of transaction enrichment results.", + "type": "root.BatchResult", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getBatches": { + "auth": true, + "display-name": "List all batches", + "docs": "Returns a list of submitted batches starting with the most recent one.", + "errors": [ + "root.GetBatchesV3BatchesGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/batches" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +for batch in sdk.batches.list().auto_paginate(): + ... ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "data": [ + { + "created_at": "2024-01-01T00:00:00Z", + "id": "203613d2-83c8-4130-8809-d14206eeec20", + "progress": 0, + "status": "processing", + "total": 4000, + "updated_at": "2024-01-01T00:00:30Z", + }, + ], + "next_cursor": "XjdHaksD", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/batches", + "request": { + "name": "GetBatchesV3BatchesGetRequest", + "query-parameters": { + "created_after": { + "docs": "Only return batches older or equal than this date", + "type": "optional<datetime>", + }, + "created_before": { + "docs": "Only return batches newer than this date", + "type": "optional<datetime>", + }, + "cursor": { + "docs": "Starting point for the set of batches", + "type": "optional<string>", + }, + "limit": { + "docs": "The limit of batches to be returned", + "type": "optional<integer>", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": 50, + "min": 1, + "multipleOf": undefined, + }, + }, + "status": { + "docs": "If specified, only return batches with this status", + "type": "optional<root.BatchStatus>", + }, + }, + }, + "response": { + "docs": "Successful Response", + "type": "root.PagedResponseBatch", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getSingleBatch": { + "auth": true, + "display-name": "Retrieve a batch", + "docs": undefined, + "errors": [ + "root.GetSingleBatchV3BatchesIdGetRequestNotFoundError", + "root.GetSingleBatchV3BatchesIdGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/batches/203613d2-83c8-4130-8809-d14206eeec20" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +batch = sdk.batches.get("f203613d2-83c8-4130-8809-d14206eeec20") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "created_at": "2024-01-01T00:00:00Z", + "id": "203613d2-83c8-4130-8809-d14206eeec20", + "progress": 0, + "status": "processing", + "total": 4000, + "updated_at": "2024-01-01T00:00:30Z", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/batches/{id}", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.Batch", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "postBatch": { + "auth": true, + "display-name": "Submit a batch of transactions", + "docs": "Creates a batch of transactions and enriches it in an asynchronous fashion. A batch, representing the status of the +enrichment progress is returned as a result of the submission. + +In order to be notified on the status of the batch, you can setup [webhooks](../../../webhooks) and receive +the respective notifications. Alternatively, you can +[poll](../../../enrichment/introduction/#viewing-the-progress-of-a-batch) for the status of the batch using its id. + +This endpoints supports up to 24960 transactions.", + "errors": [ + "root.PostBatchV3BatchesPostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/batches/" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '[{ + "id": "xbx8YP14g565Xk", + "description": "SQ* STARBUCKS NW 43RD", + "date": "2024-03-30", + "amount": 10.0, + "entry_type": "outgoing", + "currency": "USD", + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "location": { + "country": "US" + } + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK, TransactionInput, LocationInput + +sdk = SDK("cd1H...Wmhl") +batch = sdk.batches.create([ + TransactionInput( + id="xbx8YP14g565Xk", + description="SQ* STARBUCKS NW 43RD", + account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad", + amount=10.0, + entry_type="outgoing", + date="2024-03-30", + currency="USD", + location=LocationInput( + country="US", + ) + ) +]) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": { + "transactions": [ + { + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "amount": 10, + "currency": "USD", + "date": "2024-03-30", + "description": "SQ* STARBUCKS NW 43RD", + "entry_type": "outgoing", + "id": "xbx8YP14g565Xk", + "location": { + "country": "US", + }, + }, + ], + }, + "response": { + "body": { + "created_at": "2024-01-01T00:00:00Z", + "id": "203613d2-83c8-4130-8809-d14206eeec20", + "progress": 0, + "status": "processing", + "total": 4000, + "updated_at": "2024-01-01T00:00:30Z", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/batches", + "request": { + "body": { + "properties": { + "transactions": { + "type": "list<root.TransactionInput>", + }, + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "AsyncEnrichmentInput", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Successful Response", + "type": "root.Batch", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getBatches: + path: /v3/batches + method: GET + auth: true + docs: Returns a list of submitted batches starting with the most recent one. + source: + openapi: ../openapi.yml + display-name: List all batches + request: + name: GetBatchesV3BatchesGetRequest + query-parameters: + created_after: + type: optional<datetime> + docs: Only return batches older or equal than this date + created_before: + type: optional<datetime> + docs: Only return batches newer than this date + cursor: + type: optional<string> + docs: Starting point for the set of batches + limit: + type: optional<integer> + docs: The limit of batches to be returned + validation: + min: 1 + max: 50 + status: + type: optional<root.BatchStatus> + docs: If specified, only return batches with this status + response: + docs: Successful Response + type: root.PagedResponseBatch + errors: + - root.GetBatchesV3BatchesGetRequestUnprocessableEntityError + examples: + - response: + body: + next_cursor: XjdHaksD + data: + - id: 203613d2-83c8-4130-8809-d14206eeec20 + status: processing + created_at: '2024-01-01T00:00:00Z' + updated_at: '2024-01-01T00:00:30Z' + progress: 0 + total: 4000 + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/batches" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + for batch in sdk.batches.list().auto_paginate(): + ... + postBatch: + path: /v3/batches + method: POST + auth: true + docs: >- + Creates a batch of transactions and enriches it in an asynchronous + fashion. A batch, representing the status of the + + enrichment progress is returned as a result of the submission. + + + In order to be notified on the status of the batch, you can setup + [webhooks](../../../webhooks) and receive + + the respective notifications. Alternatively, you can + + [poll](../../../enrichment/introduction/#viewing-the-progress-of-a-batch) + for the status of the batch using its id. + + + This endpoints supports up to 24960 transactions. + source: + openapi: ../openapi.yml + display-name: Submit a batch of transactions + request: + name: AsyncEnrichmentInput + body: + properties: + transactions: + type: list<root.TransactionInput> + content-type: application/json + response: + docs: Successful Response + type: root.Batch + errors: + - root.PostBatchV3BatchesPostRequestUnprocessableEntityError + examples: + - request: + transactions: + - id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10 + entry_type: outgoing + currency: USD + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + location: + country: US + response: + body: + id: 203613d2-83c8-4130-8809-d14206eeec20 + status: processing + created_at: '2024-01-01T00:00:00Z' + updated_at: '2024-01-01T00:00:30Z' + progress: 0 + total: 4000 + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/batches/" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '[{ + "id": "xbx8YP14g565Xk", + "description": "SQ* STARBUCKS NW 43RD", + "date": "2024-03-30", + "amount": 10.0, + "entry_type": "outgoing", + "currency": "USD", + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "location": { + "country": "US" + } + }]' + + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK, TransactionInput, LocationInput + + sdk = SDK("cd1H...Wmhl") + batch = sdk.batches.create([ + TransactionInput( + id="xbx8YP14g565Xk", + description="SQ* STARBUCKS NW 43RD", + account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad", + amount=10.0, + entry_type="outgoing", + date="2024-03-30", + currency="USD", + location=LocationInput( + country="US", + ) + ) + ]) + getSingleBatch: + path: /v3/batches/{id} + method: GET + auth: true + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve a batch + response: + docs: Successful Response + type: root.Batch + errors: + - root.GetSingleBatchV3BatchesIdGetRequestNotFoundError + - root.GetSingleBatchV3BatchesIdGetRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + id: 203613d2-83c8-4130-8809-d14206eeec20 + status: processing + created_at: '2024-01-01T00:00:00Z' + updated_at: '2024-01-01T00:00:30Z' + progress: 0 + total: 4000 + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/batches/203613d2-83c8-4130-8809-d14206eeec20" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: >- + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + batch = + sdk.batches.get("f203613d2-83c8-4130-8809-d14206eeec20") + getBatchResults: + path: /v3/batches/{id}/results + method: GET + auth: true + docs: >- + Returns the results of the enrichment request. The resulting enriched + transactions are returned in the same order they were submitted. Results + are available after the batch has finished processing. + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve the results of a batch + response: + docs: Returned batch of transaction enrichment results. + type: root.BatchResult + errors: + - root.GetBatchResultsV3BatchesIdResultsGetRequestNotFoundError + - >- + root.GetBatchResultsV3BatchesIdResultsGetRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + id: id + total: 1 + status: processing + results: + transactions: + - entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: + - 1 + type: payment_processor + categories: + general: outgoing - coffee shops + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: >- + https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + created_at: '2024-03-30T00:00:00Z' + id: xbx8YP14g565Xk + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/batches/203613d2-83c8-4130-8809-d14206eeec20/results" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: > + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + results = + sdk.batches.wait_for_results("f203613d2-83c8-4130-8809-d14206eeec20") + source: + openapi: ../openapi.yml +", + }, + "categories.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "endpoints": { + "customCategoriesPost": { + "auth": true, + "display-name": "Set a custom set of categories", + "docs": "Sets a custom set of categories. Transactions that don't match a category will be categorized `not enough information` regardless of whether it is present in the set.", + "errors": [ + "root.CustomCategoriesPostV3CategoriesAccountHolderTypePostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/categories/consumer" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "incoming": [ + "salary", + "investment income", + "other income" + ], + "outgoing": [ + "rent", + "utilities", + "groceries", + "entertainment" + ] + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.categories.set("consumer", { + "incoming": [ + "transfer from investment app", + "transfer from stock broker", + "transfer from crypto broker", + "chargeback", + "freelance income", + "rideshare or delivery income", + "paycheck", + "benefits", + "interest earned", + "stock dividend" + ], + "outgoing": [ + "digital content and streaming", + "vending machine", + "reversal", + "transfer to investment app", + "transfer to stock broker", + "transfer to crypto broker", + "adjustment", + "intra account transfer", + "inter account transfer", + "peer to peer transfer", + "funeral service", + "ATM withdrawal", + "teller withdrawal" + ] +}) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "account_holder_type": "consumer", + }, + "request": { + "incoming": [ + "salary", + "investment income", + "other income", + ], + "outgoing": [ + "rent", + "utilities", + "groceries", + "entertainment", + ], + }, + "response": { + "body": { + "incoming": [ + "salary", + "investment income", + "other income", + ], + "outgoing": [ + "rent", + "utilities", + "groceries", + "entertainment", + ], + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/categories/{account_holder_type}", + "path-parameters": { + "account_holder_type": "root.AccountHolderType", + }, + "request": { + "body": { + "type": "root.CustomCategorySet", + }, + "content-type": "application/json", + }, + "response": { + "docs": "Custom categories successfully set.", + "type": "root.CustomCategorySet", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "deleteCustomCategorySet": { + "auth": true, + "display-name": "Reset category set to original values", + "docs": "Resets the set of categories of the specified account holder type to the original values.", + "errors": [ + "root.DeleteCustomCategorySetV3CategoriesAccountHolderTypeResetPostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/categories/consumer/reset" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.categories.reset("consumer") +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "account_holder_type": "consumer", + }, + "response": { + "body": { + "incoming": [ + "transfer from investment app", + "transfer from stock broker", + "transfer from crypto broker", + "chargeback", + "freelance income", + "rideshare or delivery income", + "paycheck", + "benefits", + "interest earned", + "stock dividend", + ], + "outgoing": [ + "digital content and streaming", + "vending machine", + "reversal", + "transfer to investment app", + "transfer to stock broker", + "transfer to crypto broker", + "adjustment", + "intra account transfer", + "inter account transfer", + "peer to peer transfer", + "funeral service", + "ATM withdrawal", + "teller withdrawal", + ], + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/categories/{account_holder_type}/reset", + "path-parameters": { + "account_holder_type": "root.AccountHolderType", + }, + "response": { + "docs": "Successful Response", + "type": "root.CategorySet", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getCategorySet": { + "auth": true, + "display-name": "Retrieve category set", + "docs": "Retrieves the set of categories. Category sets are different per account holder type.", + "errors": [ + "root.GetCategorySetV3CategoriesAccountHolderTypeGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/categories/consumer" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.categories.get("consumer") +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "account_holder_type": "consumer", + }, + "response": { + "body": { + "incoming": [ + "transfer from investment app", + "transfer from stock broker", + "transfer from crypto broker", + "chargeback", + "freelance income", + "rideshare or delivery income", + "paycheck", + "benefits", + "interest earned", + "stock dividend", + ], + "outgoing": [ + "digital content and streaming", + "vending machine", + "reversal", + "transfer to investment app", + "transfer to stock broker", + "transfer to crypto broker", + "adjustment", + "intra account transfer", + "inter account transfer", + "peer to peer transfer", + "funeral service", + "ATM withdrawal", + "teller withdrawal", + ], + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/categories/{account_holder_type}", + "path-parameters": { + "account_holder_type": "root.AccountHolderType", + }, + "response": { + "docs": "Category set for the selected type of account holder", + "type": "root.CategorySet", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getCategorySet: + path: /v3/categories/{account_holder_type} + method: GET + auth: true + docs: >- + Retrieves the set of categories. Category sets are different per account + holder type. + source: + openapi: ../openapi.yml + path-parameters: + account_holder_type: root.AccountHolderType + display-name: Retrieve category set + response: + docs: Category set for the selected type of account holder + type: root.CategorySet + errors: + - >- + root.GetCategorySetV3CategoriesAccountHolderTypeGetRequestUnprocessableEntityError + examples: + - path-parameters: + account_holder_type: consumer + response: + body: + incoming: + - transfer from investment app + - transfer from stock broker + - transfer from crypto broker + - chargeback + - freelance income + - rideshare or delivery income + - paycheck + - benefits + - interest earned + - stock dividend + outgoing: + - digital content and streaming + - vending machine + - reversal + - transfer to investment app + - transfer to stock broker + - transfer to crypto broker + - adjustment + - intra account transfer + - inter account transfer + - peer to peer transfer + - funeral service + - ATM withdrawal + - teller withdrawal + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/categories/consumer" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.categories.get("consumer") + customCategoriesPost: + path: /v3/categories/{account_holder_type} + method: POST + auth: true + docs: >- + Sets a custom set of categories. Transactions that don't match a + category will be categorized `not enough information` regardless of + whether it is present in the set. + source: + openapi: ../openapi.yml + path-parameters: + account_holder_type: root.AccountHolderType + display-name: Set a custom set of categories + request: + body: + type: root.CustomCategorySet + content-type: application/json + response: + docs: Custom categories successfully set. + type: root.CustomCategorySet + errors: + - >- + root.CustomCategoriesPostV3CategoriesAccountHolderTypePostRequestUnprocessableEntityError + examples: + - path-parameters: + account_holder_type: consumer + request: + incoming: + - salary + - investment income + - other income + outgoing: + - rent + - utilities + - groceries + - entertainment + response: + body: + incoming: + - salary + - investment income + - other income + outgoing: + - rent + - utilities + - groceries + - entertainment + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/categories/consumer" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "incoming": [ + "salary", + "investment income", + "other income" + ], + "outgoing": [ + "rent", + "utilities", + "groceries", + "entertainment" + ] + }]' + + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.categories.set("consumer", { + "incoming": [ + "transfer from investment app", + "transfer from stock broker", + "transfer from crypto broker", + "chargeback", + "freelance income", + "rideshare or delivery income", + "paycheck", + "benefits", + "interest earned", + "stock dividend" + ], + "outgoing": [ + "digital content and streaming", + "vending machine", + "reversal", + "transfer to investment app", + "transfer to stock broker", + "transfer to crypto broker", + "adjustment", + "intra account transfer", + "inter account transfer", + "peer to peer transfer", + "funeral service", + "ATM withdrawal", + "teller withdrawal" + ] + }) + deleteCustomCategorySet: + path: /v3/categories/{account_holder_type}/reset + method: POST + auth: true + docs: >- + Resets the set of categories of the specified account holder type to the + original values. + source: + openapi: ../openapi.yml + path-parameters: + account_holder_type: root.AccountHolderType + display-name: Reset category set to original values + response: + docs: Successful Response + type: root.CategorySet + errors: + - >- + root.DeleteCustomCategorySetV3CategoriesAccountHolderTypeResetPostRequestUnprocessableEntityError + examples: + - path-parameters: + account_holder_type: consumer + response: + body: + incoming: + - transfer from investment app + - transfer from stock broker + - transfer from crypto broker + - chargeback + - freelance income + - rideshare or delivery income + - paycheck + - benefits + - interest earned + - stock dividend + outgoing: + - digital content and streaming + - vending machine + - reversal + - transfer to investment app + - transfer to stock broker + - transfer to crypto broker + - adjustment + - intra account transfer + - inter account transfer + - peer to peer transfer + - funeral service + - ATM withdrawal + - teller withdrawal + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/categories/consumer/reset" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.categories.reset("consumer") + source: + openapi: ../openapi.yml +", + }, + "entities.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "endpoints": { + "getEntityById": { + "auth": true, + "display-name": "Retrieve an entity", + "docs": "Retrieve more information about an entity by using its unique ID.", + "errors": [ + "root.GetEntityByIdV3EntitiesIdGetRequestBadRequestError", + "root.GetEntityByIdV3EntitiesIdGetRequestNotFoundError", + "root.GetEntityByIdV3EntitiesIdGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/entities/d4bc3c80-ec1a-3da2-836e-2a4ca4758be5" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.entities.lookup("d4bc3c80-ec1a-3da2-836e-2a4ca4758be5") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "website": "starbucks.com", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/entities/{id}", + "path-parameters": { + "id": { + "docs": "The unique ID of the entity", + "type": "string", + }, + }, + "response": { + "docs": "Entity", + "type": "root.Entity", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "searchEntity": { + "auth": true, + "display-name": "Searches for an entity", + "docs": "Resolves a query into an entity by querying our entity resolution system. + The parameters `name` and `website` are mutually exclusive. Calls to this endpoint using + the `name` parameter are billed the same way transactions are.", + "errors": [ + "root.SearchEntityV3EntitiesLookupGetRequestBadRequestError", + "root.SearchEntityV3EntitiesLookupGetRequestUnprocessableEntityError", + "root.SearchEntityV3EntitiesLookupGetRequestLockedError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/entities?name=Starbucks" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.entities.lookup(name="Starbucks") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "website": "starbucks.com", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/entities/lookup", + "request": { + "name": "SearchEntityV3EntitiesLookupGetRequest", + "query-parameters": { + "location": { + "docs": "An unstructured location string of the entity to resolve", + "type": "optional<string>", + }, + "name": { + "docs": "The name of the entity to resolve", + "type": "optional<string>", + }, + "website": { + "docs": "The website of the entity to resolve", + "type": "optional<string>", + }, + }, + }, + "response": { + "docs": "Entity", + "type": "root.Entity", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + searchEntity: + path: /v3/entities/lookup + method: GET + auth: true + docs: >- + Resolves a query into an entity by querying our entity resolution + system. + The parameters `name` and `website` are mutually exclusive. Calls to this endpoint using + the `name` parameter are billed the same way transactions are. + source: + openapi: ../openapi.yml + display-name: Searches for an entity + request: + name: SearchEntityV3EntitiesLookupGetRequest + query-parameters: + name: + type: optional<string> + docs: The name of the entity to resolve + website: + type: optional<string> + docs: The website of the entity to resolve + location: + type: optional<string> + docs: An unstructured location string of the entity to resolve + response: + docs: Entity + type: root.Entity + errors: + - root.SearchEntityV3EntitiesLookupGetRequestBadRequestError + - root.SearchEntityV3EntitiesLookupGetRequestUnprocessableEntityError + - root.SearchEntityV3EntitiesLookupGetRequestLockedError + examples: + - response: + body: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/entities?name=Starbucks" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.entities.lookup(name="Starbucks") + getEntityById: + path: /v3/entities/{id} + method: GET + auth: true + docs: Retrieve more information about an entity by using its unique ID. + source: + openapi: ../openapi.yml + path-parameters: + id: + type: string + docs: The unique ID of the entity + display-name: Retrieve an entity + response: + docs: Entity + type: root.Entity + errors: + - root.GetEntityByIdV3EntitiesIdGetRequestBadRequestError + - root.GetEntityByIdV3EntitiesIdGetRequestNotFoundError + - root.GetEntityByIdV3EntitiesIdGetRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/entities/d4bc3c80-ec1a-3da2-836e-2a4ca4758be5" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.entities.lookup("d4bc3c80-ec1a-3da2-836e-2a4ca4758be5") + source: + openapi: ../openapi.yml +", + }, + "personalization.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Personalization API allows you to customize the output of enrichment by +uploading a set of rules. For more information, see our documentation on +[Personalization](None). +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Personalization", + "endpoints": { + "filterAppend": { + "auth": true, + "display-name": "Append a rule.", + "docs": "Append a rule to the personalization ruleset.", + "errors": [ + "root.FilterAppendV3RulesAppendPostRequestBadRequestError", + "root.FilterAppendV3RulesAppendPostRequestContentTooLargeError", + "root.FilterAppendV3RulesAppendPostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/rules/append" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{"set": "logo", "to": "http://example.com/favicon.ico"}' +", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.rules.append({"set": "logo", "to": "http://example.com/favicon.ico"}) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": { + "if": true, + }, + "response": { + "body": { + "key": "value", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/rules/append", + "request": { + "body": { + "type": "root.action", + }, + "content-type": "application/json", + }, + "response": { + "docs": "Successful Response", + "type": "unknown", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "filterDelete": { + "auth": true, + "display-name": "Delete a rule.", + "docs": "Delete the rule at the specified index from the personalization ruleset.", + "errors": [ + "root.FilterDeleteV3RulesIndexDeleteRequestBadRequestError", + "root.FilterDeleteV3RulesIndexDeleteRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "DELETE" \ + "https://api.ntropy.com/v3/rules/0" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.rules.delete(0) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "index": 1, + }, + "response": { + "body": { + "key": "value", + }, + }, + }, + ], + "method": "DELETE", + "pagination": undefined, + "path": "/v3/rules/{index}", + "path-parameters": { + "index": "integer", + }, + "response": { + "docs": "Successful Response", + "type": "unknown", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "filterGet": { + "auth": true, + "display-name": "Get the current personalization ruleset.", + "docs": "Get the current personalization ruleset.", + "errors": [ + "root.FilterGetV3RulesGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/rules" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +rules = sdk.rules.get() +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": [ + { + "if": { + "is_substring": [], + }, + }, + ], + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/rules", + "response": { + "docs": "Successful Response", + "type": "root.Filter", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "filterPatch": { + "auth": true, + "display-name": "Modify an existing rule.", + "docs": "Modify an existing rule at the specified index on the ruleset.", + "errors": [ + "root.FilterPatchV3RulesIndexPatchRequestBadRequestError", + "root.FilterPatchV3RulesIndexPatchRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "PATCH" \ + "https://api.ntropy.com/v3/rules/0" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{"set": "logo", "to": "http://example.com/favicon.ico"}' +", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.rules.patch(0, {"set": "logo", "to": "http://example.com/favicon.ico"}) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "index": 1, + }, + "request": { + "if": true, + }, + "response": { + "body": { + "key": "value", + }, + }, + }, + ], + "method": "PATCH", + "pagination": undefined, + "path": "/v3/rules/{index}", + "path-parameters": { + "index": "integer", + }, + "request": { + "body": { + "type": "root.action", + }, + "content-type": "application/json", + }, + "response": { + "docs": "Successful Response", + "type": "unknown", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "filterPost": { + "auth": true, + "display-name": "Set the personalization ruleset.", + "docs": "Set the personalization ruleset.", + "errors": [ + "root.FilterPostV3RulesPostRequestBadRequestError", + "root.FilterPostV3RulesPostRequestContentTooLargeError", + "root.FilterPostV3RulesPostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/rules" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '[{ + "if": { + "is_substring": [ + {"get": "website"}, + "ntropy" + ] + }, + "then": [ + {"set": "logo", "to": "http://example.com/favicon.ico"} + ], + "else": [ + {"remove_label": "example label"} + ] + }]' +", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.rules.set([{ + "if": { + "is_substring": [ + {"get": "website"}, + "ntropy" + ] + }, + "then": [ + {"set": "logo", "to": "http://example.com/favicon.ico"} + ], + "else": [ + {"remove_label": "example label"} + ] +}]) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": [ + { + "if": { + "is_substring": [], + }, + }, + ], + "response": { + "body": { + "key": "value", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/rules", + "request": { + "body": { + "type": "root.Filter", + }, + "content-type": "application/json", + }, + "response": { + "docs": "Successful Response", + "type": "unknown", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + filterGet: + path: /v3/rules + method: GET + auth: true + docs: Get the current personalization ruleset. + source: + openapi: ../openapi.yml + display-name: Get the current personalization ruleset. + response: + docs: Successful Response + type: root.Filter + errors: + - root.FilterGetV3RulesGetRequestUnprocessableEntityError + examples: + - response: + body: + - if: + is_substring: [] + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/rules" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + rules = sdk.rules.get() + filterPost: + path: /v3/rules + method: POST + auth: true + docs: Set the personalization ruleset. + source: + openapi: ../openapi.yml + display-name: Set the personalization ruleset. + request: + body: + type: root.Filter + content-type: application/json + response: + docs: Successful Response + type: unknown + errors: + - root.FilterPostV3RulesPostRequestBadRequestError + - root.FilterPostV3RulesPostRequestContentTooLargeError + - root.FilterPostV3RulesPostRequestUnprocessableEntityError + examples: + - request: + - if: + is_substring: [] + response: + body: + key: value + code-samples: + - name: cURL + language: cURL + code: | + curl -X "POST" \ + "https://api.ntropy.com/v3/rules" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '[{ + "if": { + "is_substring": [ + {"get": "website"}, + "ntropy" + ] + }, + "then": [ + {"set": "logo", "to": "http://example.com/favicon.ico"} + ], + "else": [ + {"remove_label": "example label"} + ] + }]' + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.rules.set([{ + "if": { + "is_substring": [ + {"get": "website"}, + "ntropy" + ] + }, + "then": [ + {"set": "logo", "to": "http://example.com/favicon.ico"} + ], + "else": [ + {"remove_label": "example label"} + ] + }]) + filterAppend: + path: /v3/rules/append + method: POST + auth: true + docs: Append a rule to the personalization ruleset. + source: + openapi: ../openapi.yml + display-name: Append a rule. + request: + body: + type: root.action + content-type: application/json + response: + docs: Successful Response + type: unknown + errors: + - root.FilterAppendV3RulesAppendPostRequestBadRequestError + - root.FilterAppendV3RulesAppendPostRequestContentTooLargeError + - root.FilterAppendV3RulesAppendPostRequestUnprocessableEntityError + examples: + - request: + if: true + response: + body: + key: value + code-samples: + - name: cURL + language: cURL + code: | + curl -X "POST" \ + "https://api.ntropy.com/v3/rules/append" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{"set": "logo", "to": "http://example.com/favicon.ico"}' + - name: Python SDK + language: python + code: > + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + sdk.rules.append({"set": "logo", "to": + "http://example.com/favicon.ico"}) + filterDelete: + path: /v3/rules/{index} + method: DELETE + auth: true + docs: Delete the rule at the specified index from the personalization ruleset. + source: + openapi: ../openapi.yml + path-parameters: + index: integer + display-name: Delete a rule. + response: + docs: Successful Response + type: unknown + errors: + - root.FilterDeleteV3RulesIndexDeleteRequestBadRequestError + - root.FilterDeleteV3RulesIndexDeleteRequestUnprocessableEntityError + examples: + - path-parameters: + index: 1 + response: + body: + key: value + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "DELETE" \ + "https://api.ntropy.com/v3/rules/0" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.rules.delete(0) + filterPatch: + path: /v3/rules/{index} + method: PATCH + auth: true + docs: Modify an existing rule at the specified index on the ruleset. + source: + openapi: ../openapi.yml + path-parameters: + index: integer + display-name: Modify an existing rule. + request: + body: + type: root.action + content-type: application/json + response: + docs: Successful Response + type: unknown + errors: + - root.FilterPatchV3RulesIndexPatchRequestBadRequestError + - root.FilterPatchV3RulesIndexPatchRequestUnprocessableEntityError + examples: + - path-parameters: + index: 1 + request: + if: true + response: + body: + key: value + code-samples: + - name: cURL + language: cURL + code: | + curl -X "PATCH" \ + "https://api.ntropy.com/v3/rules/0" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{"set": "logo", "to": "http://example.com/favicon.ico"}' + - name: Python SDK + language: python + code: > + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + sdk.rules.patch(0, {"set": "logo", "to": + "http://example.com/favicon.ico"}) + source: + openapi: ../openapi.yml + display-name: Personalization +docs: | + + The Personalization API allows you to customize the output of enrichment by + uploading a set of rules. For more information, see our documentation on + [Personalization](None). +", + }, + "recurrence.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Recurrence API allows you to identify and categorize recurring patterns found in the transactions of an +[account holder](#tag/Account-Holders), such as periodic payments or subscriptions and group them +into recurrence groups. Each recurrence group contains detailed information about the pattern, +such as periodicity, amount and counterparty. + +Transactions can be added to an account holder via the [Enrichment API](#tag/Enrichment). +It is crucial that transactions are submitted with the [correct](../../../account-holders) +account holder information as the recurrence calculation relies heavily on it. + +Complete guide: [Recurrence](../../../enrichment/recurrence). +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Recurrence", + "endpoints": { + "getAccountHolderRecurringPayments": { + "auth": true, + "display-name": "Find recurring groups in a transaction history", + "docs": "Identifies and categorizes recurring patterns found in the transaction history of the account holder, such as periodic payments or subscriptions. These patterns are called recurrence groups.", + "errors": [ + "root.GetAccountHolderRecurringPaymentsV3AccountHoldersIdRecurringGroupsPostRequestNotFoundError", + "root.GetAccountHolderRecurringPaymentsV3AccountHoldersIdRecurringGroupsPostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad/recurring_groups" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +recurring_groups = sdk.account_holders.recurring_groups( + "35b927b6-6fda-40aa-93b8-95b47c2b2cad" +) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": [ + { + "average_amount": 10, + "categories": { + "accounting": "operational expenses", + "general": "outgoing - coffee shops", + }, + "counterparty": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "type": "organization", + "website": "starbucks.com", + }, + "end_date": "2024-03-30", + "id": "8efbac45-9bd5-4b67-be29-334106198c40", + "periodicity": "daily", + "periodicity_in_days": 1, + "start_date": "2024-03-01", + "total_amount": 300, + "transaction_ids": [ + "2dc6SE8A7cTQ2jUdUadCg", + "tQYAhhl0XNkl1wasacpVQ", + "NNJTqvockIdKnYxBqPlJw", + ], + }, + ], + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/account_holders/{id}/recurring_groups", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "list<root.RecurrenceGroup>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getAccountHolderRecurringPayments: + path: /v3/account_holders/{id}/recurring_groups + method: POST + auth: true + docs: >- + Identifies and categorizes recurring patterns found in the transaction + history of the account holder, such as periodic payments or + subscriptions. These patterns are called recurrence groups. + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Find recurring groups in a transaction history + response: + docs: Successful Response + type: list<root.RecurrenceGroup> + errors: + - >- + root.GetAccountHolderRecurringPaymentsV3AccountHoldersIdRecurringGroupsPostRequestNotFoundError + - >- + root.GetAccountHolderRecurringPaymentsV3AccountHoldersIdRecurringGroupsPostRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + - id: 8efbac45-9bd5-4b67-be29-334106198c40 + start_date: '2024-03-01' + end_date: '2024-03-30' + total_amount: 300 + average_amount: 10 + periodicity_in_days: 1 + periodicity: daily + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + categories: + general: outgoing - coffee shops + accounting: operational expenses + transaction_ids: + - 2dc6SE8A7cTQ2jUdUadCg + - tQYAhhl0XNkl1wasacpVQ + - NNJTqvockIdKnYxBqPlJw + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad/recurring_groups" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + recurring_groups = sdk.account_holders.recurring_groups( + "35b927b6-6fda-40aa-93b8-95b47c2b2cad" + ) + source: + openapi: ../openapi.yml + display-name: Recurrence +docs: > + + The Recurrence API allows you to identify and categorize recurring patterns + found in the transactions of an + + [account holder](#tag/Account-Holders), such as periodic payments or + subscriptions and group them + + into recurrence groups. Each recurrence group contains detailed information + about the pattern, + + such as periodicity, amount and counterparty. + + + Transactions can be added to an account holder via the [Enrichment + API](#tag/Enrichment). + + It is crucial that transactions are submitted with the + [correct](../../../account-holders) + + account holder information as the recurrence calculation relies heavily on it. + + + Complete guide: [Recurrence](../../../enrichment/recurrence). +", + }, + "reports.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Reports API allows you to flag transactions with incorrect fields. You can also track the progress of each +report either through the API or using [webhooks](#tag/Webhooks). +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Reports", + "endpoints": { + "deleteReport": { + "auth": true, + "display-name": "Delete a report", + "docs": "Delete a report", + "errors": [ + "root.DeleteReportV3ReportsIdDeleteRequestNotFoundError", + "root.DeleteReportV3ReportsIdDeleteRequestUnprocessableEntityError", + ], + "examples": [ + { + "path-parameters": { + "id": "id", + }, + }, + ], + "method": "DELETE", + "pagination": undefined, + "path": "/v3/reports/{id}", + "path-parameters": { + "id": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getReport": { + "auth": true, + "display-name": "Retrieve a report", + "docs": "Retrieve a report", + "errors": [ + "root.GetReportV3ReportsIdGetRequestNotFoundError", + "root.GetReportV3ReportsIdGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/reports/a652285d-de1b-4a6f-b6ce-45efa9be7952" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +report = sdk.reports.get("a652285d-de1b-4a6f-b6ce-45efa9be7952") + ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "created_at": "2024-10-03T02:53:30Z", + "description": "lorem ipsum", + "fields": [ + ".entities.counterparty", + ], + "id": "a652285d-de1b-4a6f-b6ce-45efa9be7952", + "rejection_reason": "rejection_reason", + "status": "open", + "transaction_id": "xbx8YP14g565Xk", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/reports/{id}", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.Report", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getReports": { + "auth": true, + "display-name": "List all reports", + "docs": "List all reports", + "errors": [ + "root.GetReportsV3ReportsGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/reports" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +reports = sdk.reports.list() + ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "data": [ + { + "created_at": "2024-10-03T02:53:30Z", + "description": "lorem ipsum", + "fields": [ + ".entities.counterparty", + ], + "id": "a652285d-de1b-4a6f-b6ce-45efa9be7952", + "rejection_reason": "rejection_reason", + "status": "open", + "transaction_id": "xbx8YP14g565Xk", + }, + ], + "next_cursor": "next_cursor", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/reports", + "request": { + "name": "GetReportsV3ReportsGetRequest", + "query-parameters": { + "created_after": { + "docs": "Only return report older or equal than this date", + "type": "optional<datetime>", + }, + "created_before": { + "docs": "Only return report newer than this date", + "type": "optional<datetime>", + }, + "cursor": { + "docs": "Starting point for the set of report", + "type": "optional<string>", + }, + "limit": { + "docs": "The limit of report to be returned", + "type": "optional<integer>", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": 50, + "min": 1, + "multipleOf": undefined, + }, + }, + "status": { + "docs": "If specified, only return reports with this status", + "type": "optional<root.ReportStatus>", + }, + }, + }, + "response": { + "docs": "Successful Response", + "type": "root.PagedResponseReport", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "postReport": { + "auth": true, + "display-name": "Create a report", + "docs": "Report a transaction with incorrect fields.", + "errors": [ + "root.PostReportV3ReportsPostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/reports" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "transaction_id": "xbx8YP14g565Xk", + "description": "lorem ipsum", + "fields": [ + ".entities.counterparty" + ] + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +report = sdk.reports.create( + transaction_id="xbx8YP14g565Xk", + description="lorem ipsum", + fields=['.entities.counterparty'], +) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": { + "description": "lorem ipsum", + "fields": [ + ".entities.counterparty", + ], + "transaction_id": "xbx8YP14g565Xk", + }, + "response": { + "body": { + "created_at": "2024-10-03T02:53:30Z", + "description": "lorem ipsum", + "fields": [ + ".entities.counterparty", + ], + "id": "a652285d-de1b-4a6f-b6ce-45efa9be7952", + "rejection_reason": "rejection_reason", + "status": "open", + "transaction_id": "xbx8YP14g565Xk", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/reports", + "request": { + "body": { + "properties": { + "description": { + "docs": "A description of what is wrong in the transaction", + "type": "string", + }, + "fields": { + "docs": "A list of the fields that are incorrect", + "type": "list<string>", + }, + "transaction_id": { + "docs": "The unique identifier of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "ReportBase", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "The newly created report", + "type": "root.Report", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getReports: + path: /v3/reports + method: GET + auth: true + docs: List all reports + source: + openapi: ../openapi.yml + display-name: List all reports + request: + name: GetReportsV3ReportsGetRequest + query-parameters: + created_after: + type: optional<datetime> + docs: Only return report older or equal than this date + created_before: + type: optional<datetime> + docs: Only return report newer than this date + cursor: + type: optional<string> + docs: Starting point for the set of report + limit: + type: optional<integer> + docs: The limit of report to be returned + validation: + min: 1 + max: 50 + status: + type: optional<root.ReportStatus> + docs: If specified, only return reports with this status + response: + docs: Successful Response + type: root.PagedResponseReport + errors: + - root.GetReportsV3ReportsGetRequestUnprocessableEntityError + examples: + - response: + body: + next_cursor: next_cursor + data: + - transaction_id: xbx8YP14g565Xk + description: lorem ipsum + fields: + - .entities.counterparty + id: a652285d-de1b-4a6f-b6ce-45efa9be7952 + created_at: '2024-10-03T02:53:30Z' + status: open + rejection_reason: rejection_reason + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/reports" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + reports = sdk.reports.list() + + postReport: + path: /v3/reports + method: POST + auth: true + docs: Report a transaction with incorrect fields. + source: + openapi: ../openapi.yml + display-name: Create a report + request: + name: ReportBase + body: + properties: + transaction_id: + type: string + docs: The unique identifier of the transaction + validation: + minLength: 1 + description: + type: string + docs: A description of what is wrong in the transaction + fields: + docs: A list of the fields that are incorrect + type: list<string> + content-type: application/json + response: + docs: The newly created report + type: root.Report + errors: + - root.PostReportV3ReportsPostRequestUnprocessableEntityError + examples: + - request: + transaction_id: xbx8YP14g565Xk + description: lorem ipsum + fields: + - .entities.counterparty + response: + body: + transaction_id: xbx8YP14g565Xk + description: lorem ipsum + fields: + - .entities.counterparty + id: a652285d-de1b-4a6f-b6ce-45efa9be7952 + created_at: '2024-10-03T02:53:30Z' + status: open + rejection_reason: rejection_reason + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/reports" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "transaction_id": "xbx8YP14g565Xk", + "description": "lorem ipsum", + "fields": [ + ".entities.counterparty" + ] + }]' + + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + report = sdk.reports.create( + transaction_id="xbx8YP14g565Xk", + description="lorem ipsum", + fields=['.entities.counterparty'], + ) + getReport: + path: /v3/reports/{id} + method: GET + auth: true + docs: Retrieve a report + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve a report + response: + docs: Successful Response + type: root.Report + errors: + - root.GetReportV3ReportsIdGetRequestNotFoundError + - root.GetReportV3ReportsIdGetRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + transaction_id: xbx8YP14g565Xk + description: lorem ipsum + fields: + - .entities.counterparty + id: a652285d-de1b-4a6f-b6ce-45efa9be7952 + created_at: '2024-10-03T02:53:30Z' + status: open + rejection_reason: rejection_reason + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/reports/a652285d-de1b-4a6f-b6ce-45efa9be7952" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + report = sdk.reports.get("a652285d-de1b-4a6f-b6ce-45efa9be7952") + + deleteReport: + path: /v3/reports/{id} + method: DELETE + auth: true + docs: Delete a report + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Delete a report + errors: + - root.DeleteReportV3ReportsIdDeleteRequestNotFoundError + - root.DeleteReportV3ReportsIdDeleteRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + source: + openapi: ../openapi.yml + display-name: Reports +docs: > + + The Reports API allows you to flag transactions with incorrect fields. You can + also track the progress of each + + report either through the API or using [webhooks](#tag/Webhooks). +", + }, + "transactions.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Transaction API allows you to manage, retrieve and search through enriched transactions. A transaction contains +both the enrichment fields and the original input fields. They are made available after being +[enriched](#tag/Enrichment). +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Transactions", + "endpoints": { + "deleteTransaction": { + "auth": true, + "display-name": "Deletes a transaction", + "docs": "Deleting a transaction will also delete it from our systems. This operation is permanent.", + "errors": [ + "root.DeleteTransactionV3TransactionsIdDeleteRequestNotFoundError", + "root.DeleteTransactionV3TransactionsIdDeleteRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "DELETE" \ + "https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +tx = sdk.transactions.delete("xbx8YP14g565Xk") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + }, + ], + "method": "DELETE", + "pagination": undefined, + "path": "/v3/transactions/{id}", + "path-parameters": { + "id": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getTransaction": { + "auth": true, + "display-name": "Retrieve a transaction", + "docs": undefined, + "errors": [ + "root.GetTransactionV3TransactionsIdGetRequestNotFoundError", + "root.GetTransactionV3TransactionsIdGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +tx = sdk.transactions.get("xbx8YP14g565Xk") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "amount": 10, + "categories": { + "accounting": "operational expenses", + "general": "outgoing - coffee shops", + }, + "created_at": "2024-03-30T00:00:00Z", + "currency": "USD", + "date": "2024-03-30", + "description": "SQ* STARBUCKS NW 43RD", + "entities": { + "counterparty": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "type": "organization", + "website": "starbucks.com", + }, + "intermediaries": [ + { + "id": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "logo": "https://logos.ntropy.com/squareup.com", + "mccs": [ + 1, + ], + "name": "Square", + "type": "payment_processor", + "website": "squareup.com", + }, + ], + }, + "entry_type": "outgoing", + "error": { + "code": "account_holder_not_found", + "message": "message", + }, + "id": "xbx8YP14g565Xk", + "location": { + "raw_address": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "structured": { + "apple_maps_url": "https://maps.apple.com/?q=29.704558,-82.389277", + "city": "Gainesville", + "country": "United States", + "country_code": "US", + "google_maps_url": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "latitude": 29.704558, + "longitude": -82.389277, + "postcode": "32653", + "state": "Florida", + "store_number": "store_number", + "street": "Nw 43rd Street 5480", + }, + }, + "recurrence": { + "type": "recurring", + }, + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/transactions/{id}", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.Transaction", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "listTransactions": { + "auth": true, + "display-name": "List all transactions", + "docs": "Return a list of enriched transactions starting with the most recent one.", + "errors": [ + "root.ListTransactionsV3TransactionsGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/transactions" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +for tx in sdk.transactions.list().auto_paginate(): + ... ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "data": [ + { + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "amount": 10, + "categories": { + "general": "outgoing - coffee shops", + }, + "created_at": "2024-03-30T00:00:00Z", + "currency": "USD", + "date": "2024-03-30", + "description": "SQ* STARBUCKS NW 43RD", + "entities": { + "counterparty": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "type": "organization", + "website": "starbucks.com", + }, + "intermediaries": [ + { + "id": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "logo": "https://logos.ntropy.com/squareup.com", + "mccs": [ + 1, + ], + "name": "Square", + "type": "payment_processor", + "website": "squareup.com", + }, + ], + }, + "entry_type": "outgoing", + "error": { + "code": "account_holder_not_found", + "message": "message", + }, + "id": "xbx8YP14g565Xk", + "location": { + "raw_address": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "structured": { + "apple_maps_url": "https://maps.apple.com/?q=29.704558,-82.389277", + "city": "Gainesville", + "country": "United States", + "country_code": "US", + "google_maps_url": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "latitude": 29.704558, + "longitude": -82.389277, + "postcode": "32653", + "state": "Florida", + "street": "Nw 43rd Street 5480", + }, + }, + "recurrence": { + "type": "recurring", + }, + }, + ], + "next_cursor": "XjdHaksD", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/transactions", + "request": { + "name": "ListTransactionsV3TransactionsGetRequest", + "query-parameters": { + "account_holder_id": { + "docs": "If specified, only return the transactions of this account holder", + "type": "optional<string>", + }, + "created_after": { + "docs": "Only return transactions older or equal than this date", + "type": "optional<datetime>", + }, + "created_before": { + "docs": "Only return transactions newer than this date", + "type": "optional<datetime>", + }, + "cursor": { + "docs": "Starting point for the set of transactions", + "type": "optional<string>", + }, + "limit": { + "docs": "The limit of transactions to be returned", + "type": "optional<integer>", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": 500, + "min": 1, + "multipleOf": undefined, + }, + }, + }, + }, + "response": { + "docs": "Successful Response", + "type": "root.PagedResponseTransaction", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "postTransactions": { + "auth": true, + "display-name": "Synchronously enrich transactions", + "docs": "Enriches a list of transactions in synchronous fashion. The enriched transactions returned in +the order that they were submitted. Webhook events are not triggered for this operation. + +This endpoint supports up to 1000 transactions. + +If you want more throughput and live updates refer to the +[async enrichment endpoint](../batches/post-batch).", + "errors": [ + "root.PostTransactionsV3TransactionsPostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/transactions" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '[{ + "id": "xbx8YP14g565Xk", + "description": "SQ* STARBUCKS NW 43RD", + "date": "2024-03-30", + "amount": 10.0, + "entry_type": "outgoing", + "currency": "USD", + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "location": { + "country": "US" + } + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK, TransactionInput, LocationInput + +sdk = SDK("cd1H...Wmhl") +enriched = sdk.transactions.create([ + TransactionInput( + id="xbx8YP14g565Xk", + description="SQ* STARBUCKS NW 43RD", + account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad", + amount=10.0, + entry_type="outgoing", + date="2024-03-30", + currency="USD", + location=LocationInput( + country="US", + ) + ) +]) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": { + "transactions": [ + { + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "amount": 10, + "currency": "USD", + "date": "2024-03-30", + "description": "SQ* STARBUCKS NW 43RD", + "entry_type": "outgoing", + "id": "xbx8YP14g565Xk", + "location": { + "country": "US", + }, + }, + ], + }, + "response": { + "body": { + "transactions": [ + { + "categories": { + "general": "outgoing - coffee shops", + }, + "created_at": "2024-03-30T00:00:00Z", + "entities": { + "counterparty": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "type": "organization", + "website": "starbucks.com", + }, + "intermediaries": [ + { + "id": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "logo": "https://logos.ntropy.com/squareup.com", + "mccs": [ + 1, + ], + "name": "Square", + "type": "payment_processor", + "website": "squareup.com", + }, + ], + }, + "error": { + "code": "account_holder_not_found", + "message": "message", + }, + "id": "xbx8YP14g565Xk", + "location": { + "raw_address": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "structured": { + "apple_maps_url": "https://maps.apple.com/?q=29.704558,-82.389277", + "city": "Gainesville", + "country": "United States", + "country_code": "US", + "google_maps_url": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "latitude": 29.704558, + "longitude": -82.389277, + "postcode": "32653", + "state": "Florida", + "street": "Nw 43rd Street 5480", + }, + }, + }, + ], + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/transactions", + "request": { + "body": { + "properties": { + "transactions": { + "type": "list<root.TransactionInput>", + }, + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "SyncEnrichmentInput", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Enriched transactions.", + "type": "root.SyncEnrichmentOutput", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "setTransactionAh": { + "auth": true, + "display-name": "Assign a transaction to an account holder", + "docs": "Changes the account holder associated with the transaction. The old and new account holder must share the same categories", + "errors": [ + "root.SetTransactionAhV3TransactionsIdAssignPostRequestNotFoundError", + "root.SetTransactionAhV3TransactionsIdAssignPostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad" + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.transactions.assign( + transaction_id="xbx8YP14g565Xk", + account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad" +) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "request": { + "account_holder_id": "account_holder_id", + }, + "response": { + "body": { + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "amount": 10, + "categories": { + "accounting": "operational expenses", + "general": "outgoing - coffee shops", + }, + "created_at": "2024-03-30T00:00:00Z", + "currency": "USD", + "date": "2024-03-30", + "description": "SQ* STARBUCKS NW 43RD", + "entities": { + "counterparty": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "type": "organization", + "website": "starbucks.com", + }, + "intermediaries": [ + { + "id": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "logo": "https://logos.ntropy.com/squareup.com", + "mccs": [ + 1, + ], + "name": "Square", + "type": "payment_processor", + "website": "squareup.com", + }, + ], + }, + "entry_type": "outgoing", + "error": { + "code": "account_holder_not_found", + "message": "message", + }, + "id": "xbx8YP14g565Xk", + "location": { + "raw_address": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "structured": { + "apple_maps_url": "https://maps.apple.com/?q=29.704558,-82.389277", + "city": "Gainesville", + "country": "United States", + "country_code": "US", + "google_maps_url": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "latitude": 29.704558, + "longitude": -82.389277, + "postcode": "32653", + "state": "Florida", + "store_number": "store_number", + "street": "Nw 43rd Street 5480", + }, + }, + "recurrence": { + "type": "recurring", + }, + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/transactions/{id}/assign", + "path-parameters": { + "id": "string", + }, + "request": { + "body": { + "properties": { + "account_holder_id": "string", + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "BodySetTransactionAhV3TransactionsIdAssignPost", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Successful Response", + "type": "root.Transaction", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getTransaction: + path: /v3/transactions/{id} + method: GET + auth: true + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve a transaction + response: + docs: Successful Response + type: root.Transaction + errors: + - root.GetTransactionV3TransactionsIdGetRequestNotFoundError + - root.GetTransactionV3TransactionsIdGetRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10 + entry_type: outgoing + currency: USD + entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: + - 1 + type: payment_processor + categories: + general: outgoing - coffee shops + accounting: operational expenses + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: >- + https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + store_number: store_number + error: + code: account_holder_not_found + message: message + created_at: '2024-03-30T00:00:00Z' + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + recurrence: + type: recurring + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + tx = sdk.transactions.get("xbx8YP14g565Xk") + deleteTransaction: + path: /v3/transactions/{id} + method: DELETE + auth: true + docs: >- + Deleting a transaction will also delete it from our systems. This + operation is permanent. + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Deletes a transaction + errors: + - root.DeleteTransactionV3TransactionsIdDeleteRequestNotFoundError + - >- + root.DeleteTransactionV3TransactionsIdDeleteRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "DELETE" \ + "https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + tx = sdk.transactions.delete("xbx8YP14g565Xk") + listTransactions: + path: /v3/transactions + method: GET + auth: true + docs: >- + Return a list of enriched transactions starting with the most recent + one. + source: + openapi: ../openapi.yml + display-name: List all transactions + request: + name: ListTransactionsV3TransactionsGetRequest + query-parameters: + created_after: + type: optional<datetime> + docs: Only return transactions older or equal than this date + created_before: + type: optional<datetime> + docs: Only return transactions newer than this date + cursor: + type: optional<string> + docs: Starting point for the set of transactions + limit: + type: optional<integer> + docs: The limit of transactions to be returned + validation: + min: 1 + max: 500 + account_holder_id: + type: optional<string> + docs: If specified, only return the transactions of this account holder + response: + docs: Successful Response + type: root.PagedResponseTransaction + errors: + - root.ListTransactionsV3TransactionsGetRequestUnprocessableEntityError + examples: + - response: + body: + next_cursor: XjdHaksD + data: + - id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10 + entry_type: outgoing + currency: USD + entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: + - 1 + type: payment_processor + categories: + general: outgoing - coffee shops + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: >- + https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + error: + code: account_holder_not_found + message: message + created_at: '2024-03-30T00:00:00Z' + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + recurrence: + type: recurring + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/transactions" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + for tx in sdk.transactions.list().auto_paginate(): + ... + postTransactions: + path: /v3/transactions + method: POST + auth: true + docs: >- + Enriches a list of transactions in synchronous fashion. The enriched + transactions returned in + + the order that they were submitted. Webhook events are not triggered for + this operation. + + + This endpoint supports up to 1000 transactions. + + + If you want more throughput and live updates refer to the + + [async enrichment endpoint](../batches/post-batch). + source: + openapi: ../openapi.yml + display-name: Synchronously enrich transactions + request: + name: SyncEnrichmentInput + body: + properties: + transactions: + type: list<root.TransactionInput> + content-type: application/json + response: + docs: Enriched transactions. + type: root.SyncEnrichmentOutput + errors: + - root.PostTransactionsV3TransactionsPostRequestUnprocessableEntityError + examples: + - request: + transactions: + - id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10 + entry_type: outgoing + currency: USD + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + location: + country: US + response: + body: + transactions: + - entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: + - 1 + type: payment_processor + categories: + general: outgoing - coffee shops + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: >- + https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + error: + code: account_holder_not_found + message: message + created_at: '2024-03-30T00:00:00Z' + id: xbx8YP14g565Xk + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/transactions" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '[{ + "id": "xbx8YP14g565Xk", + "description": "SQ* STARBUCKS NW 43RD", + "date": "2024-03-30", + "amount": 10.0, + "entry_type": "outgoing", + "currency": "USD", + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "location": { + "country": "US" + } + }]' + + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK, TransactionInput, LocationInput + + sdk = SDK("cd1H...Wmhl") + enriched = sdk.transactions.create([ + TransactionInput( + id="xbx8YP14g565Xk", + description="SQ* STARBUCKS NW 43RD", + account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad", + amount=10.0, + entry_type="outgoing", + date="2024-03-30", + currency="USD", + location=LocationInput( + country="US", + ) + ) + ]) + setTransactionAh: + path: /v3/transactions/{id}/assign + method: POST + auth: true + docs: >- + Changes the account holder associated with the transaction. The old and + new account holder must share the same categories + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Assign a transaction to an account holder + request: + name: BodySetTransactionAhV3TransactionsIdAssignPost + body: + properties: + account_holder_id: string + content-type: application/json + response: + docs: Successful Response + type: root.Transaction + errors: + - root.SetTransactionAhV3TransactionsIdAssignPostRequestNotFoundError + - >- + root.SetTransactionAhV3TransactionsIdAssignPostRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + request: + account_holder_id: account_holder_id + response: + body: + id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10 + entry_type: outgoing + currency: USD + entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: + - 1 + type: payment_processor + categories: + general: outgoing - coffee shops + accounting: operational expenses + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: >- + https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + store_number: store_number + error: + code: account_holder_not_found + message: message + created_at: '2024-03-30T00:00:00Z' + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + recurrence: + type: recurring + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad" + }]' + + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.transactions.assign( + transaction_id="xbx8YP14g565Xk", + account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad" + ) + source: + openapi: ../openapi.yml + display-name: Transactions +docs: > + + The Transaction API allows you to manage, retrieve and search through enriched + transactions. A transaction contains + + both the enrichment fields and the original input fields. They are made + available after being + + [enriched](#tag/Enrichment). +", + }, + "webhooks.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Webhooks API allows you to receive notifications when certain events occur, +such as when a batch or bank statement finishes processing. + +When an event occurs, Ntropy will make a POST request to the `url` of the +webhook. If you specified a `token` when creating the webhook, this string will +be included in the `X-Ntropy-Token` header. The webhook call has a timeout limit of 10 +seconds, so any processing of the event +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Webhooks", + "endpoints": { + "deleteWebhook": { + "auth": true, + "display-name": "Delete a webhook", + "docs": "Delete a webhook", + "errors": [ + "root.DeleteWebhookV3WebhooksIdDeleteRequestNotFoundError", + "root.DeleteWebhookV3WebhooksIdDeleteRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "DELETE" \ + "https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.webhooks.delete("e94a150d-40af-4e96-8aa7-2948a6b4d8d3") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + }, + ], + "method": "DELETE", + "pagination": undefined, + "path": "/v3/webhooks/{id}", + "path-parameters": { + "id": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getWebhook": { + "auth": true, + "display-name": "Retrieve a webhook", + "docs": "Retrieve a webhook", + "errors": [ + "root.GetWebhookV3WebhooksIdGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +webhook = sdk.webhooks.get("e94a150d-40af-4e96-8aa7-2948a6b4d8d3") +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "created_at": "2024-10-03T02:53:30Z", + "enabled": true, + "events": [ + "batches.completed", + "batches.error", + ], + "id": "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + "token": "hunter2", + "url": "https://example.com:5689", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/webhooks/{id}", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.Webhook", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getWebhooks": { + "auth": true, + "display-name": "List all webhooks", + "docs": "List all webhooks", + "errors": [ + "root.GetWebhooksV3WebhooksGetRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/webhooks" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +for webhook in sdk.webhooks.list().auto_paginate(): + ... ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "data": [ + { + "created_at": "2024-10-03T02:53:30Z", + "enabled": true, + "events": [ + "batches.completed", + "batches.error", + ], + "id": "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + "token": "hunter2", + "url": "https://example.com:5689", + }, + ], + "next_cursor": "XjdHaksD", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/webhooks", + "response": { + "docs": "Successful Response", + "type": "root.PagedResponseWebhook", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "patchWebhook": { + "auth": true, + "display-name": "Update a webhook", + "docs": "Update a webhook. Fields that aren't specified in the body will remain unchanged", + "errors": [ + "root.PatchWebhookV3WebhooksIdPatchRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "events": [ + "batches.completed", + "batches.error" + ], + "enabled": false + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +wh = sdk.webhooks.patch( + "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + events=['batches.completed', 'batches.error'], + enabled=False, +) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "request": {}, + "response": { + "body": { + "created_at": "2024-10-03T02:53:30Z", + "enabled": true, + "events": [ + "batches.completed", + "batches.error", + ], + "id": "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + "token": "hunter2", + "url": "https://example.com:5689", + }, + }, + }, + ], + "method": "PATCH", + "pagination": undefined, + "path": "/v3/webhooks/{id}", + "path-parameters": { + "id": "string", + }, + "request": { + "body": { + "properties": { + "enabled": { + "docs": "Whether the webhook is enabled or not.", + "type": "optional<boolean>", + }, + "events": { + "docs": "A list of events that this webhook subscribes to", + "type": "optional<list<WebhookPatchEventsItem>>", + }, + "token": { + "docs": "A secret string used to authenticate the webhook. This value will be included in the `X-Ntropy-Token` header when sending requests to the webhook", + "type": "optional<string>", + "validation": { + "format": undefined, + "maxLength": 128, + "minLength": undefined, + "pattern": undefined, + }, + }, + "url": { + "docs": "The URL of the webhook", + "type": "optional<string>", + "validation": { + "format": "uri", + "maxLength": 1024, + "minLength": 1, + "pattern": undefined, + }, + }, + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "WebhookPatch", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Successful Response", + "type": "root.Webhook", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "postWebhook": { + "auth": true, + "display-name": "Create a webhook", + "docs": "Create a webhook to be called when certain events occur.", + "errors": [ + "root.PostWebhookV3WebhooksPostRequestUnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/webhooks" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "url": "https://example.com:5689", + "events": [ + "batches.completed", + "batches.error" + ], + "token": "hunter2" + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.webhooks.create( + url="https://example.com:5689", + events="['batches.completed', 'batches.error']", + token="hunter2", +) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": { + "events": [ + "reports.resolved", + ], + "url": "url", + }, + "response": { + "body": { + "created_at": "2024-10-03T02:53:30Z", + "enabled": true, + "events": [ + "batches.completed", + "batches.error", + ], + "id": "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + "token": "hunter2", + "url": "https://example.com:5689", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/webhooks", + "request": { + "body": { + "properties": { + "events": { + "docs": "A list of events that this webhook subscribes to", + "type": "list<WebhookBaseEventsItem>", + }, + "token": { + "docs": "A secret string used to authenticate the webhook. This value will be included in the `X-Ntropy-Token` header when sending requests to the webhook", + "type": "optional<string>", + "validation": { + "format": undefined, + "maxLength": 128, + "minLength": undefined, + "pattern": undefined, + }, + }, + "url": { + "docs": "The URL of the webhook", + "type": "string", + "validation": { + "format": "uri", + "maxLength": 1024, + "minLength": 1, + "pattern": undefined, + }, + }, + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "WebhookBase", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Successful Response", + "type": "root.Webhook", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "types": { + "WebhookBaseEventsItem": { + "enum": [ + { + "name": "ReportsResolved", + "value": "reports.resolved", + }, + { + "name": "ReportsRejected", + "value": "reports.rejected", + }, + { + "name": "ReportsPending", + "value": "reports.pending", + }, + { + "name": "BankStatementsCompleted", + "value": "bank_statements.completed", + }, + { + "name": "BankStatementsError", + "value": "bank_statements.error", + }, + { + "name": "BatchesCompleted", + "value": "batches.completed", + }, + { + "name": "BatchesError", + "value": "batches.error", + }, + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "WebhookPatchEventsItem": { + "enum": [ + { + "name": "ReportsResolved", + "value": "reports.resolved", + }, + { + "name": "ReportsRejected", + "value": "reports.rejected", + }, + { + "name": "ReportsPending", + "value": "reports.pending", + }, + { + "name": "BankStatementsCompleted", + "value": "bank_statements.completed", + }, + { + "name": "BankStatementsError", + "value": "bank_statements.error", + }, + { + "name": "BatchesCompleted", + "value": "batches.completed", + }, + { + "name": "BatchesError", + "value": "batches.error", + }, + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getWebhooks: + path: /v3/webhooks + method: GET + auth: true + docs: List all webhooks + source: + openapi: ../openapi.yml + display-name: List all webhooks + response: + docs: Successful Response + type: root.PagedResponseWebhook + errors: + - root.GetWebhooksV3WebhooksGetRequestUnprocessableEntityError + examples: + - response: + body: + next_cursor: XjdHaksD + data: + - url: https://example.com:5689 + events: + - batches.completed + - batches.error + token: hunter2 + id: e94a150d-40af-4e96-8aa7-2948a6b4d8d3 + created_at: '2024-10-03T02:53:30Z' + enabled: true + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/webhooks" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + for webhook in sdk.webhooks.list().auto_paginate(): + ... + postWebhook: + path: /v3/webhooks + method: POST + auth: true + docs: Create a webhook to be called when certain events occur. + source: + openapi: ../openapi.yml + display-name: Create a webhook + request: + name: WebhookBase + body: + properties: + url: + type: string + docs: The URL of the webhook + validation: + format: uri + minLength: 1 + maxLength: 1024 + events: + docs: A list of events that this webhook subscribes to + type: list<WebhookBaseEventsItem> + token: + type: optional<string> + docs: >- + A secret string used to authenticate the webhook. This value + will be included in the `X-Ntropy-Token` header when sending + requests to the webhook + validation: + maxLength: 128 + content-type: application/json + response: + docs: Successful Response + type: root.Webhook + errors: + - root.PostWebhookV3WebhooksPostRequestUnprocessableEntityError + examples: + - request: + url: url + events: + - reports.resolved + response: + body: + url: https://example.com:5689 + events: + - batches.completed + - batches.error + token: hunter2 + id: e94a150d-40af-4e96-8aa7-2948a6b4d8d3 + created_at: '2024-10-03T02:53:30Z' + enabled: true + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/webhooks" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "url": "https://example.com:5689", + "events": [ + "batches.completed", + "batches.error" + ], + "token": "hunter2" + }]' + + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.webhooks.create( + url="https://example.com:5689", + events="['batches.completed', 'batches.error']", + token="hunter2", + ) + getWebhook: + path: /v3/webhooks/{id} + method: GET + auth: true + docs: Retrieve a webhook + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve a webhook + response: + docs: Successful Response + type: root.Webhook + errors: + - root.GetWebhookV3WebhooksIdGetRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + url: https://example.com:5689 + events: + - batches.completed + - batches.error + token: hunter2 + id: e94a150d-40af-4e96-8aa7-2948a6b4d8d3 + created_at: '2024-10-03T02:53:30Z' + enabled: true + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: > + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + webhook = + sdk.webhooks.get("e94a150d-40af-4e96-8aa7-2948a6b4d8d3") + deleteWebhook: + path: /v3/webhooks/{id} + method: DELETE + auth: true + docs: Delete a webhook + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Delete a webhook + errors: + - root.DeleteWebhookV3WebhooksIdDeleteRequestNotFoundError + - root.DeleteWebhookV3WebhooksIdDeleteRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "DELETE" \ + "https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.webhooks.delete("e94a150d-40af-4e96-8aa7-2948a6b4d8d3") + patchWebhook: + path: /v3/webhooks/{id} + method: PATCH + auth: true + docs: >- + Update a webhook. Fields that aren't specified in the body will remain + unchanged + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Update a webhook + request: + name: WebhookPatch + body: + properties: + url: + type: optional<string> + docs: The URL of the webhook + validation: + format: uri + minLength: 1 + maxLength: 1024 + events: + type: optional<list<WebhookPatchEventsItem>> + docs: A list of events that this webhook subscribes to + token: + type: optional<string> + docs: >- + A secret string used to authenticate the webhook. This value + will be included in the `X-Ntropy-Token` header when sending + requests to the webhook + validation: + maxLength: 128 + enabled: + type: optional<boolean> + docs: Whether the webhook is enabled or not. + content-type: application/json + response: + docs: Successful Response + type: root.Webhook + errors: + - root.PatchWebhookV3WebhooksIdPatchRequestUnprocessableEntityError + examples: + - path-parameters: + id: id + request: {} + response: + body: + url: https://example.com:5689 + events: + - batches.completed + - batches.error + token: hunter2 + id: e94a150d-40af-4e96-8aa7-2948a6b4d8d3 + created_at: '2024-10-03T02:53:30Z' + enabled: true + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "events": [ + "batches.completed", + "batches.error" + ], + "enabled": false + }]' + + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + wh = sdk.webhooks.patch( + "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + events=['batches.completed', 'batches.error'], + enabled=False, + ) + source: + openapi: ../openapi.yml + display-name: Webhooks +docs: > + + The Webhooks API allows you to receive notifications when certain events + occur, + + such as when a batch or bank statement finishes processing. + + + When an event occurs, Ntropy will make a POST request to the `url` of the + + webhook. If you specified a `token` when creating the webhook, this string + will + + be included in the `X-Ntropy-Token` header. The webhook call has a timeout + limit of 10 + + seconds, so any processing of the event +types: + WebhookBaseEventsItem: + enum: + - value: reports.resolved + name: ReportsResolved + - value: reports.rejected + name: ReportsRejected + - value: reports.pending + name: ReportsPending + - value: bank_statements.completed + name: BankStatementsCompleted + - value: bank_statements.error + name: BankStatementsError + - value: batches.completed + name: BatchesCompleted + - value: batches.error + name: BatchesError + source: + openapi: ../openapi.yml + WebhookPatchEventsItem: + enum: + - value: reports.resolved + name: ReportsResolved + - value: reports.rejected + name: ReportsRejected + - value: reports.pending + name: ReportsPending + - value: bank_statements.completed + name: BankStatementsCompleted + - value: bank_statements.error + name: BankStatementsError + - value: batches.completed + name: BatchesCompleted + - value: batches.error + name: BatchesError + source: + openapi: ../openapi.yml +", + }, + }, + "packageMarkers": {}, + "rootApiFile": { + "contents": { + "auth": "APIKeyHeader", + "auth-schemes": { + "APIKeyHeader": { + "header": "X-Api-Key", + "name": "apiKey", + "type": "string", + }, + }, + "default-environment": "Default", + "display-name": "Ntropy Transaction API", + "environments": { + "Default": "https://api.ntropy.com", + }, + "error-discrimination": { + "strategy": "status-code", + }, + "name": "api", + }, + "defaultUrl": undefined, + "rawContents": "name: api +error-discrimination: + strategy: status-code +display-name: Ntropy Transaction API +environments: + Default: https://api.ntropy.com +default-environment: Default +auth-schemes: + APIKeyHeader: + header: X-Api-Key + name: apiKey + type: string +auth: APIKeyHeader +", + }, +} \ No newline at end of file diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-ir/ntropy.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-ir/ntropy.json new file mode 100644 index 00000000000..0babf21c358 --- /dev/null +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-ir/ntropy.json @@ -0,0 +1,17567 @@ +{ + "title": "Ntropy Transaction API", + "servers": [ + { + "url": "https://api.ntropy.com", + "description": "Production server (uses live data)." + } + ], + "tags": { + "tagsById": { + "Enrichment": { + "id": "Enrichment", + "description": "\nThe Enrichment API allows you to submit multiple transactions for enrichment in a single request. It supports both \nsynchronous and asynchronous submission of transactions.\n\nTransactions enriched by these endpoints are accessible via the [Transactions API](#tag/Transactions) \nand only accessible by the API key that has submitted them. Each transaction is identified by an id, if you submit two\ntransactions the same id, the most recent will replace the previous one. Transactions also accept an account holder.\nNot supplying one will disable both categorization and recurrence.\n\nFor more information on account holder attributes, please refer to \n[this](../../../account-holders/#optional-account-holder-fields) guide.\n\nComplete guide: [Transaction Enrichment](../../../enrichment/introduction).\n" + }, + "Transactions": { + "id": "Transactions", + "description": "\nThe Transaction API allows you to manage, retrieve and search through enriched transactions. A transaction contains\nboth the enrichment fields and the original input fields. They are made available after being \n[enriched](#tag/Enrichment).\n" + }, + "Account Holders": { + "id": "Account Holders", + "description": "\nThe Account Holder API allows you to retrieve, create and modify account holders. An account holder represents an\nentity that holds an account associated with transactions. An account holder can either be a business or an individual\nperson - consumer.\n\nThe fields chosen for an account holder are used by our enrichment process and can dramatically improve the accuracy\nof the results. \n\nComplete guide: [Account Holders](../../../account-holders).\n" + }, + "Recurrence": { + "id": "Recurrence", + "description": "\nThe Recurrence API allows you to identify and categorize recurring patterns found in the transactions of an \n[account holder](#tag/Account-Holders), such as periodic payments or subscriptions and group them \ninto recurrence groups. Each recurrence group contains detailed information about the pattern, \nsuch as periodicity, amount and counterparty.\n\nTransactions can be added to an account holder via the [Enrichment API](#tag/Enrichment). \nIt is crucial that transactions are submitted with the [correct](../../../account-holders) \naccount holder information as the recurrence calculation relies heavily on it.\n\nComplete guide: [Recurrence](../../../enrichment/recurrence).\n" + }, + "Bank statements": { + "id": "Bank statements", + "description": "\nThe Bank Statements API allows you to manage and extract information from bank statements. We support extraction of\naccount holder information, account information and transaction records. Files should be uploaded in PDF format.\n\nDuring the extraction process, the bank statements undergo several status changes:\n| Status | Description |\n|----------|------------------------------------------------------------------------|\n|processing|The upload was successful. Extraction is in progress. |\n|completed |The extraction was successful. Results are available. |\n|error |An error occurred during extraction. Check `error` for more information.|\n\n\nA list of error codes for the `error` status can be found below:\n| Code | Description |\n|----------------------|-------------------------------------------|\n|invalid_bank_statement|Failed to process file as a bank statement.|\n|internal_error |Internal error. Please contact support. |\n\n\nComplete guide: [Bank Statements](../../../bank-statements).\n" + }, + "Webhooks": { + "id": "Webhooks", + "description": "\nThe Webhooks API allows you to receive notifications when certain events occur,\nsuch as when a batch or bank statement finishes processing. \n\nWhen an event occurs, Ntropy will make a POST request to the `url` of the\nwebhook. If you specified a `token` when creating the webhook, this string will\nbe included in the `X-Ntropy-Token` header. The webhook call has a timeout limit of 10 \nseconds, so any processing of the event \n" + }, + "Personalization": { + "id": "Personalization", + "description": "\nThe Personalization API allows you to customize the output of enrichment by\nuploading a set of rules. For more information, see our documentation on\n[Personalization](None).\n" + }, + "Reports": { + "id": "Reports", + "description": "\nThe Reports API allows you to flag transactions with incorrect fields. You can also track the progress of each\nreport either through the API or using [webhooks](#tag/Webhooks).\n" + } + }, + "orderedTagIds": [ + "Enrichment", + "Transactions", + "Account Holders", + "Recurrence", + "Bank statements", + "Webhooks", + "Personalization", + "Reports" + ] + }, + "hasEndpointsMarkedInternal": false, + "endpoints": [ + { + "summary": "Retrieve a transaction", + "audiences": [], + "operationId": "get_transaction_v3_transactions__id__get", + "tags": [ + "Transactions" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "GetTransactionV3TransactionsIdGetRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetTransactionV3TransactionsIdGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetTransactionV3TransactionsIdGetResponse", + "schema": "Transaction", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Transaction with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "authed": true, + "method": "GET", + "path": "/v3/transactions/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "id": { + "value": { + "value": "xbx8YP14g565Xk", + "type": "string" + }, + "type": "primitive" + }, + "description": { + "value": { + "value": "SQ* STARBUCKS NW 43RD", + "type": "string" + }, + "type": "primitive" + }, + "date": { + "value": { + "value": "2024-03-30", + "type": "string" + }, + "type": "primitive" + }, + "amount": { + "value": { + "value": 10, + "type": "double" + }, + "type": "primitive" + }, + "entry_type": { + "value": "outgoing", + "type": "enum" + }, + "currency": { + "value": "USD", + "type": "enum" + }, + "entities": { + "properties": { + "counterparty": { + "properties": { + "id": { + "value": { + "value": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Starbucks", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 5814, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "type": { + "value": "organization", + "type": "enum" + } + }, + "type": "object" + }, + "intermediaries": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Square", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "squareup.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/squareup.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 1, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "type": { + "value": "payment_processor", + "type": "enum" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "categories": { + "properties": { + "general": { + "value": { + "value": "outgoing - coffee shops", + "type": "string" + }, + "type": "primitive" + }, + "accounting": { + "value": "operational expenses", + "type": "enum" + } + }, + "type": "object" + }, + "location": { + "properties": { + "raw_address": { + "value": { + "value": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "type": "string" + }, + "type": "primitive" + }, + "structured": { + "properties": { + "street": { + "value": { + "value": "Nw 43rd Street 5480", + "type": "string" + }, + "type": "primitive" + }, + "city": { + "value": { + "value": "Gainesville", + "type": "string" + }, + "type": "primitive" + }, + "state": { + "value": { + "value": "Florida", + "type": "string" + }, + "type": "primitive" + }, + "postcode": { + "value": { + "value": "32653", + "type": "string" + }, + "type": "primitive" + }, + "country_code": { + "value": { + "value": "US", + "type": "string" + }, + "type": "primitive" + }, + "country": { + "value": { + "value": "United States", + "type": "string" + }, + "type": "primitive" + }, + "latitude": { + "value": { + "value": 29.704558, + "type": "double" + }, + "type": "primitive" + }, + "longitude": { + "value": { + "value": -82.389277, + "type": "double" + }, + "type": "primitive" + }, + "google_maps_url": { + "value": { + "value": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "type": "string" + }, + "type": "primitive" + }, + "apple_maps_url": { + "value": { + "value": "https://maps.apple.com/?q=29.704558,-82.389277", + "type": "string" + }, + "type": "primitive" + }, + "store_number": { + "value": { + "value": "store_number", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "error": { + "properties": { + "code": { + "value": "account_holder_not_found", + "type": "enum" + }, + "message": { + "value": { + "value": "message", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "created_at": { + "value": { + "value": "2024-03-30T00:00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "account_holder_id": { + "value": { + "value": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "type": "string" + }, + "type": "primitive" + }, + "recurrence": { + "properties": { + "type": { + "value": "recurring", + "type": "enum" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\ntx = sdk.transactions.get(\"xbx8YP14g565Xk\") ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Deletes a transaction", + "audiences": [], + "operationId": "delete_transaction_v3_transactions__id__delete", + "tags": [ + "Transactions" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "DeleteTransactionV3TransactionsIdDeleteRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "DeleteTransactionV3TransactionsIdDeleteRequest", + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Transaction with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Deleting a transaction will also delete it from our systems. This operation is permanent.", + "authed": true, + "method": "DELETE", + "path": "/v3/transactions/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"DELETE\" \\\n \"https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\ntx = sdk.transactions.delete(\"xbx8YP14g565Xk\") ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "List all transactions", + "audiences": [], + "operationId": "list_transactions_v3_transactions_get", + "tags": [ + "Transactions" + ], + "pathParameters": [], + "queryParameters": [ + { + "description": "Only return transactions older or equal than this date", + "name": "created_after", + "schema": { + "generatedName": "ListTransactionsV3TransactionsGetRequestCreatedAfter", + "title": "Created After", + "description": "Only return transactions older or equal than this date", + "value": { + "description": "Only return transactions older or equal than this date", + "schema": { + "type": "datetime" + }, + "generatedName": "ListTransactionsV3TransactionsGetRequestCreatedAfter", + "title": "Created After", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "Only return transactions newer than this date", + "name": "created_before", + "schema": { + "generatedName": "ListTransactionsV3TransactionsGetRequestCreatedBefore", + "title": "Created Before", + "description": "Only return transactions newer than this date", + "value": { + "description": "Only return transactions newer than this date", + "schema": { + "type": "datetime" + }, + "generatedName": "ListTransactionsV3TransactionsGetRequestCreatedBefore", + "title": "Created Before", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "Starting point for the set of transactions", + "name": "cursor", + "schema": { + "generatedName": "ListTransactionsV3TransactionsGetRequestCursor", + "nameOverride": "Cursor", + "title": "Cursor", + "description": "Starting point for the set of transactions", + "value": { + "description": "Starting point for the set of transactions", + "schema": { + "type": "string" + }, + "generatedName": "ListTransactionsV3TransactionsGetRequestCursor", + "nameOverride": "Cursor", + "title": "Cursor", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "The limit of transactions to be returned", + "name": "limit", + "schema": { + "generatedName": "ListTransactionsV3TransactionsGetRequestLimit", + "nameOverride": "Limit", + "title": "Limit", + "description": "The limit of transactions to be returned", + "value": { + "description": "The limit of transactions to be returned", + "schema": { + "default": 25, + "minimum": 1, + "maximum": 500, + "type": "int" + }, + "generatedName": "ListTransactionsV3TransactionsGetRequestLimit", + "nameOverride": "Limit", + "title": "Limit", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "If specified, only return the transactions of this account holder", + "name": "account_holder_id", + "schema": { + "generatedName": "ListTransactionsV3TransactionsGetRequestAccountHolderId", + "title": "Account Holder Id", + "description": "If specified, only return the transactions of this account holder", + "value": { + "description": "If specified, only return the transactions of this account holder", + "schema": { + "type": "string" + }, + "generatedName": "ListTransactionsV3TransactionsGetRequestAccountHolderId", + "title": "Account Holder Id", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "headers": [], + "generatedRequestName": "ListTransactionsV3TransactionsGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "ListTransactionsV3TransactionsGetResponse", + "schema": "PagedResponse_Transaction", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Return a list of enriched transactions starting with the most recent one.", + "authed": true, + "method": "GET", + "path": "/v3/transactions", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "next_cursor": { + "value": { + "value": "XjdHaksD", + "type": "string" + }, + "type": "primitive" + }, + "data": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "xbx8YP14g565Xk", + "type": "string" + }, + "type": "primitive" + }, + "description": { + "value": { + "value": "SQ* STARBUCKS NW 43RD", + "type": "string" + }, + "type": "primitive" + }, + "date": { + "value": { + "value": "2024-03-30", + "type": "string" + }, + "type": "primitive" + }, + "amount": { + "value": { + "value": 10, + "type": "double" + }, + "type": "primitive" + }, + "entry_type": { + "value": "outgoing", + "type": "enum" + }, + "currency": { + "value": "USD", + "type": "enum" + }, + "entities": { + "properties": { + "counterparty": { + "properties": { + "id": { + "value": { + "value": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Starbucks", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 5814, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "type": { + "value": "organization", + "type": "enum" + } + }, + "type": "object" + }, + "intermediaries": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Square", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "squareup.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/squareup.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 1, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "type": { + "value": "payment_processor", + "type": "enum" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "categories": { + "properties": { + "general": { + "value": { + "value": "outgoing - coffee shops", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "location": { + "properties": { + "raw_address": { + "value": { + "value": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "type": "string" + }, + "type": "primitive" + }, + "structured": { + "properties": { + "street": { + "value": { + "value": "Nw 43rd Street 5480", + "type": "string" + }, + "type": "primitive" + }, + "city": { + "value": { + "value": "Gainesville", + "type": "string" + }, + "type": "primitive" + }, + "state": { + "value": { + "value": "Florida", + "type": "string" + }, + "type": "primitive" + }, + "postcode": { + "value": { + "value": "32653", + "type": "string" + }, + "type": "primitive" + }, + "country_code": { + "value": { + "value": "US", + "type": "string" + }, + "type": "primitive" + }, + "country": { + "value": { + "value": "United States", + "type": "string" + }, + "type": "primitive" + }, + "latitude": { + "value": { + "value": 29.704558, + "type": "double" + }, + "type": "primitive" + }, + "longitude": { + "value": { + "value": -82.389277, + "type": "double" + }, + "type": "primitive" + }, + "google_maps_url": { + "value": { + "value": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "type": "string" + }, + "type": "primitive" + }, + "apple_maps_url": { + "value": { + "value": "https://maps.apple.com/?q=29.704558,-82.389277", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "error": { + "properties": { + "code": { + "value": "account_holder_not_found", + "type": "enum" + }, + "message": { + "value": { + "value": "message", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "created_at": { + "value": { + "value": "2024-03-30T00:00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "account_holder_id": { + "value": { + "value": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "type": "string" + }, + "type": "primitive" + }, + "recurrence": { + "properties": { + "type": { + "value": "recurring", + "type": "enum" + } + }, + "type": "object" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/transactions\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nfor tx in sdk.transactions.list().auto_paginate():\n ... ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Synchronously enrich transactions", + "audiences": [], + "operationId": "post_transactions_v3_transactions_post", + "tags": [ + "Transactions" + ], + "pathParameters": [], + "queryParameters": [], + "headers": [], + "generatedRequestName": "PostTransactionsV3TransactionsPostRequest", + "request": { + "schema": { + "generatedName": "PostTransactionsV3TransactionsPostRequest", + "schema": "SyncEnrichmentInput", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "contentType": "application/json", + "fullExamples": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "response": { + "description": "Enriched transactions.", + "schema": { + "generatedName": "PostTransactionsV3TransactionsPostResponse", + "schema": "SyncEnrichmentOutput", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Enriches a list of transactions in synchronous fashion. The enriched transactions returned in\nthe order that they were submitted. Webhook events are not triggered for this operation. \n\nThis endpoint supports up to 1000 transactions. \n\nIf you want more throughput and live updates refer to the \n[async enrichment endpoint](../batches/post-batch).", + "authed": true, + "method": "POST", + "path": "/v3/transactions", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "request": { + "properties": { + "transactions": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "xbx8YP14g565Xk", + "type": "string" + }, + "type": "primitive" + }, + "description": { + "value": { + "value": "SQ* STARBUCKS NW 43RD", + "type": "string" + }, + "type": "primitive" + }, + "date": { + "value": { + "value": "2024-03-30", + "type": "string" + }, + "type": "primitive" + }, + "amount": { + "value": { + "value": 10, + "type": "double" + }, + "type": "primitive" + }, + "entry_type": { + "value": "outgoing", + "type": "enum" + }, + "currency": { + "value": "USD", + "type": "enum" + }, + "account_holder_id": { + "value": { + "value": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "type": "string" + }, + "type": "primitive" + }, + "location": { + "properties": { + "country": { + "value": "US", + "type": "enum" + } + }, + "type": "object" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "response": { + "value": { + "properties": { + "transactions": { + "value": [ + { + "properties": { + "entities": { + "properties": { + "counterparty": { + "properties": { + "id": { + "value": { + "value": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Starbucks", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 5814, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "type": { + "value": "organization", + "type": "enum" + } + }, + "type": "object" + }, + "intermediaries": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Square", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "squareup.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/squareup.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 1, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "type": { + "value": "payment_processor", + "type": "enum" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "categories": { + "properties": { + "general": { + "value": { + "value": "outgoing - coffee shops", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "location": { + "properties": { + "raw_address": { + "value": { + "value": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "type": "string" + }, + "type": "primitive" + }, + "structured": { + "properties": { + "street": { + "value": { + "value": "Nw 43rd Street 5480", + "type": "string" + }, + "type": "primitive" + }, + "city": { + "value": { + "value": "Gainesville", + "type": "string" + }, + "type": "primitive" + }, + "state": { + "value": { + "value": "Florida", + "type": "string" + }, + "type": "primitive" + }, + "postcode": { + "value": { + "value": "32653", + "type": "string" + }, + "type": "primitive" + }, + "country_code": { + "value": { + "value": "US", + "type": "string" + }, + "type": "primitive" + }, + "country": { + "value": { + "value": "United States", + "type": "string" + }, + "type": "primitive" + }, + "latitude": { + "value": { + "value": 29.704558, + "type": "double" + }, + "type": "primitive" + }, + "longitude": { + "value": { + "value": -82.389277, + "type": "double" + }, + "type": "primitive" + }, + "google_maps_url": { + "value": { + "value": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "type": "string" + }, + "type": "primitive" + }, + "apple_maps_url": { + "value": { + "value": "https://maps.apple.com/?q=29.704558,-82.389277", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "error": { + "properties": { + "code": { + "value": "account_holder_not_found", + "type": "enum" + }, + "message": { + "value": { + "value": "message", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "created_at": { + "value": { + "value": "2024-03-30T00:00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "id": { + "value": { + "value": "xbx8YP14g565Xk", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/transactions\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" \\\n -H \"Content-Type: application/json\" \\\n -d '[{\n \"id\": \"xbx8YP14g565Xk\",\n \"description\": \"SQ* STARBUCKS NW 43RD\",\n \"date\": \"2024-03-30\",\n \"amount\": 10.0,\n \"entry_type\": \"outgoing\",\n \"currency\": \"USD\",\n \"account_holder_id\": \"35b927b6-6fda-40aa-93b8-95b47c2b2cad\",\n \"location\": {\n \"country\": \"US\"\n }\n }]'\n ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK, TransactionInput, LocationInput\n\nsdk = SDK(\"cd1H...Wmhl\")\nenriched = sdk.transactions.create([\n TransactionInput(\n id=\"xbx8YP14g565Xk\",\n description=\"SQ* STARBUCKS NW 43RD\",\n account_holder_id=\"35b927b6-6fda-40aa-93b8-95b47c2b2cad\",\n amount=10.0,\n entry_type=\"outgoing\",\n date=\"2024-03-30\",\n currency=\"USD\",\n location=LocationInput(\n country=\"US\",\n )\n )\n]) ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Assign a transaction to an account holder", + "audiences": [], + "operationId": "set_transaction_ah_v3_transactions__id__assign_post", + "tags": [ + "Transactions" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "SetTransactionAhV3TransactionsIdAssignPostRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "SetTransactionAhV3TransactionsIdAssignPostRequest", + "request": { + "schema": { + "generatedName": "SetTransactionAhV3TransactionsIdAssignPostRequest", + "schema": "Body_set_transaction_ah_v3_transactions__id__assign_post", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "contentType": "application/json", + "fullExamples": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "SetTransactionAhV3TransactionsIdAssignPostResponse", + "schema": "Transaction", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Transaction or account holder with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Changes the account holder associated with the transaction. The old and new account holder must share the same categories", + "authed": true, + "method": "POST", + "path": "/v3/transactions/{id}/assign", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "request": { + "properties": { + "account_holder_id": { + "value": { + "value": "account_holder_id", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "response": { + "value": { + "properties": { + "id": { + "value": { + "value": "xbx8YP14g565Xk", + "type": "string" + }, + "type": "primitive" + }, + "description": { + "value": { + "value": "SQ* STARBUCKS NW 43RD", + "type": "string" + }, + "type": "primitive" + }, + "date": { + "value": { + "value": "2024-03-30", + "type": "string" + }, + "type": "primitive" + }, + "amount": { + "value": { + "value": 10, + "type": "double" + }, + "type": "primitive" + }, + "entry_type": { + "value": "outgoing", + "type": "enum" + }, + "currency": { + "value": "USD", + "type": "enum" + }, + "entities": { + "properties": { + "counterparty": { + "properties": { + "id": { + "value": { + "value": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Starbucks", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 5814, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "type": { + "value": "organization", + "type": "enum" + } + }, + "type": "object" + }, + "intermediaries": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Square", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "squareup.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/squareup.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 1, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "type": { + "value": "payment_processor", + "type": "enum" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "categories": { + "properties": { + "general": { + "value": { + "value": "outgoing - coffee shops", + "type": "string" + }, + "type": "primitive" + }, + "accounting": { + "value": "operational expenses", + "type": "enum" + } + }, + "type": "object" + }, + "location": { + "properties": { + "raw_address": { + "value": { + "value": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "type": "string" + }, + "type": "primitive" + }, + "structured": { + "properties": { + "street": { + "value": { + "value": "Nw 43rd Street 5480", + "type": "string" + }, + "type": "primitive" + }, + "city": { + "value": { + "value": "Gainesville", + "type": "string" + }, + "type": "primitive" + }, + "state": { + "value": { + "value": "Florida", + "type": "string" + }, + "type": "primitive" + }, + "postcode": { + "value": { + "value": "32653", + "type": "string" + }, + "type": "primitive" + }, + "country_code": { + "value": { + "value": "US", + "type": "string" + }, + "type": "primitive" + }, + "country": { + "value": { + "value": "United States", + "type": "string" + }, + "type": "primitive" + }, + "latitude": { + "value": { + "value": 29.704558, + "type": "double" + }, + "type": "primitive" + }, + "longitude": { + "value": { + "value": -82.389277, + "type": "double" + }, + "type": "primitive" + }, + "google_maps_url": { + "value": { + "value": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "type": "string" + }, + "type": "primitive" + }, + "apple_maps_url": { + "value": { + "value": "https://maps.apple.com/?q=29.704558,-82.389277", + "type": "string" + }, + "type": "primitive" + }, + "store_number": { + "value": { + "value": "store_number", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "error": { + "properties": { + "code": { + "value": "account_holder_not_found", + "type": "enum" + }, + "message": { + "value": { + "value": "message", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "created_at": { + "value": { + "value": "2024-03-30T00:00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "account_holder_id": { + "value": { + "value": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "type": "string" + }, + "type": "primitive" + }, + "recurrence": { + "properties": { + "type": { + "value": "recurring", + "type": "enum" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"account_holder_id\": \"35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\n }]'\n ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.transactions.assign(\n transaction_id=\"xbx8YP14g565Xk\", \n account_holder_id=\"35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\n) ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "List all batches", + "audiences": [], + "operationId": "get_batches_v3_batches_get", + "tags": [ + "Batches" + ], + "pathParameters": [], + "queryParameters": [ + { + "description": "Only return batches older or equal than this date", + "name": "created_after", + "schema": { + "generatedName": "GetBatchesV3BatchesGetRequestCreatedAfter", + "title": "Created After", + "description": "Only return batches older or equal than this date", + "value": { + "description": "Only return batches older or equal than this date", + "schema": { + "type": "datetime" + }, + "generatedName": "GetBatchesV3BatchesGetRequestCreatedAfter", + "title": "Created After", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "Only return batches newer than this date", + "name": "created_before", + "schema": { + "generatedName": "GetBatchesV3BatchesGetRequestCreatedBefore", + "title": "Created Before", + "description": "Only return batches newer than this date", + "value": { + "description": "Only return batches newer than this date", + "schema": { + "type": "datetime" + }, + "generatedName": "GetBatchesV3BatchesGetRequestCreatedBefore", + "title": "Created Before", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "Starting point for the set of batches", + "name": "cursor", + "schema": { + "generatedName": "GetBatchesV3BatchesGetRequestCursor", + "nameOverride": "Cursor", + "title": "Cursor", + "description": "Starting point for the set of batches", + "value": { + "description": "Starting point for the set of batches", + "schema": { + "type": "string" + }, + "generatedName": "GetBatchesV3BatchesGetRequestCursor", + "nameOverride": "Cursor", + "title": "Cursor", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "The limit of batches to be returned", + "name": "limit", + "schema": { + "generatedName": "GetBatchesV3BatchesGetRequestLimit", + "nameOverride": "Limit", + "title": "Limit", + "description": "The limit of batches to be returned", + "value": { + "description": "The limit of batches to be returned", + "schema": { + "default": 10, + "minimum": 1, + "maximum": 50, + "type": "int" + }, + "generatedName": "GetBatchesV3BatchesGetRequestLimit", + "nameOverride": "Limit", + "title": "Limit", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "If specified, only return batches with this status", + "name": "status", + "schema": { + "generatedName": "GetBatchesV3BatchesGetRequestStatus", + "description": "If specified, only return batches with this status", + "value": { + "generatedName": "GetBatchesV3BatchesGetRequestStatus", + "schema": "BatchStatus", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "headers": [], + "generatedRequestName": "GetBatchesV3BatchesGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetBatchesV3BatchesGetResponse", + "schema": "PagedResponse_Batch", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Returns a list of submitted batches starting with the most recent one.", + "authed": true, + "method": "GET", + "path": "/v3/batches", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "next_cursor": { + "value": { + "value": "XjdHaksD", + "type": "string" + }, + "type": "primitive" + }, + "data": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "203613d2-83c8-4130-8809-d14206eeec20", + "type": "string" + }, + "type": "primitive" + }, + "status": { + "value": "processing", + "type": "enum" + }, + "created_at": { + "value": { + "value": "2024-01-01T00:00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "updated_at": { + "value": { + "value": "2024-01-01T00:00:30", + "type": "datetime" + }, + "type": "primitive" + }, + "progress": { + "value": { + "value": 0, + "type": "int" + }, + "type": "primitive" + }, + "total": { + "value": { + "value": 4000, + "type": "int" + }, + "type": "primitive" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/batches\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nfor batch in sdk.batches.list().auto_paginate():\n ... ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Submit a batch of transactions", + "audiences": [], + "operationId": "post_batch_v3_batches_post", + "tags": [ + "Batches" + ], + "pathParameters": [], + "queryParameters": [], + "headers": [], + "generatedRequestName": "PostBatchV3BatchesPostRequest", + "request": { + "schema": { + "generatedName": "PostBatchV3BatchesPostRequest", + "schema": "AsyncEnrichmentInput", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "contentType": "application/json", + "fullExamples": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "PostBatchV3BatchesPostResponse", + "schema": "Batch", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Creates a batch of transactions and enriches it in an asynchronous fashion. A batch, representing the status of the \nenrichment progress is returned as a result of the submission. \n\nIn order to be notified on the status of the batch, you can setup [webhooks](../../../webhooks) and receive \nthe respective notifications. Alternatively, you can \n[poll](../../../enrichment/introduction/#viewing-the-progress-of-a-batch) for the status of the batch using its id.\n\nThis endpoints supports up to 24960 transactions.", + "authed": true, + "method": "POST", + "path": "/v3/batches", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "request": { + "properties": { + "transactions": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "xbx8YP14g565Xk", + "type": "string" + }, + "type": "primitive" + }, + "description": { + "value": { + "value": "SQ* STARBUCKS NW 43RD", + "type": "string" + }, + "type": "primitive" + }, + "date": { + "value": { + "value": "2024-03-30", + "type": "string" + }, + "type": "primitive" + }, + "amount": { + "value": { + "value": 10, + "type": "double" + }, + "type": "primitive" + }, + "entry_type": { + "value": "outgoing", + "type": "enum" + }, + "currency": { + "value": "USD", + "type": "enum" + }, + "account_holder_id": { + "value": { + "value": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "type": "string" + }, + "type": "primitive" + }, + "location": { + "properties": { + "country": { + "value": "US", + "type": "enum" + } + }, + "type": "object" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "response": { + "value": { + "properties": { + "id": { + "value": { + "value": "203613d2-83c8-4130-8809-d14206eeec20", + "type": "string" + }, + "type": "primitive" + }, + "status": { + "value": "processing", + "type": "enum" + }, + "created_at": { + "value": { + "value": "2024-01-01T00:00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "updated_at": { + "value": { + "value": "2024-01-01T00:00:30", + "type": "datetime" + }, + "type": "primitive" + }, + "progress": { + "value": { + "value": 0, + "type": "int" + }, + "type": "primitive" + }, + "total": { + "value": { + "value": 4000, + "type": "int" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/batches/\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" \\\n -H \"Content-Type: application/json\" \\\n -d '[{\n \"id\": \"xbx8YP14g565Xk\",\n \"description\": \"SQ* STARBUCKS NW 43RD\",\n \"date\": \"2024-03-30\",\n \"amount\": 10.0,\n \"entry_type\": \"outgoing\",\n \"currency\": \"USD\",\n \"account_holder_id\": \"35b927b6-6fda-40aa-93b8-95b47c2b2cad\",\n \"location\": {\n \"country\": \"US\"\n }\n }]'\n ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK, TransactionInput, LocationInput\n\nsdk = SDK(\"cd1H...Wmhl\")\nbatch = sdk.batches.create([\n TransactionInput(\n id=\"xbx8YP14g565Xk\",\n description=\"SQ* STARBUCKS NW 43RD\",\n account_holder_id=\"35b927b6-6fda-40aa-93b8-95b47c2b2cad\",\n amount=10.0,\n entry_type=\"outgoing\",\n date=\"2024-03-30\",\n currency=\"USD\",\n location=LocationInput(\n country=\"US\",\n )\n )\n]) ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Retrieve a batch", + "audiences": [], + "operationId": "get_single_batch_v3_batches__id__get", + "tags": [ + "Batches" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "GetSingleBatchV3BatchesIdGetRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetSingleBatchV3BatchesIdGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetSingleBatchV3BatchesIdGetResponse", + "schema": "Batch", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Batch with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "authed": true, + "method": "GET", + "path": "/v3/batches/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "id": { + "value": { + "value": "203613d2-83c8-4130-8809-d14206eeec20", + "type": "string" + }, + "type": "primitive" + }, + "status": { + "value": "processing", + "type": "enum" + }, + "created_at": { + "value": { + "value": "2024-01-01T00:00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "updated_at": { + "value": { + "value": "2024-01-01T00:00:30", + "type": "datetime" + }, + "type": "primitive" + }, + "progress": { + "value": { + "value": 0, + "type": "int" + }, + "type": "primitive" + }, + "total": { + "value": { + "value": 4000, + "type": "int" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/batches/203613d2-83c8-4130-8809-d14206eeec20\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nbatch = sdk.batches.get(\"f203613d2-83c8-4130-8809-d14206eeec20\") ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Retrieve the results of a batch", + "audiences": [], + "operationId": "get_batch_results_v3_batches__id__results_get", + "tags": [ + "Batches" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "GetBatchResultsV3BatchesIdResultsGetRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetBatchResultsV3BatchesIdResultsGetRequest", + "response": { + "description": "Returned batch of transaction enrichment results.", + "schema": { + "generatedName": "GetBatchResultsV3BatchesIdResultsGetResponse", + "schema": "BatchResult", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Batch with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Returns the results of the enrichment request. The resulting enriched transactions are returned in the same order they were submitted. Results are available after the batch has finished processing.", + "authed": true, + "method": "GET", + "path": "/v3/batches/{id}/results", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "id": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + }, + "total": { + "value": { + "value": 1, + "type": "int" + }, + "type": "primitive" + }, + "status": { + "value": "processing", + "type": "enum" + }, + "results": { + "properties": { + "transactions": { + "value": [ + { + "properties": { + "entities": { + "properties": { + "counterparty": { + "properties": { + "id": { + "value": { + "value": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Starbucks", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 5814, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "type": { + "value": "organization", + "type": "enum" + } + }, + "type": "object" + }, + "intermediaries": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Square", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "squareup.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/squareup.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 1, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "type": { + "value": "payment_processor", + "type": "enum" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "categories": { + "properties": { + "general": { + "value": { + "value": "outgoing - coffee shops", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "location": { + "properties": { + "raw_address": { + "value": { + "value": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "type": "string" + }, + "type": "primitive" + }, + "structured": { + "properties": { + "street": { + "value": { + "value": "Nw 43rd Street 5480", + "type": "string" + }, + "type": "primitive" + }, + "city": { + "value": { + "value": "Gainesville", + "type": "string" + }, + "type": "primitive" + }, + "state": { + "value": { + "value": "Florida", + "type": "string" + }, + "type": "primitive" + }, + "postcode": { + "value": { + "value": "32653", + "type": "string" + }, + "type": "primitive" + }, + "country_code": { + "value": { + "value": "US", + "type": "string" + }, + "type": "primitive" + }, + "country": { + "value": { + "value": "United States", + "type": "string" + }, + "type": "primitive" + }, + "latitude": { + "value": { + "value": 29.704558, + "type": "double" + }, + "type": "primitive" + }, + "longitude": { + "value": { + "value": -82.389277, + "type": "double" + }, + "type": "primitive" + }, + "google_maps_url": { + "value": { + "value": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "type": "string" + }, + "type": "primitive" + }, + "apple_maps_url": { + "value": { + "value": "https://maps.apple.com/?q=29.704558,-82.389277", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "created_at": { + "value": { + "value": "2024-03-30T00:00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "id": { + "value": { + "value": "xbx8YP14g565Xk", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/batches/203613d2-83c8-4130-8809-d14206eeec20/results\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nresults = sdk.batches.wait_for_results(\"f203613d2-83c8-4130-8809-d14206eeec20\")\n", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "List all bank statements", + "audiences": [], + "operationId": "get_bank_statements_v3_bank_statements_get", + "tags": [ + "Bank statements" + ], + "pathParameters": [], + "queryParameters": [ + { + "description": "Only return bank statements older or equal than this date", + "name": "created_after", + "schema": { + "generatedName": "GetBankStatementsV3BankStatementsGetRequestCreatedAfter", + "title": "Created After", + "description": "Only return bank statements older or equal than this date", + "value": { + "description": "Only return bank statements older or equal than this date", + "schema": { + "type": "datetime" + }, + "generatedName": "GetBankStatementsV3BankStatementsGetRequestCreatedAfter", + "title": "Created After", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "Only return bank statements newer than this date", + "name": "created_before", + "schema": { + "generatedName": "GetBankStatementsV3BankStatementsGetRequestCreatedBefore", + "title": "Created Before", + "description": "Only return bank statements newer than this date", + "value": { + "description": "Only return bank statements newer than this date", + "schema": { + "type": "datetime" + }, + "generatedName": "GetBankStatementsV3BankStatementsGetRequestCreatedBefore", + "title": "Created Before", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "Starting point for the set of bank statements", + "name": "cursor", + "schema": { + "generatedName": "GetBankStatementsV3BankStatementsGetRequestCursor", + "nameOverride": "Cursor", + "title": "Cursor", + "description": "Starting point for the set of bank statements", + "value": { + "description": "Starting point for the set of bank statements", + "schema": { + "type": "string" + }, + "generatedName": "GetBankStatementsV3BankStatementsGetRequestCursor", + "nameOverride": "Cursor", + "title": "Cursor", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "The limit of bank statements to be returned", + "name": "limit", + "schema": { + "generatedName": "GetBankStatementsV3BankStatementsGetRequestLimit", + "nameOverride": "Limit", + "title": "Limit", + "description": "The limit of bank statements to be returned", + "value": { + "description": "The limit of bank statements to be returned", + "schema": { + "default": 10, + "minimum": 1, + "maximum": 50, + "type": "int" + }, + "generatedName": "GetBankStatementsV3BankStatementsGetRequestLimit", + "nameOverride": "Limit", + "title": "Limit", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "If specified, only return bank statements with this status", + "name": "status", + "schema": { + "generatedName": "GetBankStatementsV3BankStatementsGetRequestStatus", + "description": "If specified, only return bank statements with this status", + "value": { + "generatedName": "GetBankStatementsV3BankStatementsGetRequestStatus", + "schema": "DocumentStatus", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "headers": [], + "generatedRequestName": "GetBankStatementsV3BankStatementsGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetBankStatementsV3BankStatementsGetResponse", + "schema": "PagedResponse_BankStatement", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Return a list of submitted bank statements starting with the most recent one.", + "authed": true, + "method": "GET", + "path": "/v3/bank_statements", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "next_cursor": { + "value": { + "value": "XjdHaksD", + "type": "string" + }, + "type": "primitive" + }, + "data": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "7f8dceac-2848-472d-b5c3-55cdbaf35a9b", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "2014-01-01_2014-02-01_statement.pdf", + "type": "string" + }, + "type": "primitive" + }, + "status": { + "value": "processing", + "type": "enum" + }, + "created_at": { + "value": { + "value": "2024-01-01T00:00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "file": { + "properties": { + "no_pages": { + "value": { + "value": 1, + "type": "int" + }, + "type": "primitive" + }, + "size": { + "value": { + "value": 4096, + "type": "int" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "error": { + "properties": { + "code": { + "value": "invalid_bank_statement", + "type": "enum" + }, + "message": { + "value": { + "value": "message", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/bank_statements\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nfor bs in sdk.bank_statements.list().auto_paginate():\n ... ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Submit a bank statement PDF", + "audiences": [], + "operationId": "post_bank_statement_v3_bank_statements_post", + "tags": [ + "Bank statements" + ], + "pathParameters": [], + "queryParameters": [], + "headers": [], + "generatedRequestName": "PostBankStatementV3BankStatementsPostRequest", + "request": { + "name": "Body_post_bank_statement_v3_bank_statements_post", + "properties": [ + { + "key": "file", + "schema": { + "isOptional": false, + "isArray": false, + "type": "file" + } + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "multipart" + }, + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "PostBankStatementV3BankStatementsPostResponse", + "schema": "BankStatement", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Upload a PDF file and queue it for extraction.", + "authed": true, + "method": "POST", + "path": "/v3/bank_statements", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "request": { + "properties": {}, + "type": "object" + }, + "response": { + "value": { + "properties": { + "id": { + "value": { + "value": "7f8dceac-2848-472d-b5c3-55cdbaf35a9b", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "2014-01-01_2014-02-01_statement.pdf", + "type": "string" + }, + "type": "primitive" + }, + "status": { + "value": "processing", + "type": "enum" + }, + "created_at": { + "value": { + "value": "2024-01-01T00:00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "file": { + "properties": { + "no_pages": { + "value": { + "value": 1, + "type": "int" + }, + "type": "primitive" + }, + "size": { + "value": { + "value": 4096, + "type": "int" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "error": { + "properties": { + "code": { + "value": "invalid_bank_statement", + "type": "enum" + }, + "message": { + "value": { + "value": "message", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/bank_statements\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" \\\n --form file=@bank_statement.pdf\n ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nwith open('bank_statement.pdf', 'rb') as fh:\n bank_statement = sdk.bank_statements.create(fh)\n results = sdk.bank_statement.wait_for_results(bank_statement.id) ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Retrieve a bank statement", + "audiences": [], + "operationId": "get_bank_statement_v3_bank_statements__id__get", + "tags": [ + "Bank statements" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "GetBankStatementV3BankStatementsIdGetRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetBankStatementV3BankStatementsIdGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetBankStatementV3BankStatementsIdGetResponse", + "schema": "BankStatement", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Bank statement with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "authed": true, + "method": "GET", + "path": "/v3/bank_statements/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "id": { + "value": { + "value": "7f8dceac-2848-472d-b5c3-55cdbaf35a9b", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "2014-01-01_2014-02-01_statement.pdf", + "type": "string" + }, + "type": "primitive" + }, + "status": { + "value": "processing", + "type": "enum" + }, + "created_at": { + "value": { + "value": "2024-01-01T00:00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "file": { + "properties": { + "no_pages": { + "value": { + "value": 1, + "type": "int" + }, + "type": "primitive" + }, + "size": { + "value": { + "value": 4096, + "type": "int" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "error": { + "properties": { + "code": { + "value": "invalid_bank_statement", + "type": "enum" + }, + "message": { + "value": { + "value": "message", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nbs = sdk.bank_statements.get(\"7f8dceac-2848-472d-b5c3-55cdbaf35a9b\") ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Deletes a bank statement", + "audiences": [], + "operationId": "delete_bank_statement_v3_bank_statements__id__delete", + "tags": [ + "Bank statements" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "DeleteBankStatementV3BankStatementsIdDeleteRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "DeleteBankStatementV3BankStatementsIdDeleteRequest", + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Bank statement with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "authed": true, + "method": "DELETE", + "path": "/v3/bank_statements/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "codeSamples": [], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Quickly extract account holder, institution and first account", + "audiences": [], + "operationId": "get_bank_statement_statement_info_v3_bank_statements__id__overview_post", + "tags": [ + "Bank statements" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "GetBankStatementStatementInfoV3BankStatementsIdOverviewPostRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetBankStatementStatementInfoV3BankStatementsIdOverviewPostRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetBankStatementStatementInfoV3BankStatementsIdOverviewPostResponse", + "schema": "StatementInfo", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Bank statement with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Extracts account holder, bank and account information extracted from the first page of the bank statement, which is typically available before the full results. This is a synchronous call.\n\nComplete guide: [Overview](../../../bank-statements)", + "authed": true, + "method": "POST", + "path": "/v3/bank_statements/{id}/overview", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "institution": { + "value": { + "value": "Well's Fargo", + "type": "string" + }, + "type": "primitive" + }, + "start_date": { + "value": { + "value": "2024-01-01", + "type": "string" + }, + "type": "primitive" + }, + "end_date": { + "value": { + "value": "2024-02-01", + "type": "string" + }, + "type": "primitive" + }, + "account_holder": { + "properties": { + "type": { + "value": "consumer", + "type": "enum" + }, + "name": { + "value": { + "value": "John Doe", + "type": "string" + }, + "type": "primitive" + }, + "address": { + "properties": { + "street": { + "value": { + "value": "601 Rosebud Avenue", + "type": "string" + }, + "type": "primitive" + }, + "postcode": { + "value": { + "value": "77901", + "type": "string" + }, + "type": "primitive" + }, + "city": { + "value": { + "value": "Victoria", + "type": "string" + }, + "type": "primitive" + }, + "state": { + "value": { + "value": "Texas", + "type": "string" + }, + "type": "primitive" + }, + "country": { + "value": { + "value": "United States", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "accounts": { + "value": [ + { + "properties": { + "type": { + "value": { + "value": "checking", + "type": "string" + }, + "type": "primitive" + }, + "number": { + "value": { + "value": "83721", + "type": "string" + }, + "type": "primitive" + }, + "opening_balance": { + "value": { + "value": 1000, + "type": "double" + }, + "type": "primitive" + }, + "closing_balance": { + "value": { + "value": 1500, + "type": "double" + }, + "type": "primitive" + }, + "iso_currency_code": { + "value": { + "value": "USD", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b/overview\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\noverview = sdk.bank_statements.overview(\n \"7f8dceac-2848-472d-b5c3-55cdbaf35a9b\"\n) ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Retrieve the extraction results", + "audiences": [], + "operationId": "get_bank_statement_result_v3_bank_statements__id__results_get", + "tags": [ + "Bank statements" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "GetBankStatementResultV3BankStatementsIdResultsGetRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetBankStatementResultV3BankStatementsIdResultsGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetBankStatementResultV3BankStatementsIdResultsGetResponse", + "schema": "BankStatementResults", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Bank statement with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Return the extracted account information and associated transactions from a bank statement PDF. The results are accessible once the statement's status is `completed`.", + "authed": true, + "method": "GET", + "path": "/v3/bank_statements/{id}/results", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "accounts": { + "value": [ + { + "properties": { + "number": { + "value": { + "value": "972913289", + "type": "string" + }, + "type": "primitive" + }, + "opening_balance": { + "value": { + "value": 400, + "type": "double" + }, + "type": "primitive" + }, + "closing_balance": { + "value": { + "value": 200, + "type": "double" + }, + "type": "primitive" + }, + "start_date": { + "value": { + "value": "2024-01-01", + "type": "string" + }, + "type": "primitive" + }, + "end_date": { + "value": { + "value": "2024-02-01", + "type": "string" + }, + "type": "primitive" + }, + "is_balance_reconciled": { + "value": { + "value": true, + "type": "boolean" + }, + "type": "primitive" + }, + "total_incoming": { + "value": { + "value": 0, + "type": "double" + }, + "type": "primitive" + }, + "total_outgoing": { + "value": { + "value": 200, + "type": "double" + }, + "type": "primitive" + }, + "transactions": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "xbx8YP14g565Xk", + "type": "string" + }, + "type": "primitive" + }, + "description": { + "value": { + "value": "SQ* STARBUCKS NW 43RD", + "type": "string" + }, + "type": "primitive" + }, + "date": { + "value": { + "value": "2024-03-30", + "type": "string" + }, + "type": "primitive" + }, + "amount": { + "value": { + "value": 200, + "type": "double" + }, + "type": "primitive" + }, + "entry_type": { + "value": "outgoing", + "type": "enum" + }, + "currency": { + "value": "USD", + "type": "enum" + }, + "running_balance": { + "value": { + "value": 400, + "type": "double" + }, + "type": "primitive" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b/results\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nbs = sdk.bank_statements.get(\"7f8dceac-2848-472d-b5c3-55cdbaf35a9b\")\nresults = sdk.bank_statements.wait_for_results(\n \"7f8dceac-2848-472d-b5c3-55cdbaf35a9b\"\n) ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Retrieve an account holder.", + "audiences": [], + "operationId": "get_account_holder_v3_account_holders__id__get", + "tags": [ + "Account Holders" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "GetAccountHolderV3AccountHoldersIdGetRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetAccountHolderV3AccountHoldersIdGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetAccountHolderV3AccountHoldersIdGetResponse", + "schema": "AccountHolderExternal", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Account holder with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "authed": true, + "method": "GET", + "path": "/v3/account_holders/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "id": { + "value": { + "value": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "type": "string" + }, + "type": "primitive" + }, + "type": { + "value": "consumer", + "type": "enum" + }, + "name": { + "value": { + "value": "John Doe", + "type": "string" + }, + "type": "primitive" + }, + "created_at": { + "value": { + "value": "2024-03-30T00:00:00", + "type": "datetime" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nah = sdk.account_holders.get(\"f35b927b6-6fda-40aa-93b8-95b47c2b2cad\") ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Deletes an account holder and their transactions", + "audiences": [], + "operationId": "delete_account_holder_v3_account_holders__id__delete", + "tags": [ + "Account Holders" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "DeleteAccountHolderV3AccountHoldersIdDeleteRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "DeleteAccountHolderV3AccountHoldersIdDeleteRequest", + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Account holder with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Deletes all of the transactions in the account holder's history. This operation is permanent and irreversible", + "authed": true, + "method": "DELETE", + "path": "/v3/account_holders/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"DELETE\" \\\n \"https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nah = sdk.account_holders.delete(\"f35b927b6-6fda-40aa-93b8-95b47c2b2cad\") ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "List all account holders.", + "audiences": [], + "operationId": "get_account_holders_v3_account_holders_get", + "tags": [ + "Account Holders" + ], + "pathParameters": [], + "queryParameters": [ + { + "description": "Only return account holders older or equal than this date", + "name": "created_after", + "schema": { + "generatedName": "GetAccountHoldersV3AccountHoldersGetRequestCreatedAfter", + "title": "Created After", + "description": "Only return account holders older or equal than this date", + "value": { + "description": "Only return account holders older or equal than this date", + "schema": { + "type": "datetime" + }, + "generatedName": "GetAccountHoldersV3AccountHoldersGetRequestCreatedAfter", + "title": "Created After", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "Only return account holders newer than this date", + "name": "created_before", + "schema": { + "generatedName": "GetAccountHoldersV3AccountHoldersGetRequestCreatedBefore", + "title": "Created Before", + "description": "Only return account holders newer than this date", + "value": { + "description": "Only return account holders newer than this date", + "schema": { + "type": "datetime" + }, + "generatedName": "GetAccountHoldersV3AccountHoldersGetRequestCreatedBefore", + "title": "Created Before", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "Starting point for the set of account holders", + "name": "cursor", + "schema": { + "generatedName": "GetAccountHoldersV3AccountHoldersGetRequestCursor", + "nameOverride": "Cursor", + "title": "Cursor", + "description": "Starting point for the set of account holders", + "value": { + "description": "Starting point for the set of account holders", + "schema": { + "type": "string" + }, + "generatedName": "GetAccountHoldersV3AccountHoldersGetRequestCursor", + "nameOverride": "Cursor", + "title": "Cursor", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "The limit of account holders to be returned", + "name": "limit", + "schema": { + "generatedName": "GetAccountHoldersV3AccountHoldersGetRequestLimit", + "nameOverride": "Limit", + "title": "Limit", + "description": "The limit of account holders to be returned", + "value": { + "description": "The limit of account holders to be returned", + "schema": { + "default": 10, + "minimum": 1, + "maximum": 50, + "type": "int" + }, + "generatedName": "GetAccountHoldersV3AccountHoldersGetRequestLimit", + "nameOverride": "Limit", + "title": "Limit", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "headers": [], + "generatedRequestName": "GetAccountHoldersV3AccountHoldersGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetAccountHoldersV3AccountHoldersGetResponse", + "schema": "PagedResponse_AccountHolderExternal", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "authed": true, + "method": "GET", + "path": "/v3/account_holders", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "next_cursor": { + "value": { + "value": "XjdHaksD", + "type": "string" + }, + "type": "primitive" + }, + "data": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "type": "string" + }, + "type": "primitive" + }, + "type": { + "value": "consumer", + "type": "enum" + }, + "name": { + "value": { + "value": "John Doe", + "type": "string" + }, + "type": "primitive" + }, + "created_at": { + "value": { + "value": "2024-03-30T00:00:00", + "type": "datetime" + }, + "type": "primitive" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nah = sdk.account_holders.get(\"f35b927b6-6fda-40aa-93b8-95b47c2b2cad\") ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Create an account holder.", + "audiences": [], + "operationId": "create_account_holder_v3_account_holders_post", + "tags": [ + "Account Holders" + ], + "pathParameters": [], + "queryParameters": [], + "headers": [], + "generatedRequestName": "CreateAccountHolderV3AccountHoldersPostRequest", + "request": { + "schema": { + "generatedName": "CreateAccountHolderV3AccountHoldersPostRequest", + "schema": "AccountHolderCreate", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "contentType": "application/json", + "fullExamples": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "CreateAccountHolderV3AccountHoldersPostResponse", + "schema": "AccountHolderExternal", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "400": { + "generatedName": "BadRequestError", + "schema": { + "generatedName": "BadRequestErrorBody", + "type": "unknown" + }, + "description": "Account holder with the provided id already exists.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "authed": true, + "method": "POST", + "path": "/v3/account_holders", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "request": { + "properties": { + "id": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + }, + "type": { + "value": "consumer", + "type": "enum" + } + }, + "type": "object" + }, + "response": { + "value": { + "properties": { + "id": { + "value": { + "value": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "type": "string" + }, + "type": "primitive" + }, + "type": { + "value": "consumer", + "type": "enum" + }, + "name": { + "value": { + "value": "John Doe", + "type": "string" + }, + "type": "primitive" + }, + "created_at": { + "value": { + "value": "2024-03-30T00:00:00", + "type": "datetime" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/account_holders\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"id\": \"35b927b6-6fda-40aa-93b8-95b47c2b2cad\",\n \"type\": \"consumer\",\n \"name\": \"John Doe\"\n }]'\n ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nah = sdk.account_holders.create(\n id=\"35b927b6-6fda-40aa-93b8-95b47c2b2cad\",\n type=\"consumer\",\n name=\"John Doe\",\n) ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Find recurring groups in a transaction history", + "audiences": [], + "operationId": "get_account_holder_recurring_payments_v3_account_holders__id__recurring_groups_post", + "tags": [ + "Recurrence" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "GetAccountHolderRecurringPaymentsV3AccountHoldersIdRecurringGroupsPostRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetAccountHolderRecurringPaymentsV3AccountHoldersIdRecurringGroupsPostRequest", + "response": { + "description": "Successful Response", + "schema": { + "value": { + "generatedName": "GetAccountHolderRecurringPaymentsV3AccountHoldersIdRecurringGroupsPostResponseItem", + "schema": "RecurrenceGroup", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "GetAccountHolderRecurringPaymentsV3AccountHoldersIdRecurringGroupsPostResponse", + "title": "Response Get Account Holder Recurring Payments V3 Account Holders Id Recurring Groups Post", + "groupName": [], + "type": "array" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Account holder with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Identifies and categorizes recurring patterns found in the transaction history of the account holder, such as periodic payments or subscriptions. These patterns are called recurrence groups.", + "authed": true, + "method": "POST", + "path": "/v3/account_holders/{id}/recurring_groups", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "value": [ + { + "properties": { + "id": { + "value": { + "value": "8efbac45-9bd5-4b67-be29-334106198c40", + "type": "string" + }, + "type": "primitive" + }, + "start_date": { + "value": { + "value": "2024-03-01", + "type": "string" + }, + "type": "primitive" + }, + "end_date": { + "value": { + "value": "2024-03-30", + "type": "string" + }, + "type": "primitive" + }, + "total_amount": { + "value": { + "value": 300, + "type": "double" + }, + "type": "primitive" + }, + "average_amount": { + "value": { + "value": 10, + "type": "double" + }, + "type": "primitive" + }, + "periodicity_in_days": { + "value": { + "value": 1, + "type": "double" + }, + "type": "primitive" + }, + "periodicity": { + "value": "daily", + "type": "enum" + }, + "counterparty": { + "properties": { + "id": { + "value": { + "value": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Starbucks", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 5814, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "type": { + "value": "organization", + "type": "enum" + } + }, + "type": "object" + }, + "categories": { + "properties": { + "general": { + "value": { + "value": "outgoing - coffee shops", + "type": "string" + }, + "type": "primitive" + }, + "accounting": { + "value": "operational expenses", + "type": "enum" + } + }, + "type": "object" + }, + "transaction_ids": { + "value": [ + { + "value": { + "value": "2dc6SE8A7cTQ2jUdUadCg", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "tQYAhhl0XNkl1wasacpVQ", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "NNJTqvockIdKnYxBqPlJw", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + } + }, + "type": "object" + } + ], + "type": "array" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad/recurring_groups\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nrecurring_groups = sdk.account_holders.recurring_groups(\n \"35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\n) ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "List all webhooks", + "audiences": [], + "operationId": "get_webhooks_v3_webhooks_get", + "tags": [ + "Webhooks" + ], + "pathParameters": [], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetWebhooksV3WebhooksGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetWebhooksV3WebhooksGetResponse", + "schema": "PagedResponse_Webhook", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "List all webhooks", + "authed": true, + "method": "GET", + "path": "/v3/webhooks", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "next_cursor": { + "value": { + "value": "XjdHaksD", + "type": "string" + }, + "type": "primitive" + }, + "data": { + "value": [ + { + "properties": { + "url": { + "value": { + "value": "https://example.com:5689", + "type": "string" + }, + "type": "primitive" + }, + "events": { + "value": [ + { + "value": "batches.completed", + "type": "enum" + }, + { + "value": "batches.error", + "type": "enum" + } + ], + "type": "array" + }, + "token": { + "value": { + "value": "hunter2", + "type": "string" + }, + "type": "primitive" + }, + "id": { + "value": { + "value": "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + "type": "string" + }, + "type": "primitive" + }, + "created_at": { + "value": { + "value": "2024-10-03T02:53:30.167953", + "type": "datetime" + }, + "type": "primitive" + }, + "enabled": { + "value": { + "value": true, + "type": "boolean" + }, + "type": "primitive" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/webhooks\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nfor webhook in sdk.webhooks.list().auto_paginate():\n ... ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Create a webhook", + "audiences": [], + "operationId": "post_webhook_v3_webhooks_post", + "tags": [ + "Webhooks" + ], + "pathParameters": [], + "queryParameters": [], + "headers": [], + "generatedRequestName": "PostWebhookV3WebhooksPostRequest", + "request": { + "schema": { + "generatedName": "PostWebhookV3WebhooksPostRequest", + "schema": "WebhookBase", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "contentType": "application/json", + "fullExamples": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "PostWebhookV3WebhooksPostResponse", + "schema": "Webhook", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Create a webhook to be called when certain events occur.", + "authed": true, + "method": "POST", + "path": "/v3/webhooks", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "request": { + "properties": { + "url": { + "value": { + "value": "url", + "type": "string" + }, + "type": "primitive" + }, + "events": { + "value": [ + { + "value": "reports.resolved", + "type": "enum" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "response": { + "value": { + "properties": { + "url": { + "value": { + "value": "https://example.com:5689", + "type": "string" + }, + "type": "primitive" + }, + "events": { + "value": [ + { + "value": "batches.completed", + "type": "enum" + }, + { + "value": "batches.error", + "type": "enum" + } + ], + "type": "array" + }, + "token": { + "value": { + "value": "hunter2", + "type": "string" + }, + "type": "primitive" + }, + "id": { + "value": { + "value": "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + "type": "string" + }, + "type": "primitive" + }, + "created_at": { + "value": { + "value": "2024-10-03T02:53:30.167953", + "type": "datetime" + }, + "type": "primitive" + }, + "enabled": { + "value": { + "value": true, + "type": "boolean" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/webhooks\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"url\": \"https://example.com:5689\",\n \"events\": [\n \"batches.completed\",\n \"batches.error\"\n ],\n \"token\": \"hunter2\"\n }]'\n ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.webhooks.create(\n url=\"https://example.com:5689\",\n events=\"['batches.completed', 'batches.error']\",\n token=\"hunter2\",\n) ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Retrieve a webhook", + "audiences": [], + "operationId": "get_webhook_v3_webhooks__id__get", + "tags": [ + "Webhooks" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "GetWebhookV3WebhooksIdGetRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetWebhookV3WebhooksIdGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetWebhookV3WebhooksIdGetResponse", + "schema": "Webhook", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Retrieve a webhook", + "authed": true, + "method": "GET", + "path": "/v3/webhooks/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "url": { + "value": { + "value": "https://example.com:5689", + "type": "string" + }, + "type": "primitive" + }, + "events": { + "value": [ + { + "value": "batches.completed", + "type": "enum" + }, + { + "value": "batches.error", + "type": "enum" + } + ], + "type": "array" + }, + "token": { + "value": { + "value": "hunter2", + "type": "string" + }, + "type": "primitive" + }, + "id": { + "value": { + "value": "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + "type": "string" + }, + "type": "primitive" + }, + "created_at": { + "value": { + "value": "2024-10-03T02:53:30.167953", + "type": "datetime" + }, + "type": "primitive" + }, + "enabled": { + "value": { + "value": true, + "type": "boolean" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nwebhook = sdk.webhooks.get(\"e94a150d-40af-4e96-8aa7-2948a6b4d8d3\")\n", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Delete a webhook", + "audiences": [], + "operationId": "delete_webhook_v3_webhooks__id__delete", + "tags": [ + "Webhooks" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "DeleteWebhookV3WebhooksIdDeleteRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "DeleteWebhookV3WebhooksIdDeleteRequest", + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Webhook with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Delete a webhook", + "authed": true, + "method": "DELETE", + "path": "/v3/webhooks/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"DELETE\" \\\n \"https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.webhooks.delete(\"e94a150d-40af-4e96-8aa7-2948a6b4d8d3\") ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Update a webhook", + "audiences": [], + "operationId": "patch_webhook_v3_webhooks__id__patch", + "tags": [ + "Webhooks" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "PatchWebhookV3WebhooksIdPatchRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "PatchWebhookV3WebhooksIdPatchRequest", + "request": { + "schema": { + "generatedName": "PatchWebhookV3WebhooksIdPatchRequest", + "schema": "WebhookPatch", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "contentType": "application/json", + "fullExamples": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "PatchWebhookV3WebhooksIdPatchResponse", + "schema": "Webhook", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Update a webhook. Fields that aren't specified in the body will remain unchanged", + "authed": true, + "method": "PATCH", + "path": "/v3/webhooks/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "request": { + "properties": {}, + "type": "object" + }, + "response": { + "value": { + "properties": { + "url": { + "value": { + "value": "https://example.com:5689", + "type": "string" + }, + "type": "primitive" + }, + "events": { + "value": [ + { + "value": "batches.completed", + "type": "enum" + }, + { + "value": "batches.error", + "type": "enum" + } + ], + "type": "array" + }, + "token": { + "value": { + "value": "hunter2", + "type": "string" + }, + "type": "primitive" + }, + "id": { + "value": { + "value": "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + "type": "string" + }, + "type": "primitive" + }, + "created_at": { + "value": { + "value": "2024-10-03T02:53:30.167953", + "type": "datetime" + }, + "type": "primitive" + }, + "enabled": { + "value": { + "value": true, + "type": "boolean" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"events\": [\n \"batches.completed\",\n \"batches.error\"\n ],\n \"enabled\": false\n }]'\n ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nwh = sdk.webhooks.patch(\n \"e94a150d-40af-4e96-8aa7-2948a6b4d8d3\",\n events=['batches.completed', 'batches.error'],\n enabled=False,\n)\n", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Get the current personalization ruleset.", + "audiences": [], + "operationId": "filter_get_v3_rules_get", + "tags": [ + "Personalization", + "Personalization" + ], + "pathParameters": [], + "queryParameters": [], + "headers": [], + "generatedRequestName": "FilterGetV3RulesGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "FilterGetV3RulesGetResponse", + "schema": "personalization", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Get the current personalization ruleset.", + "authed": true, + "method": "GET", + "path": "/v3/rules", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "value": [ + { + "properties": { + "if": { + "properties": { + "is_substring": { + "value": [], + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + ], + "type": "array" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/rules\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nrules = sdk.rules.get()\n", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Set the personalization ruleset.", + "audiences": [], + "operationId": "filter_post_v3_rules_post", + "tags": [ + "Personalization", + "Personalization" + ], + "pathParameters": [], + "queryParameters": [], + "headers": [], + "generatedRequestName": "FilterPostV3RulesPostRequest", + "request": { + "schema": { + "generatedName": "FilterPostV3RulesPostRequest", + "schema": "personalization", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "contentType": "application/json", + "fullExamples": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "FilterPostV3RulesPostResponse", + "type": "unknown" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "400": { + "generatedName": "BadRequestError", + "schema": { + "generatedName": "BadRequestErrorBody", + "type": "unknown" + }, + "description": "Provided ruleset has invalid structure", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "413": { + "generatedName": "ContentTooLargeError", + "schema": { + "generatedName": "ContentTooLargeErrorBody", + "type": "unknown" + }, + "description": "Ruleset was larger than 50KiB", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Set the personalization ruleset.", + "authed": true, + "method": "POST", + "path": "/v3/rules", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "request": { + "value": [ + { + "properties": { + "if": { + "properties": { + "is_substring": { + "value": [], + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + ], + "type": "array" + }, + "response": { + "value": { + "value": [ + { + "key": { + "value": "key", + "type": "string" + }, + "value": { + "value": { + "value": "value", + "type": "string" + }, + "type": "primitive" + } + } + ], + "type": "map" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/rules\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" \\\n -H \"Content-Type: application/json\" \\\n -d '[{\n \"if\": {\n \"is_substring\": [\n {\"get\": \"website\"},\n \"ntropy\"\n ]\n },\n \"then\": [\n {\"set\": \"logo\", \"to\": \"http://example.com/favicon.ico\"}\n ],\n \"else\": [\n {\"remove_label\": \"example label\"}\n ]\n }]'\n", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.rules.set([{\n \"if\": {\n \"is_substring\": [\n {\"get\": \"website\"},\n \"ntropy\"\n ]\n },\n \"then\": [\n {\"set\": \"logo\", \"to\": \"http://example.com/favicon.ico\"}\n ],\n \"else\": [\n {\"remove_label\": \"example label\"}\n ]\n}])\n", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Append a rule.", + "audiences": [], + "operationId": "filter_append_v3_rules_append_post", + "tags": [ + "Personalization", + "Personalization" + ], + "pathParameters": [], + "queryParameters": [], + "headers": [], + "generatedRequestName": "FilterAppendV3RulesAppendPostRequest", + "request": { + "schema": { + "generatedName": "FilterAppendV3RulesAppendPostRequest", + "schema": "Action", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "contentType": "application/json", + "fullExamples": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "FilterAppendV3RulesAppendPostResponse", + "type": "unknown" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "400": { + "generatedName": "BadRequestError", + "schema": { + "generatedName": "BadRequestErrorBody", + "type": "unknown" + }, + "description": "Provided rule has invalid structure", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "413": { + "generatedName": "ContentTooLargeError", + "schema": { + "generatedName": "ContentTooLargeErrorBody", + "type": "unknown" + }, + "description": "Ruleset after append was larger than 50KiB", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Append a rule to the personalization ruleset.", + "authed": true, + "method": "POST", + "path": "/v3/rules/append", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "request": { + "properties": { + "if": { + "value": { + "value": true, + "type": "boolean" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "response": { + "value": { + "value": [ + { + "key": { + "value": "key", + "type": "string" + }, + "value": { + "value": { + "value": "value", + "type": "string" + }, + "type": "primitive" + } + } + ], + "type": "map" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/rules/append\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"set\": \"logo\", \"to\": \"http://example.com/favicon.ico\"}'\n", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.rules.append({\"set\": \"logo\", \"to\": \"http://example.com/favicon.ico\"})\n", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Delete a rule.", + "audiences": [], + "operationId": "filter_delete_v3_rules__index__delete", + "tags": [ + "Personalization", + "Personalization" + ], + "pathParameters": [ + { + "name": "index", + "schema": { + "schema": { + "type": "int" + }, + "generatedName": "FilterDeleteV3RulesIndexDeleteRequestIndex", + "nameOverride": "Index", + "title": "Index", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "FilterDeleteV3RulesIndexDeleteRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "FilterDeleteV3RulesIndexDeleteResponse", + "type": "unknown" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "400": { + "generatedName": "BadRequestError", + "schema": { + "generatedName": "BadRequestErrorBody", + "type": "unknown" + }, + "description": "Provided index does not exist in ruleset", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Delete the rule at the specified index from the personalization ruleset.", + "authed": true, + "method": "DELETE", + "path": "/v3/rules/{index}", + "examples": [ + { + "pathParameters": [ + { + "name": "index", + "value": { + "value": { + "value": 1, + "type": "int" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "value": [ + { + "key": { + "value": "key", + "type": "string" + }, + "value": { + "value": { + "value": "value", + "type": "string" + }, + "type": "primitive" + } + } + ], + "type": "map" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"DELETE\" \\\n \"https://api.ntropy.com/v3/rules/0\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.rules.delete(0)\n", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Modify an existing rule.", + "audiences": [], + "operationId": "filter_patch_v3_rules__index__patch", + "tags": [ + "Personalization", + "Personalization" + ], + "pathParameters": [ + { + "name": "index", + "schema": { + "schema": { + "type": "int" + }, + "generatedName": "FilterPatchV3RulesIndexPatchRequestIndex", + "nameOverride": "Index", + "title": "Index", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "FilterPatchV3RulesIndexPatchRequest", + "request": { + "schema": { + "generatedName": "FilterPatchV3RulesIndexPatchRequest", + "schema": "Action", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "contentType": "application/json", + "fullExamples": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "FilterPatchV3RulesIndexPatchResponse", + "type": "unknown" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "400": { + "generatedName": "BadRequestError", + "schema": { + "generatedName": "BadRequestErrorBody", + "type": "unknown" + }, + "description": "Provided index does not exist in ruleset", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Modify an existing rule at the specified index on the ruleset.", + "authed": true, + "method": "PATCH", + "path": "/v3/rules/{index}", + "examples": [ + { + "pathParameters": [ + { + "name": "index", + "value": { + "value": { + "value": 1, + "type": "int" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "request": { + "properties": { + "if": { + "value": { + "value": true, + "type": "boolean" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "response": { + "value": { + "value": [ + { + "key": { + "value": "key", + "type": "string" + }, + "value": { + "value": { + "value": "value", + "type": "string" + }, + "type": "primitive" + } + } + ], + "type": "map" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"PATCH\" \\\n \"https://api.ntropy.com/v3/rules/0\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"set\": \"logo\", \"to\": \"http://example.com/favicon.ico\"}'\n", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.rules.patch(0, {\"set\": \"logo\", \"to\": \"http://example.com/favicon.ico\"})\n", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "List all reports", + "audiences": [], + "operationId": "get_reports_v3_reports_get", + "tags": [ + "Reports" + ], + "pathParameters": [], + "queryParameters": [ + { + "description": "Only return report older or equal than this date", + "name": "created_after", + "schema": { + "generatedName": "GetReportsV3ReportsGetRequestCreatedAfter", + "title": "Created After", + "description": "Only return report older or equal than this date", + "value": { + "description": "Only return report older or equal than this date", + "schema": { + "type": "datetime" + }, + "generatedName": "GetReportsV3ReportsGetRequestCreatedAfter", + "title": "Created After", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "Only return report newer than this date", + "name": "created_before", + "schema": { + "generatedName": "GetReportsV3ReportsGetRequestCreatedBefore", + "title": "Created Before", + "description": "Only return report newer than this date", + "value": { + "description": "Only return report newer than this date", + "schema": { + "type": "datetime" + }, + "generatedName": "GetReportsV3ReportsGetRequestCreatedBefore", + "title": "Created Before", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "Starting point for the set of report", + "name": "cursor", + "schema": { + "generatedName": "GetReportsV3ReportsGetRequestCursor", + "nameOverride": "Cursor", + "title": "Cursor", + "description": "Starting point for the set of report", + "value": { + "description": "Starting point for the set of report", + "schema": { + "type": "string" + }, + "generatedName": "GetReportsV3ReportsGetRequestCursor", + "nameOverride": "Cursor", + "title": "Cursor", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "The limit of report to be returned", + "name": "limit", + "schema": { + "generatedName": "GetReportsV3ReportsGetRequestLimit", + "nameOverride": "Limit", + "title": "Limit", + "description": "The limit of report to be returned", + "value": { + "description": "The limit of report to be returned", + "schema": { + "default": 10, + "minimum": 1, + "maximum": 50, + "type": "int" + }, + "generatedName": "GetReportsV3ReportsGetRequestLimit", + "nameOverride": "Limit", + "title": "Limit", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "If specified, only return reports with this status", + "name": "status", + "schema": { + "generatedName": "GetReportsV3ReportsGetRequestStatus", + "description": "If specified, only return reports with this status", + "value": { + "generatedName": "GetReportsV3ReportsGetRequestStatus", + "schema": "ReportStatus", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "headers": [], + "generatedRequestName": "GetReportsV3ReportsGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetReportsV3ReportsGetResponse", + "schema": "PagedResponse_Report_", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "List all reports", + "authed": true, + "method": "GET", + "path": "/v3/reports", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "next_cursor": { + "value": { + "value": "next_cursor", + "type": "string" + }, + "type": "primitive" + }, + "data": { + "value": [ + { + "properties": { + "transaction_id": { + "value": { + "value": "xbx8YP14g565Xk", + "type": "string" + }, + "type": "primitive" + }, + "description": { + "value": { + "value": "lorem ipsum", + "type": "string" + }, + "type": "primitive" + }, + "fields": { + "value": [ + { + "value": { + "value": ".entities.counterparty", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "id": { + "value": { + "value": "a652285d-de1b-4a6f-b6ce-45efa9be7952", + "type": "string" + }, + "type": "primitive" + }, + "created_at": { + "value": { + "value": "2024-10-03T02:53:30.167953+00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "status": { + "value": "open", + "type": "enum" + }, + "rejection_reason": { + "value": { + "value": "rejection_reason", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/reports\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nreports = sdk.reports.list()\n ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Create a report", + "audiences": [], + "operationId": "post_report_v3_reports_post", + "tags": [ + "Reports" + ], + "pathParameters": [], + "queryParameters": [], + "headers": [], + "generatedRequestName": "PostReportV3ReportsPostRequest", + "request": { + "schema": { + "generatedName": "PostReportV3ReportsPostRequest", + "schema": "ReportBase", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "contentType": "application/json", + "fullExamples": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "response": { + "description": "The newly created report", + "schema": { + "generatedName": "PostReportV3ReportsPostResponse", + "schema": "Report", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Report a transaction with incorrect fields.", + "authed": true, + "method": "POST", + "path": "/v3/reports", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "request": { + "properties": { + "transaction_id": { + "value": { + "value": "xbx8YP14g565Xk", + "type": "string" + }, + "type": "primitive" + }, + "description": { + "value": { + "value": "lorem ipsum", + "type": "string" + }, + "type": "primitive" + }, + "fields": { + "value": [ + { + "value": { + "value": ".entities.counterparty", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "response": { + "value": { + "properties": { + "transaction_id": { + "value": { + "value": "xbx8YP14g565Xk", + "type": "string" + }, + "type": "primitive" + }, + "description": { + "value": { + "value": "lorem ipsum", + "type": "string" + }, + "type": "primitive" + }, + "fields": { + "value": [ + { + "value": { + "value": ".entities.counterparty", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "id": { + "value": { + "value": "a652285d-de1b-4a6f-b6ce-45efa9be7952", + "type": "string" + }, + "type": "primitive" + }, + "created_at": { + "value": { + "value": "2024-10-03T02:53:30.167953+00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "status": { + "value": "open", + "type": "enum" + }, + "rejection_reason": { + "value": { + "value": "rejection_reason", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/reports\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"transaction_id\": \"xbx8YP14g565Xk\",\n \"description\": \"lorem ipsum\",\n \"fields\": [\n \".entities.counterparty\"\n ]\n }]'\n ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nreport = sdk.reports.create(\n transaction_id=\"xbx8YP14g565Xk\",\n description=\"lorem ipsum\",\n fields=['.entities.counterparty'],\n)\n", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Retrieve a report", + "audiences": [], + "operationId": "get_report_v3_reports__id__get", + "tags": [ + "Reports" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "GetReportV3ReportsIdGetRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetReportV3ReportsIdGetRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "GetReportV3ReportsIdGetResponse", + "schema": "Report", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Report with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Retrieve a report", + "authed": true, + "method": "GET", + "path": "/v3/reports/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "transaction_id": { + "value": { + "value": "xbx8YP14g565Xk", + "type": "string" + }, + "type": "primitive" + }, + "description": { + "value": { + "value": "lorem ipsum", + "type": "string" + }, + "type": "primitive" + }, + "fields": { + "value": [ + { + "value": { + "value": ".entities.counterparty", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "id": { + "value": { + "value": "a652285d-de1b-4a6f-b6ce-45efa9be7952", + "type": "string" + }, + "type": "primitive" + }, + "created_at": { + "value": { + "value": "2024-10-03T02:53:30.167953+00:00", + "type": "datetime" + }, + "type": "primitive" + }, + "status": { + "value": "open", + "type": "enum" + }, + "rejection_reason": { + "value": { + "value": "rejection_reason", + "type": "string" + }, + "type": "primitive" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/reports/a652285d-de1b-4a6f-b6ce-45efa9be7952\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nreport = sdk.reports.get(\"a652285d-de1b-4a6f-b6ce-45efa9be7952\")\n ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Delete a report", + "audiences": [], + "operationId": "delete_report_v3_reports__id__delete", + "tags": [ + "Reports" + ], + "pathParameters": [ + { + "name": "id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "DeleteReportV3ReportsIdDeleteRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "DeleteReportV3ReportsIdDeleteRequest", + "errors": { + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Report with the provided id not found.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Delete a report", + "authed": true, + "method": "DELETE", + "path": "/v3/reports/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "codeSamples": [], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Retrieve category set", + "audiences": [], + "operationId": "get_category_set_v3_categories__account_holder_type__get", + "tags": [ + "Categories" + ], + "pathParameters": [ + { + "name": "account_holder_type", + "schema": { + "generatedName": "GetCategorySetV3CategoriesAccountHolderTypeGetRequestAccountHolderType", + "schema": "AccountHolderType", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetCategorySetV3CategoriesAccountHolderTypeGetRequest", + "response": { + "description": "Category set for the selected type of account holder", + "schema": { + "generatedName": "GetCategorySetV3CategoriesAccountHolderTypeGetResponse", + "schema": "CategorySet", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Retrieves the set of categories. Category sets are different per account holder type.", + "authed": true, + "method": "GET", + "path": "/v3/categories/{account_holder_type}", + "examples": [ + { + "pathParameters": [ + { + "name": "account_holder_type", + "value": { + "value": "consumer", + "type": "enum" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "incoming": { + "value": [ + { + "value": { + "value": "transfer from investment app", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "transfer from stock broker", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "transfer from crypto broker", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "chargeback", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "freelance income", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "rideshare or delivery income", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "paycheck", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "benefits", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "interest earned", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "stock dividend", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "outgoing": { + "value": [ + { + "value": { + "value": "digital content and streaming", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "vending machine", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "reversal", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "transfer to investment app", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "transfer to stock broker", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "transfer to crypto broker", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "adjustment", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "intra account transfer", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "inter account transfer", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "peer to peer transfer", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "funeral service", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "ATM withdrawal", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "teller withdrawal", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/categories/consumer\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.categories.get(\"consumer\")\n", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Set a custom set of categories", + "audiences": [], + "operationId": "custom_categories_post_v3_categories__account_holder_type__post", + "tags": [ + "Categories" + ], + "pathParameters": [ + { + "name": "account_holder_type", + "schema": { + "generatedName": "CustomCategoriesPostV3CategoriesAccountHolderTypePostRequestAccountHolderType", + "schema": "AccountHolderType", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "CustomCategoriesPostV3CategoriesAccountHolderTypePostRequest", + "request": { + "schema": { + "generatedName": "CustomCategoriesPostV3CategoriesAccountHolderTypePostRequest", + "schema": "CustomCategorySet", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "contentType": "application/json", + "fullExamples": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "response": { + "description": "Custom categories successfully set.", + "schema": { + "generatedName": "CustomCategoriesPostV3CategoriesAccountHolderTypePostResponse", + "schema": "CustomCategorySet", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Sets a custom set of categories. Transactions that don't match a category will be categorized `not enough information` regardless of whether it is present in the set.", + "authed": true, + "method": "POST", + "path": "/v3/categories/{account_holder_type}", + "examples": [ + { + "pathParameters": [ + { + "name": "account_holder_type", + "value": { + "value": "consumer", + "type": "enum" + } + } + ], + "queryParameters": [], + "headers": [], + "request": { + "properties": { + "incoming": { + "value": [ + { + "value": { + "value": "salary", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "investment income", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "other income", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "outgoing": { + "value": [ + { + "value": { + "value": "rent", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "utilities", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "groceries", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "entertainment", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "response": { + "value": { + "properties": { + "incoming": { + "value": [ + { + "value": { + "value": "salary", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "investment income", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "other income", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "outgoing": { + "value": [ + { + "value": { + "value": "rent", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "utilities", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "groceries", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "entertainment", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/categories/consumer\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"incoming\": [\n \"salary\",\n \"investment income\",\n \"other income\"\n ],\n \"outgoing\": [\n \"rent\",\n \"utilities\",\n \"groceries\",\n \"entertainment\"\n ]\n }]'\n ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.categories.set(\"consumer\", {\n \"incoming\": [\n \"transfer from investment app\",\n \"transfer from stock broker\",\n \"transfer from crypto broker\",\n \"chargeback\",\n \"freelance income\",\n \"rideshare or delivery income\",\n \"paycheck\",\n \"benefits\",\n \"interest earned\",\n \"stock dividend\"\n ],\n \"outgoing\": [\n \"digital content and streaming\",\n \"vending machine\",\n \"reversal\",\n \"transfer to investment app\",\n \"transfer to stock broker\",\n \"transfer to crypto broker\",\n \"adjustment\",\n \"intra account transfer\",\n \"inter account transfer\",\n \"peer to peer transfer\",\n \"funeral service\",\n \"ATM withdrawal\",\n \"teller withdrawal\"\n ]\n})\n", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Reset category set to original values", + "audiences": [], + "operationId": "delete_custom_category_set_v3_categories__account_holder_type__reset_post", + "tags": [ + "Categories" + ], + "pathParameters": [ + { + "name": "account_holder_type", + "schema": { + "generatedName": "DeleteCustomCategorySetV3CategoriesAccountHolderTypeResetPostRequestAccountHolderType", + "schema": "AccountHolderType", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "DeleteCustomCategorySetV3CategoriesAccountHolderTypeResetPostRequest", + "response": { + "description": "Successful Response", + "schema": { + "generatedName": "DeleteCustomCategorySetV3CategoriesAccountHolderTypeResetPostResponse", + "schema": "CategorySet", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Resets the set of categories of the specified account holder type to the original values.", + "authed": true, + "method": "POST", + "path": "/v3/categories/{account_holder_type}/reset", + "examples": [ + { + "pathParameters": [ + { + "name": "account_holder_type", + "value": { + "value": "consumer", + "type": "enum" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "incoming": { + "value": [ + { + "value": { + "value": "transfer from investment app", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "transfer from stock broker", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "transfer from crypto broker", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "chargeback", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "freelance income", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "rideshare or delivery income", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "paycheck", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "benefits", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "interest earned", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "stock dividend", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + }, + "outgoing": { + "value": [ + { + "value": { + "value": "digital content and streaming", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "vending machine", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "reversal", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "transfer to investment app", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "transfer to stock broker", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "transfer to crypto broker", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "adjustment", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "intra account transfer", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "inter account transfer", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "peer to peer transfer", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "funeral service", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "ATM withdrawal", + "type": "string" + }, + "type": "primitive" + }, + { + "value": { + "value": "teller withdrawal", + "type": "string" + }, + "type": "primitive" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/categories/consumer/reset\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.categories.reset(\"consumer\")\n", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Searches for an entity", + "audiences": [], + "operationId": "search_entity_v3_entities_lookup_get", + "tags": [ + "Entities" + ], + "pathParameters": [], + "queryParameters": [ + { + "description": "The name of the entity to resolve", + "name": "name", + "schema": { + "generatedName": "SearchEntityV3EntitiesLookupGetRequestName", + "nameOverride": "Name", + "title": "Name", + "description": "The name of the entity to resolve", + "value": { + "description": "The name of the entity to resolve", + "schema": { + "type": "string" + }, + "generatedName": "SearchEntityV3EntitiesLookupGetRequestName", + "nameOverride": "Name", + "title": "Name", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "The website of the entity to resolve", + "name": "website", + "schema": { + "generatedName": "SearchEntityV3EntitiesLookupGetRequestWebsite", + "nameOverride": "Website", + "title": "Website", + "description": "The website of the entity to resolve", + "value": { + "description": "The website of the entity to resolve", + "schema": { + "type": "string" + }, + "generatedName": "SearchEntityV3EntitiesLookupGetRequestWebsite", + "nameOverride": "Website", + "title": "Website", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "description": "An unstructured location string of the entity to resolve", + "name": "location", + "schema": { + "generatedName": "SearchEntityV3EntitiesLookupGetRequestLocation", + "nameOverride": "Location", + "title": "Location", + "description": "An unstructured location string of the entity to resolve", + "value": { + "description": "An unstructured location string of the entity to resolve", + "schema": { + "type": "string" + }, + "generatedName": "SearchEntityV3EntitiesLookupGetRequestLocation", + "nameOverride": "Location", + "title": "Location", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "nullable" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "headers": [], + "generatedRequestName": "SearchEntityV3EntitiesLookupGetRequest", + "response": { + "description": "Entity", + "schema": { + "generatedName": "SearchEntityV3EntitiesLookupGetResponse", + "schema": "Entity", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "400": { + "generatedName": "BadRequestError", + "schema": { + "generatedName": "BadRequestErrorBody", + "type": "unknown" + }, + "description": "Bad request.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + }, + "423": { + "generatedName": "LockedError", + "schema": { + "generatedName": "LockedErrorBody", + "type": "unknown" + }, + "description": "Not enough credits.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + }, + "server": [], + "description": "Resolves a query into an entity by querying our entity resolution system. \n The parameters `name` and `website` are mutually exclusive. Calls to this endpoint using \n the `name` parameter are billed the same way transactions are.", + "authed": true, + "method": "GET", + "path": "/v3/entities/lookup", + "examples": [ + { + "pathParameters": [], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "id": { + "value": { + "value": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Starbucks", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 5814, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/entities?name=Starbucks\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.entities.lookup(name=\"Starbucks\") ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + { + "summary": "Retrieve an entity", + "audiences": [], + "operationId": "get_entity_by_id_v3_entities__id__get", + "tags": [ + "Entities" + ], + "pathParameters": [ + { + "description": "The unique ID of the entity", + "name": "id", + "schema": { + "description": "The unique ID of the entity", + "schema": { + "type": "string" + }, + "generatedName": "GetEntityByIdV3EntitiesIdGetRequestId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "queryParameters": [], + "headers": [], + "generatedRequestName": "GetEntityByIdV3EntitiesIdGetRequest", + "response": { + "description": "Entity", + "schema": { + "generatedName": "GetEntityByIdV3EntitiesIdGetResponse", + "schema": "Entity", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "fullExamples": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "json" + }, + "errors": { + "400": { + "generatedName": "BadRequestError", + "schema": { + "generatedName": "BadRequestErrorBody", + "type": "unknown" + }, + "description": "Bad request.", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "404": { + "generatedName": "NotFoundError", + "schema": { + "generatedName": "NotFoundErrorBody", + "type": "unknown" + }, + "description": "Entity does not exist for ID", + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + }, + "422": { + "generatedName": "UnprocessableEntityError", + "schema": { + "generatedName": "UnprocessableEntityErrorBody", + "schema": "HTTPValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "description": "Validation Error", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "examples": [ + { + "example": { + "properties": {}, + "type": "object" + } + } + ] + } + }, + "server": [], + "description": "Retrieve more information about an entity by using its unique ID.", + "authed": true, + "method": "GET", + "path": "/v3/entities/{id}", + "examples": [ + { + "pathParameters": [ + { + "name": "id", + "value": { + "value": { + "value": "id", + "type": "string" + }, + "type": "primitive" + } + } + ], + "queryParameters": [], + "headers": [], + "response": { + "value": { + "properties": { + "id": { + "value": { + "value": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "type": "string" + }, + "type": "primitive" + }, + "name": { + "value": { + "value": "Starbucks", + "type": "string" + }, + "type": "primitive" + }, + "website": { + "value": { + "value": "starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "logo": { + "value": { + "value": "https://logos.ntropy.com/starbucks.com", + "type": "string" + }, + "type": "primitive" + }, + "mccs": { + "value": [ + { + "value": { + "value": 5814, + "type": "int" + }, + "type": "primitive" + } + ], + "type": "array" + } + }, + "type": "object" + }, + "type": "withoutStreaming" + }, + "codeSamples": [ + { + "name": "cURL", + "language": "cURL", + "code": "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/entities/d4bc3c80-ec1a-3da2-836e-2a4ca4758be5\" \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\" ", + "type": "language" + }, + { + "name": "Python SDK", + "language": "python", + "code": "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.entities.lookup(\"d4bc3c80-ec1a-3da2-836e-2a4ca4758be5\") ", + "type": "language" + } + ], + "type": "full" + } + ], + "source": { + "file": "../openapi.yml", + "type": "openapi" + } + } + ], + "webhooks": [], + "channel": [], + "groupedSchemas": { + "rootSchemas": { + "Account": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "accountType", + "key": "type", + "schema": { + "generatedName": "accountType", + "nameOverride": "Account", + "title": "Account", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "AccountType", + "nameOverride": "Type", + "title": "Type", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "accountNumber", + "key": "number", + "schema": { + "generatedName": "accountNumber", + "nameOverride": "Account", + "title": "Account", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "AccountNumber", + "nameOverride": "Number", + "title": "Number", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "accountOpeningBalance", + "key": "opening_balance", + "schema": { + "generatedName": "accountOpeningBalance", + "nameOverride": "Account", + "title": "Account", + "value": { + "schema": { + "type": "double" + }, + "generatedName": "AccountOpeningBalance", + "title": "Opening Balance", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "accountClosingBalance", + "key": "closing_balance", + "schema": { + "generatedName": "accountClosingBalance", + "nameOverride": "Account", + "title": "Account", + "value": { + "schema": { + "type": "double" + }, + "generatedName": "AccountClosingBalance", + "title": "Closing Balance", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "accountIsoCurrencyCode", + "key": "iso_currency_code", + "schema": { + "generatedName": "accountIsoCurrencyCode", + "nameOverride": "Account", + "title": "Account", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "AccountIsoCurrencyCode", + "title": "Iso Currency Code", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "Account", + "nameOverride": "Account", + "title": "Account", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "AccountHolder": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "accountHolderType", + "key": "type", + "schema": { + "generatedName": "accountHolderType", + "nameOverride": "AccountHolder", + "title": "AccountHolder", + "value": { + "generatedName": "AccountHolderType", + "schema": "AccountType", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "accountHolderName", + "key": "name", + "schema": { + "generatedName": "accountHolderName", + "nameOverride": "AccountHolder", + "title": "AccountHolder", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "AccountHolderName", + "nameOverride": "Name", + "title": "Name", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "accountHolderAddress", + "key": "address", + "schema": { + "generatedName": "accountHolderAddress", + "nameOverride": "AccountHolder", + "title": "AccountHolder", + "value": { + "generatedName": "AccountHolderAddress", + "schema": "Address", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "AccountHolder", + "nameOverride": "AccountHolder", + "title": "AccountHolder", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "AccountHolderCreate": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "accountHolderCreateId", + "key": "id", + "schema": { + "description": "The unique ID of the account holder of the transaction", + "schema": { + "minLength": 1, + "type": "string" + }, + "generatedName": "AccountHolderCreateId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "accountHolderCreateType", + "key": "type", + "schema": { + "description": "The type of the account holder. ", + "generatedName": "AccountHolderCreateType", + "schema": "AccountHolderType", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "accountHolderCreateName", + "key": "name", + "schema": { + "generatedName": "accountHolderCreateName", + "nameOverride": "AccountHolderCreate", + "title": "AccountHolderCreate", + "value": { + "description": "The name of the account holder", + "schema": { + "type": "string" + }, + "generatedName": "AccountHolderCreateName", + "nameOverride": "Name", + "title": "Name", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "AccountHolderCreate", + "nameOverride": "AccountHolderCreate", + "title": "AccountHolderCreate", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "AccountHolderExternal": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "accountHolderExternalId", + "key": "id", + "schema": { + "description": "The unique ID of the account holder of the transaction", + "schema": { + "minLength": 1, + "type": "string" + }, + "generatedName": "AccountHolderExternalId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "accountHolderExternalType", + "key": "type", + "schema": { + "description": "The type of the account holder. ", + "generatedName": "AccountHolderExternalType", + "schema": "AccountHolderType", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "accountHolderExternalName", + "key": "name", + "schema": { + "generatedName": "accountHolderExternalName", + "nameOverride": "AccountHolderExternal", + "title": "AccountHolderExternal", + "value": { + "description": "The name of the account holder", + "schema": { + "type": "string" + }, + "generatedName": "AccountHolderExternalName", + "nameOverride": "Name", + "title": "Name", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "accountHolderExternalCreatedAt", + "key": "created_at", + "schema": { + "description": "The timestamp of when the account holder was created.", + "schema": { + "type": "datetime" + }, + "generatedName": "AccountHolderExternalCreatedAt", + "title": "Created At", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "AccountHolderExternal", + "nameOverride": "AccountHolderExternal", + "title": "AccountHolderExternal", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "AccountHolderType": { + "description": "An enumeration.", + "generatedName": "AccountHolderType", + "nameOverride": "AccountHolderType", + "title": "AccountHolderType", + "values": [ + { + "generatedName": "consumer", + "value": "consumer", + "casing": {} + }, + { + "generatedName": "business", + "value": "business", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "AccountType": { + "description": "An enumeration.", + "generatedName": "AccountType", + "nameOverride": "AccountType", + "title": "AccountType", + "values": [ + { + "generatedName": "consumer", + "value": "consumer", + "casing": {} + }, + { + "generatedName": "business", + "value": "business", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "AccountingCategory": { + "description": "An enumeration.", + "generatedName": "AccountingCategory", + "nameOverride": "AccountingCategory", + "title": "AccountingCategory", + "values": [ + { + "generatedName": "OperationalExpenses", + "value": "operational expenses", + "casing": {} + }, + { + "generatedName": "CostOfGoodsSold", + "value": "cost of goods sold", + "casing": {} + }, + { + "generatedName": "revenue", + "value": "revenue", + "casing": {} + }, + { + "generatedName": "financing", + "value": "financing", + "casing": {} + }, + { + "generatedName": "taxes", + "value": "taxes", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "ActionModel": { + "generatedName": "ActionModel", + "schema": "Action", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "Address": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "addressStreet", + "key": "street", + "schema": { + "generatedName": "addressStreet", + "nameOverride": "Address", + "title": "Address", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "AddressStreet", + "nameOverride": "Street", + "title": "Street", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "addressPostcode", + "key": "postcode", + "schema": { + "generatedName": "addressPostcode", + "nameOverride": "Address", + "title": "Address", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "AddressPostcode", + "nameOverride": "Postcode", + "title": "Postcode", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "addressCity", + "key": "city", + "schema": { + "generatedName": "addressCity", + "nameOverride": "Address", + "title": "Address", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "AddressCity", + "nameOverride": "City", + "title": "City", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "addressState", + "key": "state", + "schema": { + "generatedName": "addressState", + "nameOverride": "Address", + "title": "Address", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "AddressState", + "nameOverride": "State", + "title": "State", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "addressCountry", + "key": "country", + "schema": { + "generatedName": "addressCountry", + "nameOverride": "Address", + "title": "Address", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "AddressCountry", + "nameOverride": "Country", + "title": "Country", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "Address", + "nameOverride": "Address", + "title": "Address", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "AsyncEnrichmentInput": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "asyncEnrichmentInputTransactions", + "key": "transactions", + "schema": { + "value": { + "generatedName": "AsyncEnrichmentInputTransactionsItem", + "schema": "TransactionInput", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "AsyncEnrichmentInputTransactions", + "nameOverride": "Transactions", + "title": "Transactions", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "AsyncEnrichmentInput", + "nameOverride": "AsyncEnrichmentInput", + "title": "AsyncEnrichmentInput", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "BankStatement": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "bankStatementId", + "key": "id", + "schema": { + "description": "A unique identifier for the bank statement job.", + "schema": { + "type": "string" + }, + "generatedName": "BankStatementId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementName", + "key": "name", + "schema": { + "generatedName": "bankStatementName", + "nameOverride": "BankStatement", + "title": "BankStatement", + "value": { + "description": "The name of the bank statement file, if available.", + "schema": { + "type": "string" + }, + "generatedName": "BankStatementName", + "nameOverride": "Name", + "title": "Name", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementStatus", + "key": "status", + "schema": { + "description": "The current status of the document.", + "generatedName": "BankStatementStatus", + "schema": "BankStatementStatus", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementCreatedAt", + "key": "created_at", + "schema": { + "description": "The date and time when the job was created.", + "schema": { + "type": "datetime" + }, + "generatedName": "BankStatementCreatedAt", + "title": "Created At", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementFile", + "key": "file", + "schema": { + "description": "Information about the bank statement file being processed.", + "generatedName": "BankStatementFile", + "schema": "BankStatementFile", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementError", + "key": "error", + "schema": { + "generatedName": "bankStatementError", + "nameOverride": "BankStatement", + "title": "BankStatement", + "value": { + "generatedName": "BankStatementError", + "schema": "BankStatementError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "description": "Represents a bank statement with details about the file and its status.", + "generatedName": "BankStatement", + "nameOverride": "BankStatement", + "title": "BankStatement", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "BankStatementAccount": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "bankStatementAccountNumber", + "key": "number", + "schema": { + "generatedName": "bankStatementAccountNumber", + "nameOverride": "BankStatementAccount", + "title": "BankStatementAccount", + "value": { + "description": "The account number, if available.", + "schema": { + "type": "string" + }, + "generatedName": "BankStatementAccountNumber", + "nameOverride": "Number", + "title": "Number", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementAccountOpeningBalance", + "key": "opening_balance", + "schema": { + "generatedName": "bankStatementAccountOpeningBalance", + "nameOverride": "BankStatementAccount", + "title": "BankStatementAccount", + "value": { + "description": "The opening balance of the account for the statement period.", + "schema": { + "type": "double" + }, + "generatedName": "BankStatementAccountOpeningBalance", + "title": "Opening Balance", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementAccountClosingBalance", + "key": "closing_balance", + "schema": { + "generatedName": "bankStatementAccountClosingBalance", + "nameOverride": "BankStatementAccount", + "title": "BankStatementAccount", + "value": { + "description": "The closing balance of the account for the statement period.", + "schema": { + "type": "double" + }, + "generatedName": "BankStatementAccountClosingBalance", + "title": "Closing Balance", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementAccountStartDate", + "key": "start_date", + "schema": { + "generatedName": "bankStatementAccountStartDate", + "nameOverride": "BankStatementAccount", + "title": "BankStatementAccount", + "value": { + "description": "The start date of the statement period.", + "schema": { + "format": "date", + "type": "string" + }, + "generatedName": "BankStatementAccountStartDate", + "title": "Start Date", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementAccountEndDate", + "key": "end_date", + "schema": { + "generatedName": "bankStatementAccountEndDate", + "nameOverride": "BankStatementAccount", + "title": "BankStatementAccount", + "value": { + "description": "The end date of the statement period.", + "schema": { + "format": "date", + "type": "string" + }, + "generatedName": "BankStatementAccountEndDate", + "title": "End Date", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementAccountIsBalanceReconciled", + "key": "is_balance_reconciled", + "schema": { + "generatedName": "bankStatementAccountIsBalanceReconciled", + "nameOverride": "BankStatementAccount", + "title": "BankStatementAccount", + "value": { + "description": "Indicates whether the balance has been reconciled.", + "schema": { + "type": "boolean" + }, + "generatedName": "BankStatementAccountIsBalanceReconciled", + "title": "Is Balance Reconciled", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementAccountTotalIncoming", + "key": "total_incoming", + "schema": { + "generatedName": "bankStatementAccountTotalIncoming", + "nameOverride": "BankStatementAccount", + "title": "BankStatementAccount", + "value": { + "description": "The sum of amounts of all incoming transactions.", + "schema": { + "type": "double" + }, + "generatedName": "BankStatementAccountTotalIncoming", + "title": "Total Incoming", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementAccountTotalOutgoing", + "key": "total_outgoing", + "schema": { + "generatedName": "bankStatementAccountTotalOutgoing", + "nameOverride": "BankStatementAccount", + "title": "BankStatementAccount", + "value": { + "description": "The sum of amounts of all outgoing transactions.", + "schema": { + "type": "double" + }, + "generatedName": "BankStatementAccountTotalOutgoing", + "title": "Total Outgoing", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementAccountTransactions", + "key": "transactions", + "schema": { + "description": "List of transactions for this account.", + "value": { + "generatedName": "BankStatementAccountTransactionsItem", + "schema": "BankStatementTransaction", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "BankStatementAccountTransactions", + "nameOverride": "Transactions", + "title": "Transactions", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "BankStatementAccount", + "nameOverride": "BankStatementAccount", + "title": "BankStatementAccount", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "BankStatementError": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "bankStatementErrorCode", + "key": "code", + "schema": { + "generatedName": "BankStatementErrorCode", + "schema": "BankStatementErrorCode", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "bankStatementErrorMessage", + "key": "message", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "BankStatementErrorMessage", + "nameOverride": "Message", + "title": "Message", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "BankStatementError", + "nameOverride": "BankStatementError", + "title": "BankStatementError", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "BankStatementErrorCode": { + "description": "An enumeration.", + "generatedName": "BankStatementErrorCode", + "nameOverride": "BankStatementErrorCode", + "title": "BankStatementErrorCode", + "values": [ + { + "generatedName": "invalid_bank_statement", + "value": "invalid_bank_statement", + "casing": {} + }, + { + "generatedName": "internal_error", + "value": "internal_error", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "BankStatementFile": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "bankStatementFileNoPages", + "key": "no_pages", + "schema": { + "description": "The number of pages in the bank statement file.", + "schema": { + "type": "int" + }, + "generatedName": "BankStatementFileNoPages", + "title": "No Pages", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementFileSize", + "key": "size", + "schema": { + "generatedName": "bankStatementFileSize", + "nameOverride": "BankStatementFile", + "title": "BankStatementFile", + "value": { + "description": "The size of the bank statement file in bytes, if available.", + "schema": { + "type": "int" + }, + "generatedName": "BankStatementFileSize", + "nameOverride": "Size", + "title": "Size", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "BankStatementFile", + "nameOverride": "BankStatementFile", + "title": "BankStatementFile", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "BankStatementResults": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "bankStatementResultsAccounts", + "key": "accounts", + "schema": { + "description": "List of accounts in the bank statement.", + "value": { + "generatedName": "BankStatementResultsAccountsItem", + "schema": "BankStatementAccount", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "BankStatementResultsAccounts", + "nameOverride": "Accounts", + "title": "Accounts", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "BankStatementResults", + "nameOverride": "BankStatementResults", + "title": "BankStatementResults", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "BankStatementStatus": { + "description": "An enumeration.", + "generatedName": "BankStatementStatus", + "nameOverride": "BankStatementStatus", + "title": "BankStatementStatus", + "values": [ + { + "generatedName": "processing", + "value": "processing", + "casing": {} + }, + { + "generatedName": "completed", + "value": "completed", + "casing": {} + }, + { + "generatedName": "error", + "value": "error", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "BankStatementTransaction": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "bankStatementTransactionId", + "key": "id", + "schema": { + "description": "A unique identifier of the transaction", + "schema": { + "minLength": 1, + "type": "string" + }, + "generatedName": "BankStatementTransactionId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementTransactionDescription", + "key": "description", + "schema": { + "description": "The description string of the transaction", + "schema": { + "minLength": 0, + "maxLength": 1024, + "type": "string" + }, + "generatedName": "BankStatementTransactionDescription", + "nameOverride": "Description", + "title": "Description", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementTransactionDate", + "key": "date", + "schema": { + "description": "The date that the transaction was posted. Uses ISO 8601 format (YYYY-MM-DD)", + "schema": { + "format": "date", + "type": "string" + }, + "generatedName": "BankStatementTransactionDate", + "nameOverride": "Date", + "title": "Date", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementTransactionAmount", + "key": "amount", + "schema": { + "description": "The amount of the transaction in the `currency`. Must be a positive value. For example, if the `currency` is USD, then it's the amount in dollars.", + "schema": { + "minimum": 0, + "type": "double" + }, + "generatedName": "BankStatementTransactionAmount", + "nameOverride": "Amount", + "title": "Amount", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementTransactionEntryType", + "key": "entry_type", + "schema": { + "description": "The direction of the flow of the money from the perspective of the account holder. `outgoing` to represent money leaving the account, such as purchases or fees, while `incoming` represents money entering the account, such as income or refunds.", + "generatedName": "BankStatementTransactionEntryType", + "schema": "EntryType", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementTransactionCurrency", + "key": "currency", + "schema": { + "description": "The currency of the transaction in ISO 4217 format", + "generatedName": "BankStatementTransactionCurrency", + "schema": "Currency", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "bankStatementTransactionRunningBalance", + "key": "running_balance", + "schema": { + "generatedName": "bankStatementTransactionRunningBalance", + "nameOverride": "BankStatementTransaction", + "title": "BankStatementTransaction", + "value": { + "description": "The account's balance when this transaction was performed", + "schema": { + "type": "double" + }, + "generatedName": "BankStatementTransactionRunningBalance", + "title": "Running Balance", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "BankStatementTransaction", + "nameOverride": "BankStatementTransaction", + "title": "BankStatementTransaction", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "Batch": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "batchId", + "key": "id", + "schema": { + "description": "A unique identifier for the batch.", + "schema": { + "type": "string" + }, + "generatedName": "BatchId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "batchStatus", + "key": "status", + "schema": { + "description": "The current status of the batch. A batch will error if at least one of the transactions contains an error.", + "generatedName": "BatchStatus", + "schema": "BatchStatus", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "batchCreatedAt", + "key": "created_at", + "schema": { + "description": "The timestamp of when the batch was created.", + "schema": { + "type": "datetime" + }, + "generatedName": "BatchCreatedAt", + "title": "Created At", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "batchUpdatedAt", + "key": "updated_at", + "schema": { + "description": "The timestamp of when the batch was last updated.", + "schema": { + "type": "datetime" + }, + "generatedName": "BatchUpdatedAt", + "title": "Updated At", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "batchProgress", + "key": "progress", + "schema": { + "description": "The number of transactions processed so far.", + "schema": { + "type": "int" + }, + "generatedName": "BatchProgress", + "nameOverride": "Progress", + "title": "Progress", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "batchTotal", + "key": "total", + "schema": { + "description": "The total number of transactions in the batch.", + "schema": { + "type": "int" + }, + "generatedName": "BatchTotal", + "nameOverride": "Total", + "title": "Total", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "description": "The `Batch` object represents the status and progress of an asynchronous batch enrichment job.", + "generatedName": "Batch", + "nameOverride": "Batch", + "title": "Batch", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "BatchResult": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "batchResultId", + "key": "id", + "schema": { + "description": "A unique identifier for the batch.", + "schema": { + "type": "string" + }, + "generatedName": "BatchResultId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "batchResultTotal", + "key": "total", + "schema": { + "description": "The total number of transactions in the batch result.", + "schema": { + "type": "int" + }, + "generatedName": "BatchResultTotal", + "nameOverride": "Total", + "title": "Total", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "batchResultStatus", + "key": "status", + "schema": { + "description": "The current status of the batch job.", + "generatedName": "BatchResultStatus", + "schema": "BatchStatus", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "batchResultResults", + "key": "results", + "schema": { + "generatedName": "BatchResultResults", + "schema": "EnrichmentResult", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "description": "The `BatchResult` object represents the result of a batch enrichment job, including its status and\nenriched transactions.", + "generatedName": "BatchResult", + "nameOverride": "BatchResult", + "title": "BatchResult", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "BatchStatus": { + "description": "An enumeration.", + "generatedName": "BatchStatus", + "nameOverride": "BatchStatus", + "title": "BatchStatus", + "values": [ + { + "generatedName": "processing", + "value": "processing", + "casing": {} + }, + { + "generatedName": "completed", + "value": "completed", + "casing": {} + }, + { + "generatedName": "error", + "value": "error", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "Body_post_bank_statement_v3_bank_statements_post": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "bodyPostBankStatementV3BankStatementsPostFile", + "key": "file", + "schema": { + "schema": { + "format": "binary", + "type": "string" + }, + "generatedName": "BodyPostBankStatementV3BankStatementsPostFile", + "nameOverride": "File", + "title": "File", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "BodyPostBankStatementV3BankStatementsPost", + "title": "Body_post_bank_statement_v3_bank_statements_post", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "Body_set_transaction_ah_v3_transactions__id__assign_post": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "bodySetTransactionAhV3TransactionsIdAssignPostAccountHolderId", + "key": "account_holder_id", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "BodySetTransactionAhV3TransactionsIdAssignPostAccountHolderId", + "title": "Account Holder Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "BodySetTransactionAhV3TransactionsIdAssignPost", + "title": "Body_set_transaction_ah_v3_transactions__id__assign_post", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "Categories": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "categoriesGeneral", + "key": "general", + "schema": { + "generatedName": "categoriesGeneral", + "nameOverride": "Categories", + "title": "Categories", + "value": { + "description": "The category of the transaction. View the valid set of categories for your key [here](./docs/v3/enrichment/entities).", + "schema": { + "type": "string" + }, + "generatedName": "CategoriesGeneral", + "nameOverride": "General", + "title": "General", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "categoriesAccounting", + "key": "accounting", + "schema": { + "generatedName": "categoriesAccounting", + "nameOverride": "Categories", + "title": "Categories", + "value": { + "description": "The corresponding accounting category. Only available for `business` transactions.", + "generatedName": "CategoriesAccounting", + "schema": "AccountingCategory", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "Categories", + "nameOverride": "Categories", + "title": "Categories", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "CategoryConfidence": { + "description": "An enumeration.", + "generatedName": "CategoryConfidence", + "nameOverride": "CategoryConfidence", + "title": "CategoryConfidence", + "values": [ + { + "generatedName": "high", + "value": "high", + "casing": {} + }, + { + "generatedName": "medium", + "value": "medium", + "casing": {} + }, + { + "generatedName": "low", + "value": "low", + "casing": {} + }, + { + "generatedName": "unknown", + "value": "unknown", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "CategorySet": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "categorySetIncoming", + "key": "incoming", + "schema": { + "value": { + "schema": { + "type": "string" + }, + "generatedName": "CategorySetIncomingItem", + "groupName": [], + "type": "primitive" + }, + "generatedName": "CategorySetIncoming", + "nameOverride": "Incoming", + "title": "Incoming", + "groupName": [], + "type": "array" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "categorySetOutgoing", + "key": "outgoing", + "schema": { + "value": { + "schema": { + "type": "string" + }, + "generatedName": "CategorySetOutgoingItem", + "groupName": [], + "type": "primitive" + }, + "generatedName": "CategorySetOutgoing", + "nameOverride": "Outgoing", + "title": "Outgoing", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "CategorySet", + "nameOverride": "CategorySet", + "title": "CategorySet", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "Counterparty": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "counterpartyId", + "key": "id", + "schema": { + "generatedName": "counterpartyId", + "nameOverride": "Counterparty", + "title": "Counterparty", + "value": { + "description": "The unique UUID identifier of the entity", + "schema": { + "type": "string" + }, + "generatedName": "CounterpartyId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "counterpartyName", + "key": "name", + "schema": { + "generatedName": "counterpartyName", + "nameOverride": "Counterparty", + "title": "Counterparty", + "value": { + "description": "The name of the entity", + "schema": { + "type": "string" + }, + "generatedName": "CounterpartyName", + "nameOverride": "Name", + "title": "Name", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "counterpartyWebsite", + "key": "website", + "schema": { + "generatedName": "counterpartyWebsite", + "nameOverride": "Counterparty", + "title": "Counterparty", + "value": { + "description": "The website URL of the entity", + "schema": { + "type": "string" + }, + "generatedName": "CounterpartyWebsite", + "nameOverride": "Website", + "title": "Website", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "counterpartyLogo", + "key": "logo", + "schema": { + "generatedName": "counterpartyLogo", + "nameOverride": "Counterparty", + "title": "Counterparty", + "value": { + "description": "Logo's URL", + "schema": { + "type": "string" + }, + "generatedName": "CounterpartyLogo", + "nameOverride": "Logo", + "title": "Logo", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "counterpartyMccs", + "key": "mccs", + "schema": { + "generatedName": "counterpartyMccs", + "nameOverride": "Counterparty", + "title": "Counterparty", + "value": { + "description": "A list of [Merchant Category Codes](https://en.wikipedia.org/wiki/Merchant_category_code)", + "value": { + "schema": { + "type": "int" + }, + "generatedName": "CounterpartyMccsItem", + "groupName": [], + "type": "primitive" + }, + "generatedName": "CounterpartyMccs", + "nameOverride": "Mccs", + "title": "Mccs", + "groupName": [], + "type": "array" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "counterpartyType", + "key": "type", + "schema": { + "generatedName": "CounterpartyType", + "schema": "CounterpartyType", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "Counterparty", + "nameOverride": "Counterparty", + "title": "Counterparty", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "CounterpartyType": { + "description": "An enumeration.", + "generatedName": "CounterpartyType", + "nameOverride": "CounterpartyType", + "title": "CounterpartyType", + "values": [ + { + "generatedName": "person", + "value": "person", + "casing": {} + }, + { + "generatedName": "organization", + "value": "organization", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "Country": { + "description": "An enumeration.", + "generatedName": "Country", + "nameOverride": "Country", + "title": "Country", + "values": [ + { + "generatedName": "AD", + "value": "AD", + "casing": {} + }, + { + "generatedName": "AE", + "value": "AE", + "casing": {} + }, + { + "generatedName": "AF", + "value": "AF", + "casing": {} + }, + { + "generatedName": "AG", + "value": "AG", + "casing": {} + }, + { + "generatedName": "AI", + "value": "AI", + "casing": {} + }, + { + "generatedName": "AL", + "value": "AL", + "casing": {} + }, + { + "generatedName": "AM", + "value": "AM", + "casing": {} + }, + { + "generatedName": "AO", + "value": "AO", + "casing": {} + }, + { + "generatedName": "AR", + "value": "AR", + "casing": {} + }, + { + "generatedName": "AS", + "value": "AS", + "casing": {} + }, + { + "generatedName": "AT", + "value": "AT", + "casing": {} + }, + { + "generatedName": "AU", + "value": "AU", + "casing": {} + }, + { + "generatedName": "AW", + "value": "AW", + "casing": {} + }, + { + "generatedName": "AZ", + "value": "AZ", + "casing": {} + }, + { + "generatedName": "BA", + "value": "BA", + "casing": {} + }, + { + "generatedName": "BB", + "value": "BB", + "casing": {} + }, + { + "generatedName": "BD", + "value": "BD", + "casing": {} + }, + { + "generatedName": "BE", + "value": "BE", + "casing": {} + }, + { + "generatedName": "BF", + "value": "BF", + "casing": {} + }, + { + "generatedName": "BG", + "value": "BG", + "casing": {} + }, + { + "generatedName": "BH", + "value": "BH", + "casing": {} + }, + { + "generatedName": "BI", + "value": "BI", + "casing": {} + }, + { + "generatedName": "BJ", + "value": "BJ", + "casing": {} + }, + { + "generatedName": "BL", + "value": "BL", + "casing": {} + }, + { + "generatedName": "BM", + "value": "BM", + "casing": {} + }, + { + "generatedName": "BN", + "value": "BN", + "casing": {} + }, + { + "generatedName": "BO", + "value": "BO", + "casing": {} + }, + { + "generatedName": "BQ", + "value": "BQ", + "casing": {} + }, + { + "generatedName": "BR", + "value": "BR", + "casing": {} + }, + { + "generatedName": "BS", + "value": "BS", + "casing": {} + }, + { + "generatedName": "BT", + "value": "BT", + "casing": {} + }, + { + "generatedName": "BV", + "value": "BV", + "casing": {} + }, + { + "generatedName": "BW", + "value": "BW", + "casing": {} + }, + { + "generatedName": "BY", + "value": "BY", + "casing": {} + }, + { + "generatedName": "BZ", + "value": "BZ", + "casing": {} + }, + { + "generatedName": "CA", + "value": "CA", + "casing": {} + }, + { + "generatedName": "CC", + "value": "CC", + "casing": {} + }, + { + "generatedName": "CD", + "value": "CD", + "casing": {} + }, + { + "generatedName": "CF", + "value": "CF", + "casing": {} + }, + { + "generatedName": "CG", + "value": "CG", + "casing": {} + }, + { + "generatedName": "CH", + "value": "CH", + "casing": {} + }, + { + "generatedName": "CI", + "value": "CI", + "casing": {} + }, + { + "generatedName": "CK", + "value": "CK", + "casing": {} + }, + { + "generatedName": "CL", + "value": "CL", + "casing": {} + }, + { + "generatedName": "CM", + "value": "CM", + "casing": {} + }, + { + "generatedName": "CN", + "value": "CN", + "casing": {} + }, + { + "generatedName": "CO", + "value": "CO", + "casing": {} + }, + { + "generatedName": "CR", + "value": "CR", + "casing": {} + }, + { + "generatedName": "CU", + "value": "CU", + "casing": {} + }, + { + "generatedName": "CV", + "value": "CV", + "casing": {} + }, + { + "generatedName": "CW", + "value": "CW", + "casing": {} + }, + { + "generatedName": "CX", + "value": "CX", + "casing": {} + }, + { + "generatedName": "CY", + "value": "CY", + "casing": {} + }, + { + "generatedName": "CZ", + "value": "CZ", + "casing": {} + }, + { + "generatedName": "DE", + "value": "DE", + "casing": {} + }, + { + "generatedName": "DJ", + "value": "DJ", + "casing": {} + }, + { + "generatedName": "DK", + "value": "DK", + "casing": {} + }, + { + "generatedName": "DM", + "value": "DM", + "casing": {} + }, + { + "generatedName": "DO", + "value": "DO", + "casing": {} + }, + { + "generatedName": "DZ", + "value": "DZ", + "casing": {} + }, + { + "generatedName": "EC", + "value": "EC", + "casing": {} + }, + { + "generatedName": "EE", + "value": "EE", + "casing": {} + }, + { + "generatedName": "EG", + "value": "EG", + "casing": {} + }, + { + "generatedName": "EH", + "value": "EH", + "casing": {} + }, + { + "generatedName": "ER", + "value": "ER", + "casing": {} + }, + { + "generatedName": "ES", + "value": "ES", + "casing": {} + }, + { + "generatedName": "ET", + "value": "ET", + "casing": {} + }, + { + "generatedName": "FI", + "value": "FI", + "casing": {} + }, + { + "generatedName": "FJ", + "value": "FJ", + "casing": {} + }, + { + "generatedName": "FK", + "value": "FK", + "casing": {} + }, + { + "generatedName": "FM", + "value": "FM", + "casing": {} + }, + { + "generatedName": "FR", + "value": "FR", + "casing": {} + }, + { + "generatedName": "GA", + "value": "GA", + "casing": {} + }, + { + "generatedName": "GB", + "value": "GB", + "casing": {} + }, + { + "generatedName": "GD", + "value": "GD", + "casing": {} + }, + { + "generatedName": "GE", + "value": "GE", + "casing": {} + }, + { + "generatedName": "GF", + "value": "GF", + "casing": {} + }, + { + "generatedName": "GG", + "value": "GG", + "casing": {} + }, + { + "generatedName": "GH", + "value": "GH", + "casing": {} + }, + { + "generatedName": "GI", + "value": "GI", + "casing": {} + }, + { + "generatedName": "GL", + "value": "GL", + "casing": {} + }, + { + "generatedName": "GM", + "value": "GM", + "casing": {} + }, + { + "generatedName": "GN", + "value": "GN", + "casing": {} + }, + { + "generatedName": "GP", + "value": "GP", + "casing": {} + }, + { + "generatedName": "GQ", + "value": "GQ", + "casing": {} + }, + { + "generatedName": "GR", + "value": "GR", + "casing": {} + }, + { + "generatedName": "GS", + "value": "GS", + "casing": {} + }, + { + "generatedName": "GT", + "value": "GT", + "casing": {} + }, + { + "generatedName": "GU", + "value": "GU", + "casing": {} + }, + { + "generatedName": "GW", + "value": "GW", + "casing": {} + }, + { + "generatedName": "GY", + "value": "GY", + "casing": {} + }, + { + "generatedName": "HK", + "value": "HK", + "casing": {} + }, + { + "generatedName": "HM", + "value": "HM", + "casing": {} + }, + { + "generatedName": "HN", + "value": "HN", + "casing": {} + }, + { + "generatedName": "HR", + "value": "HR", + "casing": {} + }, + { + "generatedName": "HT", + "value": "HT", + "casing": {} + }, + { + "generatedName": "HU", + "value": "HU", + "casing": {} + }, + { + "generatedName": "ID", + "value": "ID", + "casing": {} + }, + { + "generatedName": "IE", + "value": "IE", + "casing": {} + }, + { + "generatedName": "IL", + "value": "IL", + "casing": {} + }, + { + "generatedName": "IM", + "value": "IM", + "casing": {} + }, + { + "generatedName": "IN", + "value": "IN", + "casing": {} + }, + { + "generatedName": "IO", + "value": "IO", + "casing": {} + }, + { + "generatedName": "IQ", + "value": "IQ", + "casing": {} + }, + { + "generatedName": "IR", + "value": "IR", + "casing": {} + }, + { + "generatedName": "IS", + "value": "IS", + "casing": {} + }, + { + "generatedName": "IT", + "value": "IT", + "casing": {} + }, + { + "generatedName": "JE", + "value": "JE", + "casing": {} + }, + { + "generatedName": "JM", + "value": "JM", + "casing": {} + }, + { + "generatedName": "JO", + "value": "JO", + "casing": {} + }, + { + "generatedName": "JP", + "value": "JP", + "casing": {} + }, + { + "generatedName": "KE", + "value": "KE", + "casing": {} + }, + { + "generatedName": "KG", + "value": "KG", + "casing": {} + }, + { + "generatedName": "KH", + "value": "KH", + "casing": {} + }, + { + "generatedName": "KI", + "value": "KI", + "casing": {} + }, + { + "generatedName": "KM", + "value": "KM", + "casing": {} + }, + { + "generatedName": "KN", + "value": "KN", + "casing": {} + }, + { + "generatedName": "KP", + "value": "KP", + "casing": {} + }, + { + "generatedName": "KR", + "value": "KR", + "casing": {} + }, + { + "generatedName": "KW", + "value": "KW", + "casing": {} + }, + { + "generatedName": "KY", + "value": "KY", + "casing": {} + }, + { + "generatedName": "KZ", + "value": "KZ", + "casing": {} + }, + { + "generatedName": "LA", + "value": "LA", + "casing": {} + }, + { + "generatedName": "LB", + "value": "LB", + "casing": {} + }, + { + "generatedName": "LC", + "value": "LC", + "casing": {} + }, + { + "generatedName": "LI", + "value": "LI", + "casing": {} + }, + { + "generatedName": "LK", + "value": "LK", + "casing": {} + }, + { + "generatedName": "LR", + "value": "LR", + "casing": {} + }, + { + "generatedName": "LS", + "value": "LS", + "casing": {} + }, + { + "generatedName": "LT", + "value": "LT", + "casing": {} + }, + { + "generatedName": "LU", + "value": "LU", + "casing": {} + }, + { + "generatedName": "LV", + "value": "LV", + "casing": {} + }, + { + "generatedName": "LY", + "value": "LY", + "casing": {} + }, + { + "generatedName": "MA", + "value": "MA", + "casing": {} + }, + { + "generatedName": "MC", + "value": "MC", + "casing": {} + }, + { + "generatedName": "MD", + "value": "MD", + "casing": {} + }, + { + "generatedName": "ME", + "value": "ME", + "casing": {} + }, + { + "generatedName": "MF", + "value": "MF", + "casing": {} + }, + { + "generatedName": "MG", + "value": "MG", + "casing": {} + }, + { + "generatedName": "MH", + "value": "MH", + "casing": {} + }, + { + "generatedName": "MK", + "value": "MK", + "casing": {} + }, + { + "generatedName": "ML", + "value": "ML", + "casing": {} + }, + { + "generatedName": "MM", + "value": "MM", + "casing": {} + }, + { + "generatedName": "MN", + "value": "MN", + "casing": {} + }, + { + "generatedName": "MO", + "value": "MO", + "casing": {} + }, + { + "generatedName": "MP", + "value": "MP", + "casing": {} + }, + { + "generatedName": "MQ", + "value": "MQ", + "casing": {} + }, + { + "generatedName": "MR", + "value": "MR", + "casing": {} + }, + { + "generatedName": "MS", + "value": "MS", + "casing": {} + }, + { + "generatedName": "MT", + "value": "MT", + "casing": {} + }, + { + "generatedName": "MU", + "value": "MU", + "casing": {} + }, + { + "generatedName": "MV", + "value": "MV", + "casing": {} + }, + { + "generatedName": "MW", + "value": "MW", + "casing": {} + }, + { + "generatedName": "MX", + "value": "MX", + "casing": {} + }, + { + "generatedName": "MY", + "value": "MY", + "casing": {} + }, + { + "generatedName": "MZ", + "value": "MZ", + "casing": {} + }, + { + "generatedName": "NA", + "value": "NA", + "casing": {} + }, + { + "generatedName": "NC", + "value": "NC", + "casing": {} + }, + { + "generatedName": "NE", + "value": "NE", + "casing": {} + }, + { + "generatedName": "NF", + "value": "NF", + "casing": {} + }, + { + "generatedName": "NG", + "value": "NG", + "casing": {} + }, + { + "generatedName": "NI", + "value": "NI", + "casing": {} + }, + { + "generatedName": "NL", + "value": "NL", + "casing": {} + }, + { + "generatedName": "NO", + "value": "NO", + "casing": {} + }, + { + "generatedName": "NP", + "value": "NP", + "casing": {} + }, + { + "generatedName": "NR", + "value": "NR", + "casing": {} + }, + { + "generatedName": "NU", + "value": "NU", + "casing": {} + }, + { + "generatedName": "NZ", + "value": "NZ", + "casing": {} + }, + { + "generatedName": "OM", + "value": "OM", + "casing": {} + }, + { + "generatedName": "PA", + "value": "PA", + "casing": {} + }, + { + "generatedName": "PE", + "value": "PE", + "casing": {} + }, + { + "generatedName": "PF", + "value": "PF", + "casing": {} + }, + { + "generatedName": "PG", + "value": "PG", + "casing": {} + }, + { + "generatedName": "PH", + "value": "PH", + "casing": {} + }, + { + "generatedName": "PK", + "value": "PK", + "casing": {} + }, + { + "generatedName": "PL", + "value": "PL", + "casing": {} + }, + { + "generatedName": "PM", + "value": "PM", + "casing": {} + }, + { + "generatedName": "PN", + "value": "PN", + "casing": {} + }, + { + "generatedName": "PR", + "value": "PR", + "casing": {} + }, + { + "generatedName": "PS", + "value": "PS", + "casing": {} + }, + { + "generatedName": "PT", + "value": "PT", + "casing": {} + }, + { + "generatedName": "PW", + "value": "PW", + "casing": {} + }, + { + "generatedName": "PY", + "value": "PY", + "casing": {} + }, + { + "generatedName": "QA", + "value": "QA", + "casing": {} + }, + { + "generatedName": "RE", + "value": "RE", + "casing": {} + }, + { + "generatedName": "RO", + "value": "RO", + "casing": {} + }, + { + "generatedName": "RS", + "value": "RS", + "casing": {} + }, + { + "generatedName": "RU", + "value": "RU", + "casing": {} + }, + { + "generatedName": "RW", + "value": "RW", + "casing": {} + }, + { + "generatedName": "SA", + "value": "SA", + "casing": {} + }, + { + "generatedName": "SB", + "value": "SB", + "casing": {} + }, + { + "generatedName": "SC", + "value": "SC", + "casing": {} + }, + { + "generatedName": "SD", + "value": "SD", + "casing": {} + }, + { + "generatedName": "SE", + "value": "SE", + "casing": {} + }, + { + "generatedName": "SG", + "value": "SG", + "casing": {} + }, + { + "generatedName": "SH", + "value": "SH", + "casing": {} + }, + { + "generatedName": "SI", + "value": "SI", + "casing": {} + }, + { + "generatedName": "SJ", + "value": "SJ", + "casing": {} + }, + { + "generatedName": "SK", + "value": "SK", + "casing": {} + }, + { + "generatedName": "SL", + "value": "SL", + "casing": {} + }, + { + "generatedName": "SM", + "value": "SM", + "casing": {} + }, + { + "generatedName": "SN", + "value": "SN", + "casing": {} + }, + { + "generatedName": "SO", + "value": "SO", + "casing": {} + }, + { + "generatedName": "SR", + "value": "SR", + "casing": {} + }, + { + "generatedName": "SS", + "value": "SS", + "casing": {} + }, + { + "generatedName": "ST", + "value": "ST", + "casing": {} + }, + { + "generatedName": "SV", + "value": "SV", + "casing": {} + }, + { + "generatedName": "SX", + "value": "SX", + "casing": {} + }, + { + "generatedName": "SY", + "value": "SY", + "casing": {} + }, + { + "generatedName": "SZ", + "value": "SZ", + "casing": {} + }, + { + "generatedName": "TC", + "value": "TC", + "casing": {} + }, + { + "generatedName": "TD", + "value": "TD", + "casing": {} + }, + { + "generatedName": "TG", + "value": "TG", + "casing": {} + }, + { + "generatedName": "TH", + "value": "TH", + "casing": {} + }, + { + "generatedName": "TJ", + "value": "TJ", + "casing": {} + }, + { + "generatedName": "TK", + "value": "TK", + "casing": {} + }, + { + "generatedName": "TL", + "value": "TL", + "casing": {} + }, + { + "generatedName": "TM", + "value": "TM", + "casing": {} + }, + { + "generatedName": "TN", + "value": "TN", + "casing": {} + }, + { + "generatedName": "TO", + "value": "TO", + "casing": {} + }, + { + "generatedName": "TR", + "value": "TR", + "casing": {} + }, + { + "generatedName": "TT", + "value": "TT", + "casing": {} + }, + { + "generatedName": "TV", + "value": "TV", + "casing": {} + }, + { + "generatedName": "TW", + "value": "TW", + "casing": {} + }, + { + "generatedName": "TZ", + "value": "TZ", + "casing": {} + }, + { + "generatedName": "UA", + "value": "UA", + "casing": {} + }, + { + "generatedName": "UG", + "value": "UG", + "casing": {} + }, + { + "generatedName": "UM", + "value": "UM", + "casing": {} + }, + { + "generatedName": "US", + "value": "US", + "casing": {} + }, + { + "generatedName": "UY", + "value": "UY", + "casing": {} + }, + { + "generatedName": "UZ", + "value": "UZ", + "casing": {} + }, + { + "generatedName": "VC", + "value": "VC", + "casing": {} + }, + { + "generatedName": "VE", + "value": "VE", + "casing": {} + }, + { + "generatedName": "VG", + "value": "VG", + "casing": {} + }, + { + "generatedName": "VI", + "value": "VI", + "casing": {} + }, + { + "generatedName": "VN", + "value": "VN", + "casing": {} + }, + { + "generatedName": "VU", + "value": "VU", + "casing": {} + }, + { + "generatedName": "WF", + "value": "WF", + "casing": {} + }, + { + "generatedName": "WS", + "value": "WS", + "casing": {} + }, + { + "generatedName": "YE", + "value": "YE", + "casing": {} + }, + { + "generatedName": "YT", + "value": "YT", + "casing": {} + }, + { + "generatedName": "ZA", + "value": "ZA", + "casing": {} + }, + { + "generatedName": "ZM", + "value": "ZM", + "casing": {} + }, + { + "generatedName": "ZW", + "value": "ZW", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "Currency": { + "description": "An enumeration.", + "generatedName": "Currency", + "nameOverride": "Currency", + "title": "Currency", + "values": [ + { + "generatedName": "EUR", + "value": "EUR", + "casing": {} + }, + { + "generatedName": "AED", + "value": "AED", + "casing": {} + }, + { + "generatedName": "AFN", + "value": "AFN", + "casing": {} + }, + { + "generatedName": "XCD", + "value": "XCD", + "casing": {} + }, + { + "generatedName": "ALL", + "value": "ALL", + "casing": {} + }, + { + "generatedName": "AMD", + "value": "AMD", + "casing": {} + }, + { + "generatedName": "AOA", + "value": "AOA", + "casing": {} + }, + { + "generatedName": "ARS", + "value": "ARS", + "casing": {} + }, + { + "generatedName": "USD", + "value": "USD", + "casing": {} + }, + { + "generatedName": "AUD", + "value": "AUD", + "casing": {} + }, + { + "generatedName": "AWG", + "value": "AWG", + "casing": {} + }, + { + "generatedName": "AZN", + "value": "AZN", + "casing": {} + }, + { + "generatedName": "BAM", + "value": "BAM", + "casing": {} + }, + { + "generatedName": "BBD", + "value": "BBD", + "casing": {} + }, + { + "generatedName": "BDT", + "value": "BDT", + "casing": {} + }, + { + "generatedName": "XOF", + "value": "XOF", + "casing": {} + }, + { + "generatedName": "BGN", + "value": "BGN", + "casing": {} + }, + { + "generatedName": "BHD", + "value": "BHD", + "casing": {} + }, + { + "generatedName": "BIF", + "value": "BIF", + "casing": {} + }, + { + "generatedName": "BMD", + "value": "BMD", + "casing": {} + }, + { + "generatedName": "BND", + "value": "BND", + "casing": {} + }, + { + "generatedName": "BOB", + "value": "BOB", + "casing": {} + }, + { + "generatedName": "BRL", + "value": "BRL", + "casing": {} + }, + { + "generatedName": "BSD", + "value": "BSD", + "casing": {} + }, + { + "generatedName": "INR", + "value": "INR", + "casing": {} + }, + { + "generatedName": "NOK", + "value": "NOK", + "casing": {} + }, + { + "generatedName": "BWP", + "value": "BWP", + "casing": {} + }, + { + "generatedName": "BYR", + "value": "BYR", + "casing": {} + }, + { + "generatedName": "BZD", + "value": "BZD", + "casing": {} + }, + { + "generatedName": "CAD", + "value": "CAD", + "casing": {} + }, + { + "generatedName": "CDF", + "value": "CDF", + "casing": {} + }, + { + "generatedName": "XAF", + "value": "XAF", + "casing": {} + }, + { + "generatedName": "CHF", + "value": "CHF", + "casing": {} + }, + { + "generatedName": "NZD", + "value": "NZD", + "casing": {} + }, + { + "generatedName": "CLP", + "value": "CLP", + "casing": {} + }, + { + "generatedName": "CNY", + "value": "CNY", + "casing": {} + }, + { + "generatedName": "COP", + "value": "COP", + "casing": {} + }, + { + "generatedName": "CRC", + "value": "CRC", + "casing": {} + }, + { + "generatedName": "CUP", + "value": "CUP", + "casing": {} + }, + { + "generatedName": "CVE", + "value": "CVE", + "casing": {} + }, + { + "generatedName": "ANG", + "value": "ANG", + "casing": {} + }, + { + "generatedName": "CZK", + "value": "CZK", + "casing": {} + }, + { + "generatedName": "DJF", + "value": "DJF", + "casing": {} + }, + { + "generatedName": "DKK", + "value": "DKK", + "casing": {} + }, + { + "generatedName": "DOP", + "value": "DOP", + "casing": {} + }, + { + "generatedName": "DZD", + "value": "DZD", + "casing": {} + }, + { + "generatedName": "EGP", + "value": "EGP", + "casing": {} + }, + { + "generatedName": "MAD", + "value": "MAD", + "casing": {} + }, + { + "generatedName": "ERN", + "value": "ERN", + "casing": {} + }, + { + "generatedName": "ETB", + "value": "ETB", + "casing": {} + }, + { + "generatedName": "FJD", + "value": "FJD", + "casing": {} + }, + { + "generatedName": "FKP", + "value": "FKP", + "casing": {} + }, + { + "generatedName": "GBP", + "value": "GBP", + "casing": {} + }, + { + "generatedName": "GEL", + "value": "GEL", + "casing": {} + }, + { + "generatedName": "GHS", + "value": "GHS", + "casing": {} + }, + { + "generatedName": "GIP", + "value": "GIP", + "casing": {} + }, + { + "generatedName": "GMD", + "value": "GMD", + "casing": {} + }, + { + "generatedName": "GNF", + "value": "GNF", + "casing": {} + }, + { + "generatedName": "GTQ", + "value": "GTQ", + "casing": {} + }, + { + "generatedName": "GYD", + "value": "GYD", + "casing": {} + }, + { + "generatedName": "HKD", + "value": "HKD", + "casing": {} + }, + { + "generatedName": "HNL", + "value": "HNL", + "casing": {} + }, + { + "generatedName": "HUF", + "value": "HUF", + "casing": {} + }, + { + "generatedName": "IDR", + "value": "IDR", + "casing": {} + }, + { + "generatedName": "ILS", + "value": "ILS", + "casing": {} + }, + { + "generatedName": "IQD", + "value": "IQD", + "casing": {} + }, + { + "generatedName": "IRR", + "value": "IRR", + "casing": {} + }, + { + "generatedName": "ISK", + "value": "ISK", + "casing": {} + }, + { + "generatedName": "JMD", + "value": "JMD", + "casing": {} + }, + { + "generatedName": "JOD", + "value": "JOD", + "casing": {} + }, + { + "generatedName": "JPY", + "value": "JPY", + "casing": {} + }, + { + "generatedName": "KES", + "value": "KES", + "casing": {} + }, + { + "generatedName": "KGS", + "value": "KGS", + "casing": {} + }, + { + "generatedName": "KHR", + "value": "KHR", + "casing": {} + }, + { + "generatedName": "KMF", + "value": "KMF", + "casing": {} + }, + { + "generatedName": "KPW", + "value": "KPW", + "casing": {} + }, + { + "generatedName": "KRW", + "value": "KRW", + "casing": {} + }, + { + "generatedName": "KWD", + "value": "KWD", + "casing": {} + }, + { + "generatedName": "KYD", + "value": "KYD", + "casing": {} + }, + { + "generatedName": "KZT", + "value": "KZT", + "casing": {} + }, + { + "generatedName": "LAK", + "value": "LAK", + "casing": {} + }, + { + "generatedName": "LBP", + "value": "LBP", + "casing": {} + }, + { + "generatedName": "LKR", + "value": "LKR", + "casing": {} + }, + { + "generatedName": "LRD", + "value": "LRD", + "casing": {} + }, + { + "generatedName": "ZAR", + "value": "ZAR", + "casing": {} + }, + { + "generatedName": "LYD", + "value": "LYD", + "casing": {} + }, + { + "generatedName": "MDL", + "value": "MDL", + "casing": {} + }, + { + "generatedName": "MGA", + "value": "MGA", + "casing": {} + }, + { + "generatedName": "MKD", + "value": "MKD", + "casing": {} + }, + { + "generatedName": "MMK", + "value": "MMK", + "casing": {} + }, + { + "generatedName": "MNT", + "value": "MNT", + "casing": {} + }, + { + "generatedName": "MOP", + "value": "MOP", + "casing": {} + }, + { + "generatedName": "MRO", + "value": "MRO", + "casing": {} + }, + { + "generatedName": "MUR", + "value": "MUR", + "casing": {} + }, + { + "generatedName": "MVR", + "value": "MVR", + "casing": {} + }, + { + "generatedName": "MWK", + "value": "MWK", + "casing": {} + }, + { + "generatedName": "MXN", + "value": "MXN", + "casing": {} + }, + { + "generatedName": "MYR", + "value": "MYR", + "casing": {} + }, + { + "generatedName": "MZN", + "value": "MZN", + "casing": {} + }, + { + "generatedName": "XPF", + "value": "XPF", + "casing": {} + }, + { + "generatedName": "NGN", + "value": "NGN", + "casing": {} + }, + { + "generatedName": "NIO", + "value": "NIO", + "casing": {} + }, + { + "generatedName": "NPR", + "value": "NPR", + "casing": {} + }, + { + "generatedName": "OMR", + "value": "OMR", + "casing": {} + }, + { + "generatedName": "PEN", + "value": "PEN", + "casing": {} + }, + { + "generatedName": "PGK", + "value": "PGK", + "casing": {} + }, + { + "generatedName": "PHP", + "value": "PHP", + "casing": {} + }, + { + "generatedName": "PKR", + "value": "PKR", + "casing": {} + }, + { + "generatedName": "PLN", + "value": "PLN", + "casing": {} + }, + { + "generatedName": "PYG", + "value": "PYG", + "casing": {} + }, + { + "generatedName": "QAR", + "value": "QAR", + "casing": {} + }, + { + "generatedName": "RON", + "value": "RON", + "casing": {} + }, + { + "generatedName": "RSD", + "value": "RSD", + "casing": {} + }, + { + "generatedName": "RUB", + "value": "RUB", + "casing": {} + }, + { + "generatedName": "RWF", + "value": "RWF", + "casing": {} + }, + { + "generatedName": "SAR", + "value": "SAR", + "casing": {} + }, + { + "generatedName": "SBD", + "value": "SBD", + "casing": {} + }, + { + "generatedName": "SCR", + "value": "SCR", + "casing": {} + }, + { + "generatedName": "SDG", + "value": "SDG", + "casing": {} + }, + { + "generatedName": "SEK", + "value": "SEK", + "casing": {} + }, + { + "generatedName": "SGD", + "value": "SGD", + "casing": {} + }, + { + "generatedName": "SHP", + "value": "SHP", + "casing": {} + }, + { + "generatedName": "SLL", + "value": "SLL", + "casing": {} + }, + { + "generatedName": "SOS", + "value": "SOS", + "casing": {} + }, + { + "generatedName": "SRD", + "value": "SRD", + "casing": {} + }, + { + "generatedName": "SSP", + "value": "SSP", + "casing": {} + }, + { + "generatedName": "STD", + "value": "STD", + "casing": {} + }, + { + "generatedName": "SYP", + "value": "SYP", + "casing": {} + }, + { + "generatedName": "SZL", + "value": "SZL", + "casing": {} + }, + { + "generatedName": "THB", + "value": "THB", + "casing": {} + }, + { + "generatedName": "TJS", + "value": "TJS", + "casing": {} + }, + { + "generatedName": "TMT", + "value": "TMT", + "casing": {} + }, + { + "generatedName": "TND", + "value": "TND", + "casing": {} + }, + { + "generatedName": "TOP", + "value": "TOP", + "casing": {} + }, + { + "generatedName": "TRY", + "value": "TRY", + "casing": {} + }, + { + "generatedName": "TTD", + "value": "TTD", + "casing": {} + }, + { + "generatedName": "TWD", + "value": "TWD", + "casing": {} + }, + { + "generatedName": "TZS", + "value": "TZS", + "casing": {} + }, + { + "generatedName": "UAH", + "value": "UAH", + "casing": {} + }, + { + "generatedName": "UGX", + "value": "UGX", + "casing": {} + }, + { + "generatedName": "UYU", + "value": "UYU", + "casing": {} + }, + { + "generatedName": "UZS", + "value": "UZS", + "casing": {} + }, + { + "generatedName": "VEF", + "value": "VEF", + "casing": {} + }, + { + "generatedName": "VND", + "value": "VND", + "casing": {} + }, + { + "generatedName": "VUV", + "value": "VUV", + "casing": {} + }, + { + "generatedName": "WST", + "value": "WST", + "casing": {} + }, + { + "generatedName": "YER", + "value": "YER", + "casing": {} + }, + { + "generatedName": "ZMW", + "value": "ZMW", + "casing": {} + }, + { + "generatedName": "ZWL", + "value": "ZWL", + "casing": {} + }, + { + "generatedName": "HRK", + "value": "HRK", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "CustomCategorySet": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "customCategorySetIncoming", + "key": "incoming", + "schema": { + "value": { + "schema": { + "type": "string" + }, + "generatedName": "CustomCategorySetIncomingItem", + "groupName": [], + "type": "primitive" + }, + "generatedName": "CustomCategorySetIncoming", + "nameOverride": "Incoming", + "title": "Incoming", + "groupName": [], + "type": "array" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "customCategorySetOutgoing", + "key": "outgoing", + "schema": { + "value": { + "schema": { + "type": "string" + }, + "generatedName": "CustomCategorySetOutgoingItem", + "groupName": [], + "type": "primitive" + }, + "generatedName": "CustomCategorySetOutgoing", + "nameOverride": "Outgoing", + "title": "Outgoing", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "CustomCategorySet", + "nameOverride": "CustomCategorySet", + "title": "CustomCategorySet", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "DocumentStatus": { + "description": "An enumeration.", + "generatedName": "DocumentStatus", + "nameOverride": "DocumentStatus", + "title": "DocumentStatus", + "values": [ + { + "generatedName": "queued", + "value": "queued", + "casing": {} + }, + { + "generatedName": "processing", + "value": "processing", + "casing": {} + }, + { + "generatedName": "processed", + "value": "processed", + "casing": {} + }, + { + "generatedName": "failed", + "value": "failed", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "EnrichedTransaction": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "enrichedTransactionEntities", + "key": "entities", + "schema": { + "generatedName": "enrichedTransactionEntities", + "nameOverride": "EnrichedTransaction", + "title": "EnrichedTransaction", + "value": { + "generatedName": "EnrichedTransactionEntities", + "schema": "Entities", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "enrichedTransactionCategories", + "key": "categories", + "schema": { + "generatedName": "enrichedTransactionCategories", + "nameOverride": "EnrichedTransaction", + "title": "EnrichedTransaction", + "value": { + "generatedName": "EnrichedTransactionCategories", + "schema": "Categories", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "enrichedTransactionLocation", + "key": "location", + "schema": { + "generatedName": "enrichedTransactionLocation", + "nameOverride": "EnrichedTransaction", + "title": "EnrichedTransaction", + "value": { + "generatedName": "EnrichedTransactionLocation", + "schema": "Location", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "enrichedTransactionError", + "key": "error", + "schema": { + "generatedName": "enrichedTransactionError", + "nameOverride": "EnrichedTransaction", + "title": "EnrichedTransaction", + "value": { + "generatedName": "EnrichedTransactionError", + "schema": "TransactionError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "enrichedTransactionCreatedAt", + "key": "created_at", + "schema": { + "description": "The timestamp of when the account holder was created.", + "schema": { + "type": "datetime" + }, + "generatedName": "EnrichedTransactionCreatedAt", + "title": "Created At", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "enrichedTransactionId", + "key": "id", + "schema": { + "description": "A unique identifier for the transaction. If two transactions are submitted with the same `id` the most recent one will replace the previous one.", + "schema": { + "minLength": 1, + "type": "string" + }, + "generatedName": "EnrichedTransactionId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "EnrichedTransaction", + "nameOverride": "EnrichedTransaction", + "title": "EnrichedTransaction", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "EnrichmentResult": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "enrichmentResultTransactions", + "key": "transactions", + "schema": { + "description": "A list of enriched transactions resulting from the enrichment of this batch.", + "value": { + "generatedName": "EnrichmentResultTransactionsItem", + "schema": "EnrichedTransaction", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "EnrichmentResultTransactions", + "nameOverride": "Transactions", + "title": "Transactions", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "EnrichmentResult", + "nameOverride": "EnrichmentResult", + "title": "EnrichmentResult", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "Entities": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "entitiesCounterparty", + "key": "counterparty", + "schema": { + "generatedName": "entitiesCounterparty", + "nameOverride": "Entities", + "title": "Entities", + "value": { + "generatedName": "EntitiesCounterparty", + "schema": "Counterparty", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "entitiesIntermediaries", + "key": "intermediaries", + "schema": { + "generatedName": "entitiesIntermediaries", + "nameOverride": "Entities", + "title": "Entities", + "value": { + "value": { + "generatedName": "EntitiesIntermediariesItem", + "schema": "Intermediary", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "EntitiesIntermediaries", + "nameOverride": "Intermediaries", + "title": "Intermediaries", + "groupName": [], + "type": "array" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "description": "Entities found by identity identification", + "generatedName": "Entities", + "nameOverride": "Entities", + "title": "Entities", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "Entity": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "entityId", + "key": "id", + "schema": { + "generatedName": "entityId", + "nameOverride": "Entity", + "title": "Entity", + "value": { + "description": "The unique UUID identifier of the entity", + "schema": { + "type": "string" + }, + "generatedName": "EntityId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "entityName", + "key": "name", + "schema": { + "generatedName": "entityName", + "nameOverride": "Entity", + "title": "Entity", + "value": { + "description": "The name of the entity", + "schema": { + "type": "string" + }, + "generatedName": "EntityName", + "nameOverride": "Name", + "title": "Name", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "entityWebsite", + "key": "website", + "schema": { + "generatedName": "entityWebsite", + "nameOverride": "Entity", + "title": "Entity", + "value": { + "description": "The website URL of the entity", + "schema": { + "type": "string" + }, + "generatedName": "EntityWebsite", + "nameOverride": "Website", + "title": "Website", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "entityLogo", + "key": "logo", + "schema": { + "generatedName": "entityLogo", + "nameOverride": "Entity", + "title": "Entity", + "value": { + "description": "Logo's URL", + "schema": { + "type": "string" + }, + "generatedName": "EntityLogo", + "nameOverride": "Logo", + "title": "Logo", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "entityMccs", + "key": "mccs", + "schema": { + "generatedName": "entityMccs", + "nameOverride": "Entity", + "title": "Entity", + "value": { + "description": "A list of [Merchant Category Codes](https://en.wikipedia.org/wiki/Merchant_category_code)", + "value": { + "schema": { + "type": "int" + }, + "generatedName": "EntityMccsItem", + "groupName": [], + "type": "primitive" + }, + "generatedName": "EntityMccs", + "nameOverride": "Mccs", + "title": "Mccs", + "groupName": [], + "type": "array" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "Entity", + "nameOverride": "Entity", + "title": "Entity", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "EntryType": { + "description": "An enumeration.", + "generatedName": "EntryType", + "nameOverride": "EntryType", + "title": "EntryType", + "values": [ + { + "generatedName": "incoming", + "value": "incoming", + "casing": {} + }, + { + "generatedName": "outgoing", + "value": "outgoing", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "FilterModel": { + "generatedName": "FilterModel", + "schema": "personalization", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "HTTPValidationError": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "httpValidationErrorDetail", + "key": "detail", + "schema": { + "generatedName": "httpValidationErrorDetail", + "nameOverride": "HTTPValidationError", + "title": "HTTPValidationError", + "value": { + "value": { + "generatedName": "HttpValidationErrorDetailItem", + "schema": "ValidationError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "HttpValidationErrorDetail", + "nameOverride": "Detail", + "title": "Detail", + "groupName": [], + "type": "array" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "HttpValidationError", + "nameOverride": "HTTPValidationError", + "title": "HTTPValidationError", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "Intermediary": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "intermediaryId", + "key": "id", + "schema": { + "generatedName": "intermediaryId", + "nameOverride": "Intermediary", + "title": "Intermediary", + "value": { + "description": "The unique UUID identifier of the entity", + "schema": { + "type": "string" + }, + "generatedName": "IntermediaryId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "intermediaryName", + "key": "name", + "schema": { + "generatedName": "intermediaryName", + "nameOverride": "Intermediary", + "title": "Intermediary", + "value": { + "description": "The name of the entity", + "schema": { + "type": "string" + }, + "generatedName": "IntermediaryName", + "nameOverride": "Name", + "title": "Name", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "intermediaryWebsite", + "key": "website", + "schema": { + "generatedName": "intermediaryWebsite", + "nameOverride": "Intermediary", + "title": "Intermediary", + "value": { + "description": "The website URL of the entity", + "schema": { + "type": "string" + }, + "generatedName": "IntermediaryWebsite", + "nameOverride": "Website", + "title": "Website", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "intermediaryLogo", + "key": "logo", + "schema": { + "generatedName": "intermediaryLogo", + "nameOverride": "Intermediary", + "title": "Intermediary", + "value": { + "description": "Logo's URL", + "schema": { + "type": "string" + }, + "generatedName": "IntermediaryLogo", + "nameOverride": "Logo", + "title": "Logo", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "intermediaryMccs", + "key": "mccs", + "schema": { + "generatedName": "intermediaryMccs", + "nameOverride": "Intermediary", + "title": "Intermediary", + "value": { + "description": "A list of [Merchant Category Codes](https://en.wikipedia.org/wiki/Merchant_category_code)", + "value": { + "schema": { + "type": "int" + }, + "generatedName": "IntermediaryMccsItem", + "groupName": [], + "type": "primitive" + }, + "generatedName": "IntermediaryMccs", + "nameOverride": "Mccs", + "title": "Mccs", + "groupName": [], + "type": "array" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "intermediaryType", + "key": "type", + "schema": { + "generatedName": "IntermediaryType", + "schema": "IntermediaryType", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "Intermediary", + "nameOverride": "Intermediary", + "title": "Intermediary", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "IntermediaryType": { + "description": "An enumeration.", + "generatedName": "IntermediaryType", + "nameOverride": "IntermediaryType", + "title": "IntermediaryType", + "values": [ + { + "generatedName": "delivery_service", + "value": "delivery_service", + "casing": {} + }, + { + "generatedName": "payment_processor", + "value": "payment_processor", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "Location": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "locationRawAddress", + "key": "raw_address", + "schema": { + "generatedName": "locationRawAddress", + "nameOverride": "Location", + "title": "Location", + "value": { + "description": "An unstructured string containing the address", + "schema": { + "type": "string" + }, + "generatedName": "LocationRawAddress", + "title": "Raw Address", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "locationStructured", + "key": "structured", + "schema": { + "generatedName": "locationStructured", + "nameOverride": "Location", + "title": "Location", + "value": { + "description": "When raw is set, a structured representation of it.", + "generatedName": "LocationStructured", + "schema": "LocationStructured", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "Location", + "nameOverride": "Location", + "title": "Location", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "LocationInput": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "locationInputRawAddress", + "key": "raw_address", + "schema": { + "generatedName": "locationInputRawAddress", + "nameOverride": "LocationInput", + "title": "LocationInput", + "value": { + "description": "An unstructured string containing the address", + "schema": { + "type": "string" + }, + "generatedName": "LocationInputRawAddress", + "title": "Raw Address", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "locationInputCountry", + "key": "country", + "schema": { + "description": "The country where the transaction was made in ISO 3166-2 format", + "generatedName": "LocationInputCountry", + "schema": "Country", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "description": "Location of where the transaction has taken place. This can greatly improve entity identification, especially\nunder ambiguity.", + "generatedName": "LocationInput", + "nameOverride": "LocationInput", + "title": "LocationInput", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "LocationStructured": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "locationStructuredStreet", + "key": "street", + "schema": { + "generatedName": "locationStructuredStreet", + "nameOverride": "LocationStructured", + "title": "LocationStructured", + "value": { + "description": "The street name and number of the location", + "schema": { + "type": "string" + }, + "generatedName": "LocationStructuredStreet", + "nameOverride": "Street", + "title": "Street", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "locationStructuredCity", + "key": "city", + "schema": { + "generatedName": "locationStructuredCity", + "nameOverride": "LocationStructured", + "title": "LocationStructured", + "value": { + "description": "The city where the location is situated", + "schema": { + "type": "string" + }, + "generatedName": "LocationStructuredCity", + "nameOverride": "City", + "title": "City", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "locationStructuredState", + "key": "state", + "schema": { + "generatedName": "locationStructuredState", + "nameOverride": "LocationStructured", + "title": "LocationStructured", + "value": { + "description": "The state or region of the location", + "schema": { + "type": "string" + }, + "generatedName": "LocationStructuredState", + "nameOverride": "State", + "title": "State", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "locationStructuredPostcode", + "key": "postcode", + "schema": { + "generatedName": "locationStructuredPostcode", + "nameOverride": "LocationStructured", + "title": "LocationStructured", + "value": { + "description": "The postal code or ZIP code of the location", + "schema": { + "type": "string" + }, + "generatedName": "LocationStructuredPostcode", + "nameOverride": "Postcode", + "title": "Postcode", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "locationStructuredCountryCode", + "key": "country_code", + "schema": { + "generatedName": "locationStructuredCountryCode", + "nameOverride": "LocationStructured", + "title": "LocationStructured", + "value": { + "description": "The country code of the location in ISO 3166-2 format", + "schema": { + "type": "string" + }, + "generatedName": "LocationStructuredCountryCode", + "title": "Country Code", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "locationStructuredCountry", + "key": "country", + "schema": { + "generatedName": "locationStructuredCountry", + "nameOverride": "LocationStructured", + "title": "LocationStructured", + "value": { + "description": "The full name of the country", + "schema": { + "type": "string" + }, + "generatedName": "LocationStructuredCountry", + "nameOverride": "Country", + "title": "Country", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "locationStructuredLatitude", + "key": "latitude", + "schema": { + "generatedName": "locationStructuredLatitude", + "nameOverride": "LocationStructured", + "title": "LocationStructured", + "value": { + "description": "The latitude coordinate of the location", + "schema": { + "type": "double" + }, + "generatedName": "LocationStructuredLatitude", + "nameOverride": "Latitude", + "title": "Latitude", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "locationStructuredLongitude", + "key": "longitude", + "schema": { + "generatedName": "locationStructuredLongitude", + "nameOverride": "LocationStructured", + "title": "LocationStructured", + "value": { + "description": "The longitude coordinate of the location", + "schema": { + "type": "double" + }, + "generatedName": "LocationStructuredLongitude", + "nameOverride": "Longitude", + "title": "Longitude", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "locationStructuredGoogleMapsUrl", + "key": "google_maps_url", + "schema": { + "generatedName": "locationStructuredGoogleMapsUrl", + "nameOverride": "LocationStructured", + "title": "LocationStructured", + "value": { + "description": "A URL link to view the location on Google Maps", + "schema": { + "type": "string" + }, + "generatedName": "LocationStructuredGoogleMapsUrl", + "title": "Google Maps Url", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "locationStructuredAppleMapsUrl", + "key": "apple_maps_url", + "schema": { + "generatedName": "locationStructuredAppleMapsUrl", + "nameOverride": "LocationStructured", + "title": "LocationStructured", + "value": { + "description": "A URL link to view the location on Apple Maps", + "schema": { + "type": "string" + }, + "generatedName": "LocationStructuredAppleMapsUrl", + "title": "Apple Maps Url", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "locationStructuredStoreNumber", + "key": "store_number", + "schema": { + "generatedName": "locationStructuredStoreNumber", + "nameOverride": "LocationStructured", + "title": "LocationStructured", + "value": { + "description": "A unique identifier for a specific store or branch, if applicable", + "schema": { + "type": "string" + }, + "generatedName": "LocationStructuredStoreNumber", + "title": "Store Number", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "LocationStructured", + "nameOverride": "LocationStructured", + "title": "LocationStructured", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "PagedResponse_AccountHolderExternal": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "pagedResponseAccountHolderExternalNextCursor", + "key": "next_cursor", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "PagedResponseAccountHolderExternalNextCursor", + "title": "Next Cursor", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "pagedResponseAccountHolderExternalData", + "key": "data", + "schema": { + "value": { + "generatedName": "PagedResponseAccountHolderExternalDataItem", + "schema": "AccountHolderExternal", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "PagedResponseAccountHolderExternalData", + "nameOverride": "Data", + "title": "Data", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "PagedResponseAccountHolderExternal", + "title": "PagedResponse_AccountHolderExternal", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "PagedResponse_BankStatement": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "pagedResponseBankStatementNextCursor", + "key": "next_cursor", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "PagedResponseBankStatementNextCursor", + "title": "Next Cursor", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "pagedResponseBankStatementData", + "key": "data", + "schema": { + "value": { + "generatedName": "PagedResponseBankStatementDataItem", + "schema": "BankStatement", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "PagedResponseBankStatementData", + "nameOverride": "Data", + "title": "Data", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "PagedResponseBankStatement", + "title": "PagedResponse_BankStatement", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "PagedResponse_Batch": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "pagedResponseBatchNextCursor", + "key": "next_cursor", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "PagedResponseBatchNextCursor", + "title": "Next Cursor", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "pagedResponseBatchData", + "key": "data", + "schema": { + "value": { + "generatedName": "PagedResponseBatchDataItem", + "schema": "Batch", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "PagedResponseBatchData", + "nameOverride": "Data", + "title": "Data", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "PagedResponseBatch", + "title": "PagedResponse_Batch", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "PagedResponse_Report_": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "pagedResponseReportNextCursor", + "key": "next_cursor", + "schema": { + "generatedName": "pagedResponseReportNextCursor", + "title": "PagedResponse[Report]", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "PagedResponseReportNextCursor", + "title": "Next Cursor", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "pagedResponseReportData", + "key": "data", + "schema": { + "value": { + "generatedName": "PagedResponseReportDataItem", + "schema": "Report", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "PagedResponseReportData", + "nameOverride": "Data", + "title": "Data", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "PagedResponseReport", + "title": "PagedResponse[Report]", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "PagedResponse_Transaction": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "pagedResponseTransactionNextCursor", + "key": "next_cursor", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "PagedResponseTransactionNextCursor", + "title": "Next Cursor", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "pagedResponseTransactionData", + "key": "data", + "schema": { + "value": { + "generatedName": "PagedResponseTransactionDataItem", + "schema": "Transaction", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "PagedResponseTransactionData", + "nameOverride": "Data", + "title": "Data", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "PagedResponseTransaction", + "title": "PagedResponse_Transaction", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "PagedResponse_Webhook": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "pagedResponseWebhookNextCursor", + "key": "next_cursor", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "PagedResponseWebhookNextCursor", + "title": "Next Cursor", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "pagedResponseWebhookData", + "key": "data", + "schema": { + "value": { + "generatedName": "PagedResponseWebhookDataItem", + "schema": "Webhook", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "PagedResponseWebhookData", + "nameOverride": "Data", + "title": "Data", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "PagedResponseWebhook", + "title": "PagedResponse_Webhook", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "Recurrence": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "recurrenceType", + "key": "type", + "schema": { + "description": "Whether the transaction is a one-time transfer `one-off`, regularly with varying pricing `recurring` or with fixed pricing `subscription`", + "generatedName": "RecurrenceType", + "schema": "RecurrenceType", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "description": "The `Recurrence` object represents the recurrence pattern of a transaction. It provides information about\nwhether a transaction is a one-time event or a part of a recurring series.", + "generatedName": "Recurrence", + "nameOverride": "Recurrence", + "title": "Recurrence", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "RecurrenceGroup": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "recurrenceGroupId", + "key": "id", + "schema": { + "description": "A unique UUID identifier for the group", + "schema": { + "type": "string" + }, + "generatedName": "RecurrenceGroupId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "recurrenceGroupStartDate", + "key": "start_date", + "schema": { + "description": "The date of the oldest transaction in the group", + "schema": { + "format": "date", + "type": "string" + }, + "generatedName": "RecurrenceGroupStartDate", + "title": "Start Date", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "recurrenceGroupEndDate", + "key": "end_date", + "schema": { + "description": "The date of the most recent transaction in the group", + "schema": { + "format": "date", + "type": "string" + }, + "generatedName": "RecurrenceGroupEndDate", + "title": "End Date", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "recurrenceGroupTotalAmount", + "key": "total_amount", + "schema": { + "description": "The sum of all transaction amounts in this group", + "schema": { + "type": "double" + }, + "generatedName": "RecurrenceGroupTotalAmount", + "title": "Total Amount", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "recurrenceGroupAverageAmount", + "key": "average_amount", + "schema": { + "description": "The average amount per transaction in this group", + "schema": { + "type": "double" + }, + "generatedName": "RecurrenceGroupAverageAmount", + "title": "Average Amount", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "recurrenceGroupPeriodicityInDays", + "key": "periodicity_in_days", + "schema": { + "description": "The estimated number of days between transactions in this group", + "schema": { + "type": "double" + }, + "generatedName": "RecurrenceGroupPeriodicityInDays", + "title": "Periodicity In Days", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "recurrenceGroupPeriodicity", + "key": "periodicity", + "schema": { + "description": "A human-readable description of the transaction frequency", + "generatedName": "RecurrenceGroupPeriodicity", + "schema": "RecurrencePeriodicity", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "recurrenceGroupCounterparty", + "key": "counterparty", + "schema": { + "description": "Counterparty of the transactions", + "generatedName": "RecurrenceGroupCounterparty", + "schema": "Counterparty", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "recurrenceGroupCategories", + "key": "categories", + "schema": { + "description": "Categories of the transactions in the recurrence group", + "generatedName": "RecurrenceGroupCategories", + "schema": "Categories", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "recurrenceGroupTransactionIds", + "key": "transaction_ids", + "schema": { + "description": "Transactions in this recurrence group", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "RecurrenceGroupTransactionIdsItem", + "groupName": [], + "type": "primitive" + }, + "generatedName": "RecurrenceGroupTransactionIds", + "title": "Transaction Ids", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "RecurrenceGroup", + "nameOverride": "RecurrenceGroup", + "title": "RecurrenceGroup", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "RecurrencePeriodicity": { + "description": "An enumeration.", + "generatedName": "RecurrencePeriodicity", + "nameOverride": "RecurrencePeriodicity", + "title": "RecurrencePeriodicity", + "values": [ + { + "generatedName": "daily", + "value": "daily", + "casing": {} + }, + { + "generatedName": "weekly", + "value": "weekly", + "casing": {} + }, + { + "generatedName": "bi_weekly", + "value": "bi_weekly", + "casing": {} + }, + { + "generatedName": "monthly", + "value": "monthly", + "casing": {} + }, + { + "generatedName": "bi_monthly", + "value": "bi_monthly", + "casing": {} + }, + { + "generatedName": "quarterly", + "value": "quarterly", + "casing": {} + }, + { + "generatedName": "semi_yearly", + "value": "semi_yearly", + "casing": {} + }, + { + "generatedName": "yearly", + "value": "yearly", + "casing": {} + }, + { + "generatedName": "other", + "value": "other", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "RecurrenceType": { + "description": "An enumeration.", + "generatedName": "RecurrenceType", + "nameOverride": "RecurrenceType", + "title": "RecurrenceType", + "values": [ + { + "generatedName": "recurring", + "value": "recurring", + "casing": {} + }, + { + "generatedName": "subscription", + "value": "subscription", + "casing": {} + }, + { + "generatedName": "OneOff", + "value": "one off", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "Report": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "reportTransactionId", + "key": "transaction_id", + "schema": { + "description": "The unique identifier of the transaction", + "schema": { + "minLength": 1, + "type": "string" + }, + "generatedName": "ReportTransactionId", + "title": "Transaction Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "reportDescription", + "key": "description", + "schema": { + "description": "A description of what is wrong in the transaction", + "schema": { + "type": "string" + }, + "generatedName": "ReportDescription", + "nameOverride": "Description", + "title": "Description", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "reportFields", + "key": "fields", + "schema": { + "description": "A list of the fields that are incorrect", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "ReportFieldsItem", + "groupName": [], + "type": "primitive" + }, + "generatedName": "ReportFields", + "nameOverride": "Fields", + "title": "Fields", + "groupName": [], + "type": "array" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "reportId", + "key": "id", + "schema": { + "description": "A generated unique identifier for the report.", + "schema": { + "type": "string" + }, + "generatedName": "ReportId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "reportCreatedAt", + "key": "created_at", + "schema": { + "description": "The date and time when the report was created.", + "schema": { + "type": "datetime" + }, + "generatedName": "ReportCreatedAt", + "title": "Created At", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "reportStatus", + "key": "status", + "schema": { + "description": "The status of the report.\n\n* `open`: a newly created report\n* `pending`: the report is being investigated\n* `rejected`: the original enrichment output was deemed correct or we couldn't resolve it, check `rejection_reason`\n* `resolved`: the issue has been resolved", + "generatedName": "ReportStatus", + "schema": "ReportStatus", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "reportRejectionReason", + "key": "rejection_reason", + "schema": { + "generatedName": "reportRejectionReason", + "nameOverride": "Report", + "title": "Report", + "value": { + "description": "An explanation of why the report was rejected", + "schema": { + "type": "string" + }, + "generatedName": "ReportRejectionReason", + "title": "Rejection Reason", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "Report", + "nameOverride": "Report", + "title": "Report", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "ReportBase": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "reportBaseTransactionId", + "key": "transaction_id", + "schema": { + "description": "The unique identifier of the transaction", + "schema": { + "minLength": 1, + "type": "string" + }, + "generatedName": "ReportBaseTransactionId", + "title": "Transaction Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "reportBaseDescription", + "key": "description", + "schema": { + "description": "A description of what is wrong in the transaction", + "schema": { + "type": "string" + }, + "generatedName": "ReportBaseDescription", + "nameOverride": "Description", + "title": "Description", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "reportBaseFields", + "key": "fields", + "schema": { + "description": "A list of the fields that are incorrect", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "ReportBaseFieldsItem", + "groupName": [], + "type": "primitive" + }, + "generatedName": "ReportBaseFields", + "nameOverride": "Fields", + "title": "Fields", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "ReportBase", + "nameOverride": "ReportBase", + "title": "ReportBase", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "ReportStatus": { + "description": "An enumeration.", + "generatedName": "ReportStatus", + "nameOverride": "ReportStatus", + "title": "ReportStatus", + "values": [ + { + "generatedName": "open", + "value": "open", + "casing": {} + }, + { + "generatedName": "pending", + "value": "pending", + "casing": {} + }, + { + "generatedName": "resolved", + "value": "resolved", + "casing": {} + }, + { + "generatedName": "rejected", + "value": "rejected", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "StatementInfo": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "statementInfoInstitution", + "key": "institution", + "schema": { + "generatedName": "statementInfoInstitution", + "nameOverride": "StatementInfo", + "title": "StatementInfo", + "value": { + "schema": { + "type": "string" + }, + "generatedName": "StatementInfoInstitution", + "nameOverride": "Institution", + "title": "Institution", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "statementInfoStartDate", + "key": "start_date", + "schema": { + "generatedName": "statementInfoStartDate", + "nameOverride": "StatementInfo", + "title": "StatementInfo", + "value": { + "schema": { + "format": "date", + "type": "string" + }, + "generatedName": "StatementInfoStartDate", + "title": "Start Date", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "statementInfoEndDate", + "key": "end_date", + "schema": { + "generatedName": "statementInfoEndDate", + "nameOverride": "StatementInfo", + "title": "StatementInfo", + "value": { + "schema": { + "format": "date", + "type": "string" + }, + "generatedName": "StatementInfoEndDate", + "title": "End Date", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "statementInfoAccountHolder", + "key": "account_holder", + "schema": { + "generatedName": "statementInfoAccountHolder", + "nameOverride": "StatementInfo", + "title": "StatementInfo", + "value": { + "generatedName": "StatementInfoAccountHolder", + "schema": "AccountHolder", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "statementInfoAccounts", + "key": "accounts", + "schema": { + "generatedName": "statementInfoAccounts", + "nameOverride": "StatementInfo", + "title": "StatementInfo", + "value": { + "value": { + "generatedName": "StatementInfoAccountsItem", + "schema": "Account", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "StatementInfoAccounts", + "nameOverride": "Accounts", + "title": "Accounts", + "groupName": [], + "type": "array" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "StatementInfo", + "nameOverride": "StatementInfo", + "title": "StatementInfo", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "SyncEnrichmentInput": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "syncEnrichmentInputTransactions", + "key": "transactions", + "schema": { + "value": { + "generatedName": "SyncEnrichmentInputTransactionsItem", + "schema": "TransactionInput", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "SyncEnrichmentInputTransactions", + "nameOverride": "Transactions", + "title": "Transactions", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "SyncEnrichmentInput", + "nameOverride": "SyncEnrichmentInput", + "title": "SyncEnrichmentInput", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "SyncEnrichmentOutput": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "syncEnrichmentOutputTransactions", + "key": "transactions", + "schema": { + "description": "A list of enriched transactions resulting from the enrichment of this batch.", + "value": { + "generatedName": "SyncEnrichmentOutputTransactionsItem", + "schema": "EnrichedTransaction", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "SyncEnrichmentOutputTransactions", + "nameOverride": "Transactions", + "title": "Transactions", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "SyncEnrichmentOutput", + "nameOverride": "SyncEnrichmentOutput", + "title": "SyncEnrichmentOutput", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "Transaction": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "transactionId", + "key": "id", + "schema": { + "description": "A unique identifier of the transaction", + "schema": { + "minLength": 1, + "type": "string" + }, + "generatedName": "TransactionId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionDescription", + "key": "description", + "schema": { + "description": "The description string of the transaction", + "schema": { + "minLength": 0, + "maxLength": 1024, + "type": "string" + }, + "generatedName": "TransactionDescription", + "nameOverride": "Description", + "title": "Description", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionDate", + "key": "date", + "schema": { + "description": "The date that the transaction was posted. Uses ISO 8601 format (YYYY-MM-DD)", + "schema": { + "format": "date", + "type": "string" + }, + "generatedName": "TransactionDate", + "nameOverride": "Date", + "title": "Date", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionAmount", + "key": "amount", + "schema": { + "description": "The amount of the transaction in the `currency`. Must be a positive value. For example, if the `currency` is USD, then it's the amount in dollars.", + "schema": { + "minimum": 0, + "type": "double" + }, + "generatedName": "TransactionAmount", + "nameOverride": "Amount", + "title": "Amount", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionEntryType", + "key": "entry_type", + "schema": { + "description": "The direction of the flow of the money from the perspective of the account holder. `outgoing` to represent money leaving the account, such as purchases or fees, while `incoming` represents money entering the account, such as income or refunds.", + "generatedName": "TransactionEntryType", + "schema": "EntryType", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionCurrency", + "key": "currency", + "schema": { + "description": "The currency of the transaction in ISO 4217 format", + "generatedName": "TransactionCurrency", + "schema": "Currency", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionEntities", + "key": "entities", + "schema": { + "generatedName": "transactionEntities", + "nameOverride": "Transaction", + "title": "Transaction", + "value": { + "generatedName": "TransactionEntities", + "schema": "Entities", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "transactionCategories", + "key": "categories", + "schema": { + "generatedName": "transactionCategories", + "nameOverride": "Transaction", + "title": "Transaction", + "value": { + "generatedName": "TransactionCategories", + "schema": "Categories", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "transactionLocation", + "key": "location", + "schema": { + "generatedName": "transactionLocation", + "nameOverride": "Transaction", + "title": "Transaction", + "value": { + "generatedName": "TransactionLocation", + "schema": "Location", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "transactionError", + "key": "error", + "schema": { + "generatedName": "transactionError", + "nameOverride": "Transaction", + "title": "Transaction", + "value": { + "generatedName": "TransactionError", + "schema": "TransactionError", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "transactionCreatedAt", + "key": "created_at", + "schema": { + "description": "The timestamp of when the account holder was created.", + "schema": { + "type": "datetime" + }, + "generatedName": "TransactionCreatedAt", + "title": "Created At", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionAccountHolderId", + "key": "account_holder_id", + "schema": { + "generatedName": "transactionAccountHolderId", + "nameOverride": "Transaction", + "title": "Transaction", + "value": { + "description": "The unique ID of the account holder of the transaction", + "schema": { + "minLength": 1, + "type": "string" + }, + "generatedName": "TransactionAccountHolderId", + "title": "Account Holder Id", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionRecurrence", + "key": "recurrence", + "schema": { + "generatedName": "transactionRecurrence", + "nameOverride": "Transaction", + "title": "Transaction", + "value": { + "generatedName": "TransactionRecurrence", + "schema": "Recurrence", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "Transaction", + "nameOverride": "Transaction", + "title": "Transaction", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "TransactionError": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "transactionErrorCode", + "key": "code", + "schema": { + "generatedName": "TransactionErrorCode", + "schema": "TransactionErrorCode", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "transactionErrorMessage", + "key": "message", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "TransactionErrorMessage", + "nameOverride": "Message", + "title": "Message", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "TransactionError", + "nameOverride": "TransactionError", + "title": "TransactionError", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "TransactionErrorCode": { + "description": "An enumeration.", + "generatedName": "TransactionErrorCode", + "nameOverride": "TransactionErrorCode", + "title": "TransactionErrorCode", + "values": [ + { + "generatedName": "account_holder_not_found", + "value": "account_holder_not_found", + "casing": {} + }, + { + "generatedName": "internal_error", + "value": "internal_error", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "TransactionInput": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "transactionInputId", + "key": "id", + "schema": { + "description": "A unique identifier of the transaction", + "schema": { + "minLength": 1, + "type": "string" + }, + "generatedName": "TransactionInputId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionInputDescription", + "key": "description", + "schema": { + "description": "The description string of the transaction", + "schema": { + "minLength": 0, + "maxLength": 1024, + "type": "string" + }, + "generatedName": "TransactionInputDescription", + "nameOverride": "Description", + "title": "Description", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionInputDate", + "key": "date", + "schema": { + "description": "The date that the transaction was posted. Uses ISO 8601 format (YYYY-MM-DD)", + "schema": { + "format": "date", + "type": "string" + }, + "generatedName": "TransactionInputDate", + "nameOverride": "Date", + "title": "Date", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionInputAmount", + "key": "amount", + "schema": { + "description": "The amount of the transaction in the `currency`. Must be a positive value. For example, if the `currency` is USD, then it's the amount in dollars.", + "schema": { + "minimum": 0, + "type": "double" + }, + "generatedName": "TransactionInputAmount", + "nameOverride": "Amount", + "title": "Amount", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionInputEntryType", + "key": "entry_type", + "schema": { + "description": "The direction of the flow of the money from the perspective of the account holder. `outgoing` to represent money leaving the account, such as purchases or fees, while `incoming` represents money entering the account, such as income or refunds.", + "generatedName": "TransactionInputEntryType", + "schema": "EntryType", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionInputCurrency", + "key": "currency", + "schema": { + "description": "The currency of the transaction in ISO 4217 format", + "generatedName": "TransactionInputCurrency", + "schema": "Currency", + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionInputAccountHolderId", + "key": "account_holder_id", + "schema": { + "description": "The unique ID of the account holder. Unsetting it will disable [categorization](./docs/v3/enrichment/entities).", + "schema": { + "type": "string" + }, + "generatedName": "TransactionInputAccountHolderId", + "title": "Account Holder Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "transactionInputLocation", + "key": "location", + "schema": { + "generatedName": "transactionInputLocation", + "nameOverride": "TransactionInput", + "title": "TransactionInput", + "value": { + "generatedName": "TransactionInputLocation", + "schema": "LocationInput", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "TransactionInput", + "nameOverride": "TransactionInput", + "title": "TransactionInput", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "ValidationError": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "validationErrorLoc", + "key": "loc", + "schema": { + "value": { + "value": { + "generatedName": "ValidationErrorLocItem", + "schemas": [ + { + "schema": { + "type": "string" + }, + "generatedName": "ValidationErrorLocItem", + "groupName": [], + "type": "primitive" + }, + { + "schema": { + "type": "int" + }, + "generatedName": "ValidationErrorLocItem", + "groupName": [], + "type": "primitive" + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "undisciminated" + }, + "type": "oneOf" + }, + "generatedName": "ValidationErrorLoc", + "nameOverride": "Location", + "title": "Location", + "groupName": [], + "type": "array" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "validationErrorMsg", + "key": "msg", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "ValidationErrorMsg", + "nameOverride": "Message", + "title": "Message", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "validationErrorType", + "key": "type", + "schema": { + "schema": { + "type": "string" + }, + "generatedName": "ValidationErrorType", + "title": "Error Type", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "ValidationError", + "nameOverride": "ValidationError", + "title": "ValidationError", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "Webhook": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "webhookUrl", + "key": "url", + "schema": { + "description": "The URL of the webhook", + "schema": { + "format": "uri", + "minLength": 1, + "maxLength": 1024, + "type": "string" + }, + "generatedName": "WebhookUrl", + "nameOverride": "Url", + "title": "Url", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "webhookEvents", + "key": "events", + "schema": { + "description": "A list of events that this webhook subscribes to", + "value": { + "generatedName": "WebhookEventsItem", + "values": [ + { + "generatedName": "ReportsResolved", + "value": "reports.resolved", + "casing": {} + }, + { + "generatedName": "ReportsRejected", + "value": "reports.rejected", + "casing": {} + }, + { + "generatedName": "ReportsPending", + "value": "reports.pending", + "casing": {} + }, + { + "generatedName": "BankStatementsCompleted", + "value": "bank_statements.completed", + "casing": {} + }, + { + "generatedName": "BankStatementsError", + "value": "bank_statements.error", + "casing": {} + }, + { + "generatedName": "BatchesCompleted", + "value": "batches.completed", + "casing": {} + }, + { + "generatedName": "BatchesError", + "value": "batches.error", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "generatedName": "WebhookEvents", + "nameOverride": "Events", + "title": "Events", + "groupName": [], + "type": "array" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "webhookToken", + "key": "token", + "schema": { + "generatedName": "webhookToken", + "nameOverride": "Webhook", + "title": "Webhook", + "value": { + "description": "A secret string used to authenticate the webhook. This value will be included in the `X-Ntropy-Token` header when sending requests to the webhook", + "schema": { + "maxLength": 128, + "type": "string" + }, + "generatedName": "WebhookToken", + "nameOverride": "Token", + "title": "Token", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "webhookId", + "key": "id", + "schema": { + "description": "A generated unique identifier for the webhook", + "schema": { + "type": "string" + }, + "generatedName": "WebhookId", + "nameOverride": "Id", + "title": "Id", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "webhookCreatedAt", + "key": "created_at", + "schema": { + "description": "The date and time when the webhook was created.", + "schema": { + "type": "datetime" + }, + "generatedName": "WebhookCreatedAt", + "title": "Created At", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "webhookEnabled", + "key": "enabled", + "schema": { + "description": "Whether the webhook is enabled or not.", + "schema": { + "type": "boolean" + }, + "generatedName": "WebhookEnabled", + "nameOverride": "Enabled", + "title": "Enabled", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "Webhook", + "nameOverride": "Webhook", + "title": "Webhook", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "WebhookBase": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "webhookBaseUrl", + "key": "url", + "schema": { + "description": "The URL of the webhook", + "schema": { + "format": "uri", + "minLength": 1, + "maxLength": 1024, + "type": "string" + }, + "generatedName": "WebhookBaseUrl", + "nameOverride": "Url", + "title": "Url", + "groupName": [], + "type": "primitive" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "webhookBaseEvents", + "key": "events", + "schema": { + "description": "A list of events that this webhook subscribes to", + "value": { + "generatedName": "WebhookBaseEventsItem", + "values": [ + { + "generatedName": "ReportsResolved", + "value": "reports.resolved", + "casing": {} + }, + { + "generatedName": "ReportsRejected", + "value": "reports.rejected", + "casing": {} + }, + { + "generatedName": "ReportsPending", + "value": "reports.pending", + "casing": {} + }, + { + "generatedName": "BankStatementsCompleted", + "value": "bank_statements.completed", + "casing": {} + }, + { + "generatedName": "BankStatementsError", + "value": "bank_statements.error", + "casing": {} + }, + { + "generatedName": "BatchesCompleted", + "value": "batches.completed", + "casing": {} + }, + { + "generatedName": "BatchesError", + "value": "batches.error", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "generatedName": "WebhookBaseEvents", + "nameOverride": "Events", + "title": "Events", + "groupName": [], + "type": "array" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "webhookBaseToken", + "key": "token", + "schema": { + "generatedName": "webhookBaseToken", + "nameOverride": "WebhookBase", + "title": "WebhookBase", + "value": { + "description": "A secret string used to authenticate the webhook. This value will be included in the `X-Ntropy-Token` header when sending requests to the webhook", + "schema": { + "maxLength": 128, + "type": "string" + }, + "generatedName": "WebhookBaseToken", + "nameOverride": "Token", + "title": "Token", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "WebhookBase", + "nameOverride": "WebhookBase", + "title": "WebhookBase", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "WebhookPatch": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "webhookPatchUrl", + "key": "url", + "schema": { + "generatedName": "webhookPatchUrl", + "nameOverride": "WebhookPatch", + "title": "WebhookPatch", + "value": { + "description": "The URL of the webhook", + "schema": { + "format": "uri", + "minLength": 1, + "maxLength": 1024, + "type": "string" + }, + "generatedName": "WebhookPatchUrl", + "nameOverride": "Url", + "title": "Url", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "webhookPatchEvents", + "key": "events", + "schema": { + "generatedName": "webhookPatchEvents", + "nameOverride": "WebhookPatch", + "title": "WebhookPatch", + "value": { + "description": "A list of events that this webhook subscribes to", + "value": { + "generatedName": "WebhookPatchEventsItem", + "values": [ + { + "generatedName": "ReportsResolved", + "value": "reports.resolved", + "casing": {} + }, + { + "generatedName": "ReportsRejected", + "value": "reports.rejected", + "casing": {} + }, + { + "generatedName": "ReportsPending", + "value": "reports.pending", + "casing": {} + }, + { + "generatedName": "BankStatementsCompleted", + "value": "bank_statements.completed", + "casing": {} + }, + { + "generatedName": "BankStatementsError", + "value": "bank_statements.error", + "casing": {} + }, + { + "generatedName": "BatchesCompleted", + "value": "batches.completed", + "casing": {} + }, + { + "generatedName": "BatchesError", + "value": "batches.error", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "generatedName": "WebhookPatchEvents", + "nameOverride": "Events", + "title": "Events", + "groupName": [], + "type": "array" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "webhookPatchToken", + "key": "token", + "schema": { + "generatedName": "webhookPatchToken", + "nameOverride": "WebhookPatch", + "title": "WebhookPatch", + "value": { + "description": "A secret string used to authenticate the webhook. This value will be included in the `X-Ntropy-Token` header when sending requests to the webhook", + "schema": { + "maxLength": 128, + "type": "string" + }, + "generatedName": "WebhookPatchToken", + "nameOverride": "Token", + "title": "Token", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "webhookPatchEnabled", + "key": "enabled", + "schema": { + "generatedName": "webhookPatchEnabled", + "nameOverride": "WebhookPatch", + "title": "WebhookPatch", + "value": { + "description": "Whether the webhook is enabled or not.", + "schema": { + "type": "boolean" + }, + "generatedName": "WebhookPatchEnabled", + "nameOverride": "Enabled", + "title": "Enabled", + "groupName": [], + "type": "primitive" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "WebhookPatch", + "nameOverride": "WebhookPatch", + "title": "WebhookPatch", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "Expr": { + "value": { + "generatedName": "Expr", + "title": "expression", + "nameOverride": "expression", + "schemas": [ + { + "schema": { + "type": "boolean" + }, + "generatedName": "Expr", + "nameOverride": "boolean", + "title": "boolean", + "groupName": [], + "type": "primitive" + }, + { + "schema": { + "type": "string" + }, + "generatedName": "Expr", + "nameOverride": "string", + "title": "string", + "groupName": [], + "type": "primitive" + }, + { + "schema": { + "type": "double" + }, + "generatedName": "Expr", + "nameOverride": "number", + "title": "number", + "groupName": [], + "type": "primitive" + }, + { + "generatedName": "ExprThree", + "schema": "FnCall", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "undisciminated" + }, + "type": "oneOf" + }, + "TxProp": { + "generatedName": "TxProp", + "nameOverride": "properties", + "title": "properties", + "values": [ + { + "generatedName": "logo", + "value": "logo", + "casing": {} + }, + { + "generatedName": "website", + "value": "website", + "casing": {} + }, + { + "generatedName": "merchant", + "value": "merchant", + "casing": {} + }, + { + "generatedName": "description", + "value": "description", + "casing": {} + }, + { + "generatedName": "merchant_id", + "value": "merchant_id", + "casing": {} + }, + { + "generatedName": "location", + "value": "location", + "casing": {} + }, + { + "generatedName": "person", + "value": "person", + "casing": {} + }, + { + "generatedName": "transaction_type", + "value": "transaction_type", + "casing": {} + }, + { + "generatedName": "amount", + "value": "amount", + "casing": {} + }, + { + "generatedName": "entry_type", + "value": "entry_type", + "casing": {} + }, + { + "generatedName": "account_holder_type", + "value": "account_holder_type", + "casing": {} + }, + { + "generatedName": "account_holder_id", + "value": "account_holder_id", + "casing": {} + }, + { + "generatedName": "account_holder_name", + "value": "account_holder_name", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "FnCall": { + "value": { + "generatedName": "FnCall", + "schemas": [ + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": "&&", + "schema": { + "value": { + "generatedName": "FnCall&&&&Item", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCall&&&&", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall&&", + "title": "&&", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": "||", + "schema": { + "value": { + "generatedName": "FnCall||||Item", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCall||||", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall||", + "title": "||", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": "==", + "schema": { + "value": { + "generatedName": "FnCall====Item", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCall====", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall==", + "title": "==", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": "+", + "schema": { + "value": { + "generatedName": "FnCall++Item", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCall++", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall+", + "title": "+", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": "-", + "schema": { + "value": { + "generatedName": "FnCall--Item", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCall--", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall-", + "title": "-", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": "*", + "schema": { + "value": { + "generatedName": "FnCall**Item", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCall**", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall*", + "title": "*", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": "/", + "schema": { + "value": { + "generatedName": "FnCall//Item", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCall//", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall/", + "title": "/", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": "//", + "schema": { + "value": { + "generatedName": "FnCall////Item", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCall////", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall//", + "title": "//", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": "<", + "schema": { + "value": { + "generatedName": "FnCall<<Item", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCall<<", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall<", + "title": "<", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": "<=", + "schema": { + "value": { + "generatedName": "FnCall<=<=Item", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCall<=<=", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall<=", + "title": "<=", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": ">", + "schema": { + "value": { + "generatedName": "FnCall>>Item", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCall>>", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall>", + "title": ">", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": ">=", + "schema": { + "value": { + "generatedName": "FnCall>=>=Item", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCall>=>=", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall>=", + "title": ">=", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCall", + "key": "!", + "schema": { + "generatedName": "FnCall!!", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCall!", + "title": "!", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCallIsSubstringIsSubstring", + "key": "is_substring", + "schema": { + "value": { + "generatedName": "FnCallIsSubstringIsSubstringItem", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCallIsSubstringIsSubstring", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCallIsSubstring", + "title": "is_substring", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCallStartsWithStartsWith", + "key": "starts_with", + "schema": { + "value": { + "generatedName": "FnCallStartsWithStartsWithItem", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCallStartsWithStartsWith", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCallStartsWith", + "title": "starts_with", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCallEndsWithEndsWith", + "key": "ends_with", + "schema": { + "value": { + "generatedName": "FnCallEndsWithEndsWithItem", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "FnCallEndsWithEndsWith", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCallEndsWith", + "title": "ends_with", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCallToLowerToLower", + "key": "to_lower", + "schema": { + "generatedName": "FnCallToLowerToLower", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCallToLower", + "title": "to_lower", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCallToUpperToUpper", + "key": "to_upper", + "schema": { + "generatedName": "FnCallToUpperToUpper", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCallToUpper", + "title": "to_upper", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCallHasLabelHasLabel", + "key": "has_label", + "schema": { + "generatedName": "FnCallHasLabelHasLabel", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCallHasLabel", + "title": "has_label", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCallHasMccHasMcc", + "key": "has_mcc", + "schema": { + "generatedName": "FnCallHasMccHasMcc", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCallHasMcc", + "title": "has_mcc", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "fnCallGetGet", + "key": "get", + "schema": { + "generatedName": "FnCallGetGet", + "schema": "TxProp", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "FnCallGet", + "title": "get property", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "undisciminated" + }, + "type": "oneOf" + }, + "Action": { + "value": { + "generatedName": "Action", + "title": "action", + "nameOverride": "action", + "schemas": [ + { + "generatedName": "ActionZero", + "schema": "If", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + { + "generatedName": "ActionOne", + "schema": "ModifyLabels", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + { + "generatedName": "ActionTwo", + "schema": "Setter", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "undisciminated" + }, + "type": "oneOf" + }, + "If": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "ifIf", + "key": "if", + "schema": { + "generatedName": "IfIf", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "ifThen", + "key": "then", + "schema": { + "generatedName": "ifThen", + "nameOverride": "if", + "title": "if", + "value": { + "value": { + "generatedName": "IfThenItem", + "schema": "Action", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "IfThen", + "groupName": [], + "type": "array" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + }, + { + "conflict": {}, + "generatedName": "ifElse", + "key": "else", + "schema": { + "generatedName": "ifElse", + "nameOverride": "if", + "title": "if", + "value": { + "value": { + "generatedName": "IfElseItem", + "schema": "Action", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "IfElse", + "groupName": [], + "type": "array" + }, + "groupName": [], + "type": "optional" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "If", + "nameOverride": "if", + "title": "if", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "ModifyLabels": { + "value": { + "generatedName": "ModifyLabels", + "title": "modify labels", + "schemas": [ + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "modifyLabelsAddLabelAddLabel", + "key": "add_label", + "schema": { + "generatedName": "ModifyLabelsAddLabelAddLabel", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "ModifyLabelsAddLabel", + "title": "add_label", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "modifyLabelsRemoveLabelRemoveLabel", + "key": "remove_label", + "schema": { + "generatedName": "ModifyLabelsRemoveLabelRemoveLabel", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "ModifyLabelsRemoveLabel", + "title": "remove_label", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "modifyLabelsSetLabelsSetLabels", + "key": "set_labels", + "schema": { + "value": { + "generatedName": "ModifyLabelsSetLabelsSetLabelsItem", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "ModifyLabelsSetLabelsSetLabels", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "ModifyLabelsSetLabels", + "title": "set_labels", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "modifyLabelsAddMccAddMcc", + "key": "add_mcc", + "schema": { + "generatedName": "ModifyLabelsAddMccAddMcc", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "ModifyLabelsAddMcc", + "title": "add_mcc", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "modifyLabelsRemoveMccRemoveMcc", + "key": "remove_mcc", + "schema": { + "generatedName": "ModifyLabelsRemoveMccRemoveMcc", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "ModifyLabelsRemoveMcc", + "title": "remove_mcc", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "modifyLabelsSetMccSetMcc", + "key": "set_mcc", + "schema": { + "value": { + "generatedName": "ModifyLabelsSetMccSetMccItem", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "ModifyLabelsSetMccSetMcc", + "groupName": [], + "type": "array" + }, + "audiences": [] + } + ], + "allOfPropertyConflicts": [], + "generatedName": "ModifyLabelsSetMcc", + "title": "set_mcc", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "undisciminated" + }, + "type": "oneOf" + }, + "EditableTxProp": { + "generatedName": "EditableTxProp", + "title": "editable properties", + "values": [ + { + "generatedName": "logo", + "value": "logo", + "casing": {} + }, + { + "generatedName": "website", + "value": "website", + "casing": {} + }, + { + "generatedName": "merchant", + "value": "merchant", + "casing": {} + }, + { + "generatedName": "merchant_id", + "value": "merchant_id", + "casing": {} + }, + { + "generatedName": "location", + "value": "location", + "casing": {} + }, + { + "generatedName": "person", + "value": "person", + "casing": {} + }, + { + "generatedName": "transaction_type", + "value": "transaction_type", + "casing": {} + } + ], + "groupName": [], + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "enum" + }, + "Setter": { + "allOf": [], + "properties": [ + { + "conflict": {}, + "generatedName": "setterSet", + "key": "set", + "schema": { + "generatedName": "SetterSet", + "schema": "EditableTxProp", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + }, + { + "conflict": {}, + "generatedName": "setterTo", + "key": "to", + "schema": { + "generatedName": "SetterTo", + "schema": "Expr", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "audiences": [], + "readonly": false + } + ], + "allOfPropertyConflicts": [], + "generatedName": "Setter", + "nameOverride": "set", + "title": "set", + "groupName": [], + "additionalProperties": false, + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "object" + }, + "personalization": { + "value": { + "generatedName": "PersonalizationItem", + "schema": "Action", + "source": { + "file": "../openapi.yml", + "type": "openapi" + }, + "type": "reference" + }, + "generatedName": "Personalization", + "nameOverride": "Filter", + "title": "Filter", + "groupName": [], + "type": "array" + } + }, + "namespacedSchemas": {} + }, + "variables": {}, + "nonRequestReferencedSchemas": {}, + "securitySchemes": { + "APIKeyHeader": { + "headerName": "X-Api-Key", + "type": "header" + } + }, + "globalHeaders": [], + "idempotencyHeaders": [], + "groups": {} +} \ No newline at end of file diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/ntropy.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/ntropy.json new file mode 100644 index 00000000000..0d731e2be4b --- /dev/null +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/ntropy.json @@ -0,0 +1,10019 @@ +{ + "absoluteFilePath": "/DUMMY_PATH", + "importedDefinitions": {}, + "namedDefinitionFiles": { + "__package__.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "errors": { + "BadRequestError": { + "docs": "Account holder with the provided id already exists.", + "status-code": 400, + "type": "unknown", + }, + "ContentTooLargeError": { + "docs": "Ruleset was larger than 50KiB", + "status-code": 413, + "type": "unknown", + }, + "LockedError": { + "docs": "Not enough credits.", + "status-code": 423, + "type": "unknown", + }, + "NotFoundError": { + "docs": "Transaction with the provided id not found.", + "status-code": 404, + "type": "unknown", + }, + "UnprocessableEntityError": { + "docs": "Validation Error", + "examples": [ + { + "docs": undefined, + "name": undefined, + "value": {}, + }, + ], + "status-code": 422, + "type": "HTTPValidationError", + }, + }, + "types": { + "Account": { + "docs": undefined, + "properties": { + "closing_balance": { + "type": "optional<double>", + }, + "iso_currency_code": { + "type": "optional<string>", + }, + "number": { + "type": "optional<string>", + }, + "opening_balance": { + "type": "optional<double>", + }, + "type": { + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "AccountHolder": { + "docs": undefined, + "properties": { + "address": { + "type": "optional<Address>", + }, + "name": { + "type": "optional<string>", + }, + "type": { + "type": "optional<AccountType>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "AccountHolderExternal": { + "docs": undefined, + "properties": { + "created_at": { + "docs": "The timestamp of when the account holder was created.", + "type": "datetime", + }, + "id": { + "docs": "The unique ID of the account holder of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "name": { + "docs": "The name of the account holder", + "type": "optional<string>", + }, + "type": { + "docs": "The type of the account holder. ", + "type": "AccountHolderType", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "AccountHolderType": { + "docs": "An enumeration.", + "enum": [ + "consumer", + "business", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "AccountType": { + "docs": "An enumeration.", + "enum": [ + "consumer", + "business", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "AccountingCategory": { + "docs": "An enumeration.", + "enum": [ + { + "name": "OperationalExpenses", + "value": "operational expenses", + }, + { + "name": "CostOfGoodsSold", + "value": "cost of goods sold", + }, + "revenue", + "financing", + "taxes", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "ActionModel": { + "type": "action", + }, + "Address": { + "docs": undefined, + "properties": { + "city": { + "type": "optional<string>", + }, + "country": { + "type": "optional<string>", + }, + "postcode": { + "type": "optional<string>", + }, + "state": { + "type": "optional<string>", + }, + "street": { + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatement": { + "docs": "Represents a bank statement with details about the file and its status.", + "properties": { + "created_at": { + "docs": "The date and time when the job was created.", + "type": "datetime", + }, + "error": { + "type": "optional<BankStatementError>", + }, + "file": { + "docs": "Information about the bank statement file being processed.", + "type": "BankStatementFile", + }, + "id": { + "docs": "A unique identifier for the bank statement job.", + "type": "string", + }, + "name": { + "docs": "The name of the bank statement file, if available.", + "type": "optional<string>", + }, + "status": { + "docs": "The current status of the document.", + "type": "BankStatementStatus", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementAccount": { + "docs": undefined, + "properties": { + "closing_balance": { + "docs": "The closing balance of the account for the statement period.", + "type": "optional<double>", + }, + "end_date": { + "docs": "The end date of the statement period.", + "type": "optional<string>", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "is_balance_reconciled": { + "docs": "Indicates whether the balance has been reconciled.", + "type": "optional<boolean>", + }, + "number": { + "docs": "The account number, if available.", + "type": "optional<string>", + }, + "opening_balance": { + "docs": "The opening balance of the account for the statement period.", + "type": "optional<double>", + }, + "start_date": { + "docs": "The start date of the statement period.", + "type": "optional<string>", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "total_incoming": { + "docs": "The sum of amounts of all incoming transactions.", + "type": "optional<double>", + }, + "total_outgoing": { + "docs": "The sum of amounts of all outgoing transactions.", + "type": "optional<double>", + }, + "transactions": { + "docs": "List of transactions for this account.", + "type": "list<BankStatementTransaction>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementError": { + "docs": undefined, + "properties": { + "code": { + "type": "BankStatementErrorCode", + }, + "message": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementErrorCode": { + "docs": "An enumeration.", + "enum": [ + "invalid_bank_statement", + "internal_error", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementFile": { + "docs": undefined, + "properties": { + "no_pages": { + "docs": "The number of pages in the bank statement file.", + "type": "integer", + }, + "size": { + "docs": "The size of the bank statement file in bytes, if available.", + "type": "optional<integer>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementResults": { + "docs": undefined, + "properties": { + "accounts": { + "docs": "List of accounts in the bank statement.", + "type": "list<BankStatementAccount>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementStatus": { + "docs": "An enumeration.", + "enum": [ + "processing", + "completed", + "error", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "BankStatementTransaction": { + "docs": undefined, + "properties": { + "amount": { + "docs": "The amount of the transaction in the `currency`. Must be a positive value. For example, if the `currency` is USD, then it's the amount in dollars.", + "type": "double", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": 0, + "multipleOf": undefined, + }, + }, + "currency": { + "docs": "The currency of the transaction in ISO 4217 format", + "type": "Currency", + }, + "date": { + "docs": "The date that the transaction was posted. Uses ISO 8601 format (YYYY-MM-DD)", + "type": "string", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "description": { + "docs": "The description string of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": 1024, + "minLength": 0, + "pattern": undefined, + }, + }, + "entry_type": { + "docs": "The direction of the flow of the money from the perspective of the account holder. `outgoing` to represent money leaving the account, such as purchases or fees, while `incoming` represents money entering the account, such as income or refunds.", + "type": "EntryType", + }, + "id": { + "docs": "A unique identifier of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "running_balance": { + "docs": "The account's balance when this transaction was performed", + "type": "optional<double>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Batch": { + "docs": "The `Batch` object represents the status and progress of an asynchronous batch enrichment job.", + "properties": { + "created_at": { + "docs": "The timestamp of when the batch was created.", + "type": "datetime", + }, + "id": { + "docs": "A unique identifier for the batch.", + "type": "string", + }, + "progress": { + "docs": "The number of transactions processed so far.", + "type": "integer", + }, + "status": { + "docs": "The current status of the batch. A batch will error if at least one of the transactions contains an error.", + "type": "BatchStatus", + }, + "total": { + "docs": "The total number of transactions in the batch.", + "type": "integer", + }, + "updated_at": { + "docs": "The timestamp of when the batch was last updated.", + "type": "datetime", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BatchResult": { + "docs": "The `BatchResult` object represents the result of a batch enrichment job, including its status and +enriched transactions.", + "properties": { + "id": { + "docs": "A unique identifier for the batch.", + "type": "string", + }, + "results": { + "type": "EnrichmentResult", + }, + "status": { + "docs": "The current status of the batch job.", + "type": "BatchStatus", + }, + "total": { + "docs": "The total number of transactions in the batch result.", + "type": "integer", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "BatchStatus": { + "docs": "An enumeration.", + "enum": [ + "processing", + "completed", + "error", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "Categories": { + "docs": undefined, + "properties": { + "accounting": { + "docs": "The corresponding accounting category. Only available for `business` transactions.", + "type": "optional<AccountingCategory>", + }, + "general": { + "docs": "The category of the transaction. View the valid set of categories for your key [here](./docs/v3/enrichment/entities).", + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "CategoryConfidence": { + "docs": "An enumeration.", + "enum": [ + "high", + "medium", + "low", + "unknown", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "CategorySet": { + "docs": undefined, + "properties": { + "incoming": { + "type": "list<string>", + }, + "outgoing": { + "type": "list<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Counterparty": { + "docs": undefined, + "properties": { + "id": { + "docs": "The unique UUID identifier of the entity", + "type": "optional<string>", + }, + "logo": { + "docs": "Logo's URL", + "type": "optional<string>", + }, + "mccs": { + "docs": "A list of [Merchant Category Codes](https://en.wikipedia.org/wiki/Merchant_category_code)", + "type": "optional<list<integer>>", + }, + "name": { + "docs": "The name of the entity", + "type": "optional<string>", + }, + "type": { + "type": "CounterpartyType", + }, + "website": { + "docs": "The website URL of the entity", + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "CounterpartyType": { + "docs": "An enumeration.", + "enum": [ + "person", + "organization", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "Country": { + "docs": "An enumeration.", + "enum": [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AR", + "AS", + "AT", + "AU", + "AW", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "Currency": { + "docs": "An enumeration.", + "enum": [ + "EUR", + "AED", + "AFN", + "XCD", + "ALL", + "AMD", + "AOA", + "ARS", + "USD", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "XOF", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "INR", + "NOK", + "BWP", + "BYR", + "BZD", + "CAD", + "CDF", + "XAF", + "CHF", + "NZD", + "CLP", + "CNY", + "COP", + "CRC", + "CUP", + "CVE", + "ANG", + "CZK", + "DJF", + "DKK", + "DOP", + "DZD", + "EGP", + "MAD", + "ERN", + "ETB", + "FJD", + "FKP", + "GBP", + "GEL", + "GHS", + "GIP", + "GMD", + "GNF", + "GTQ", + "GYD", + "HKD", + "HNL", + "HUF", + "IDR", + "ILS", + "IQD", + "IRR", + "ISK", + "JMD", + "JOD", + "JPY", + "KES", + "KGS", + "KHR", + "KMF", + "KPW", + "KRW", + "KWD", + "KYD", + "KZT", + "LAK", + "LBP", + "LKR", + "LRD", + "ZAR", + "LYD", + "MDL", + "MGA", + "MKD", + "MMK", + "MNT", + "MOP", + "MRO", + "MUR", + "MVR", + "MWK", + "MXN", + "MYR", + "MZN", + "XPF", + "NGN", + "NIO", + "NPR", + "OMR", + "PEN", + "PGK", + "PHP", + "PKR", + "PLN", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SRD", + "SSP", + "STD", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TWD", + "TZS", + "UAH", + "UGX", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "YER", + "ZMW", + "ZWL", + "HRK", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "CustomCategorySet": { + "docs": undefined, + "properties": { + "incoming": { + "type": "list<string>", + }, + "outgoing": { + "type": "list<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "DocumentStatus": { + "docs": "An enumeration.", + "enum": [ + "queued", + "processing", + "processed", + "failed", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "EditableTxProp": { + "enum": [ + "logo", + "website", + "merchant", + "merchant_id", + "location", + "person", + "transaction_type", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "EnrichedTransaction": { + "docs": undefined, + "properties": { + "categories": { + "type": "optional<Categories>", + }, + "created_at": { + "docs": "The timestamp of when the account holder was created.", + "type": "datetime", + }, + "entities": { + "type": "optional<Entities>", + }, + "error": { + "type": "optional<TransactionError>", + }, + "id": { + "docs": "A unique identifier for the transaction. If two transactions are submitted with the same `id` the most recent one will replace the previous one.", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "location": { + "type": "optional<Location>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "EnrichmentResult": { + "docs": undefined, + "properties": { + "transactions": { + "docs": "A list of enriched transactions resulting from the enrichment of this batch.", + "type": "list<EnrichedTransaction>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Entities": { + "docs": "Entities found by identity identification", + "properties": { + "counterparty": { + "type": "optional<Counterparty>", + }, + "intermediaries": { + "type": "optional<list<Intermediary>>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Entity": { + "docs": undefined, + "properties": { + "id": { + "docs": "The unique UUID identifier of the entity", + "type": "optional<string>", + }, + "logo": { + "docs": "Logo's URL", + "type": "optional<string>", + }, + "mccs": { + "docs": "A list of [Merchant Category Codes](https://en.wikipedia.org/wiki/Merchant_category_code)", + "type": "optional<list<integer>>", + }, + "name": { + "docs": "The name of the entity", + "type": "optional<string>", + }, + "website": { + "docs": "The website URL of the entity", + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "EntryType": { + "docs": "An enumeration.", + "enum": [ + "incoming", + "outgoing", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "Filter": { + "type": "list<action>", + }, + "FilterModel": { + "type": "Filter", + }, + "FnCall": { + "discriminated": false, + "docs": undefined, + "encoding": undefined, + "source": { + "openapi": "../openapi.yml", + }, + "union": [ + { + "type": "FnCall&&", + }, + { + "type": "FnCall||", + }, + { + "type": "FnCall==", + }, + { + "type": "FnCall+", + }, + { + "type": "FnCall-", + }, + { + "type": "FnCall*", + }, + { + "type": "FnCall/", + }, + { + "type": "FnCall//", + }, + { + "type": "FnCall<", + }, + { + "type": "FnCall<=", + }, + { + "type": "FnCall>", + }, + { + "type": "FnCall>=", + }, + { + "type": "FnCall!", + }, + { + "type": "FnCallIsSubstring", + }, + { + "type": "FnCallStartsWith", + }, + { + "type": "FnCallEndsWith", + }, + { + "type": "FnCallToLower", + }, + { + "type": "FnCallToUpper", + }, + { + "type": "FnCallHasLabel", + }, + { + "type": "FnCallHasMcc", + }, + { + "type": "FnCallGet", + }, + ], + }, + "FnCall!": { + "docs": undefined, + "properties": { + "!": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall&&": { + "docs": undefined, + "properties": { + "&&": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall*": { + "docs": undefined, + "properties": { + "*": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall+": { + "docs": undefined, + "properties": { + "+": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall-": { + "docs": undefined, + "properties": { + "-": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall/": { + "docs": undefined, + "properties": { + "/": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall//": { + "docs": undefined, + "properties": { + "//": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall<": { + "docs": undefined, + "properties": { + "<": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall<=": { + "docs": undefined, + "properties": { + "<=": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall==": { + "docs": undefined, + "properties": { + "==": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall>": { + "docs": undefined, + "properties": { + ">": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall>=": { + "docs": undefined, + "properties": { + ">=": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallEndsWith": { + "docs": undefined, + "properties": { + "ends_with": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallGet": { + "docs": undefined, + "properties": { + "get": { + "type": "properties", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallHasLabel": { + "docs": undefined, + "properties": { + "has_label": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallHasMcc": { + "docs": undefined, + "properties": { + "has_mcc": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallIsSubstring": { + "docs": undefined, + "properties": { + "is_substring": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallStartsWith": { + "docs": undefined, + "properties": { + "starts_with": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallToLower": { + "docs": undefined, + "properties": { + "to_lower": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCallToUpper": { + "docs": undefined, + "properties": { + "to_upper": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "FnCall||": { + "docs": undefined, + "properties": { + "||": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "HTTPValidationError": { + "docs": undefined, + "properties": { + "detail": { + "type": "optional<list<ValidationError>>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Intermediary": { + "docs": undefined, + "properties": { + "id": { + "docs": "The unique UUID identifier of the entity", + "type": "optional<string>", + }, + "logo": { + "docs": "Logo's URL", + "type": "optional<string>", + }, + "mccs": { + "docs": "A list of [Merchant Category Codes](https://en.wikipedia.org/wiki/Merchant_category_code)", + "type": "optional<list<integer>>", + }, + "name": { + "docs": "The name of the entity", + "type": "optional<string>", + }, + "type": { + "type": "IntermediaryType", + }, + "website": { + "docs": "The website URL of the entity", + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "IntermediaryType": { + "docs": "An enumeration.", + "enum": [ + "delivery_service", + "payment_processor", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "Location": { + "docs": undefined, + "properties": { + "raw_address": { + "docs": "An unstructured string containing the address", + "type": "optional<string>", + }, + "structured": { + "docs": "When raw is set, a structured representation of it.", + "type": "optional<LocationStructured>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "LocationInput": { + "docs": "Location of where the transaction has taken place. This can greatly improve entity identification, especially +under ambiguity.", + "properties": { + "country": { + "docs": "The country where the transaction was made in ISO 3166-2 format", + "type": "Country", + }, + "raw_address": { + "docs": "An unstructured string containing the address", + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "LocationStructured": { + "docs": undefined, + "properties": { + "apple_maps_url": { + "docs": "A URL link to view the location on Apple Maps", + "type": "optional<string>", + }, + "city": { + "docs": "The city where the location is situated", + "type": "optional<string>", + }, + "country": { + "docs": "The full name of the country", + "type": "optional<string>", + }, + "country_code": { + "docs": "The country code of the location in ISO 3166-2 format", + "type": "optional<string>", + }, + "google_maps_url": { + "docs": "A URL link to view the location on Google Maps", + "type": "optional<string>", + }, + "latitude": { + "docs": "The latitude coordinate of the location", + "type": "optional<double>", + }, + "longitude": { + "docs": "The longitude coordinate of the location", + "type": "optional<double>", + }, + "postcode": { + "docs": "The postal code or ZIP code of the location", + "type": "optional<string>", + }, + "state": { + "docs": "The state or region of the location", + "type": "optional<string>", + }, + "store_number": { + "docs": "A unique identifier for a specific store or branch, if applicable", + "type": "optional<string>", + }, + "street": { + "docs": "The street name and number of the location", + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ModifyLabels": { + "discriminated": false, + "docs": undefined, + "encoding": undefined, + "source": { + "openapi": "../openapi.yml", + }, + "union": [ + { + "type": "ModifyLabelsAddLabel", + }, + { + "type": "ModifyLabelsRemoveLabel", + }, + { + "type": "ModifyLabelsSetLabels", + }, + { + "type": "ModifyLabelsAddMcc", + }, + { + "type": "ModifyLabelsRemoveMcc", + }, + { + "type": "ModifyLabelsSetMcc", + }, + ], + }, + "ModifyLabelsAddLabel": { + "docs": undefined, + "properties": { + "add_label": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ModifyLabelsAddMcc": { + "docs": undefined, + "properties": { + "add_mcc": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ModifyLabelsRemoveLabel": { + "docs": undefined, + "properties": { + "remove_label": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ModifyLabelsRemoveMcc": { + "docs": undefined, + "properties": { + "remove_mcc": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ModifyLabelsSetLabels": { + "docs": undefined, + "properties": { + "set_labels": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ModifyLabelsSetMcc": { + "docs": undefined, + "properties": { + "set_mcc": "list<expression>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "PagedResponseAccountHolderExternal": { + "docs": undefined, + "properties": { + "data": { + "type": "list<AccountHolderExternal>", + }, + "next_cursor": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "PagedResponseBankStatement": { + "docs": undefined, + "properties": { + "data": { + "type": "list<BankStatement>", + }, + "next_cursor": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "PagedResponseBatch": { + "docs": undefined, + "properties": { + "data": { + "type": "list<Batch>", + }, + "next_cursor": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "PagedResponseReport": { + "docs": undefined, + "properties": { + "data": { + "type": "list<Report>", + }, + "next_cursor": { + "type": "optional<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "PagedResponseTransaction": { + "docs": undefined, + "properties": { + "data": { + "type": "list<Transaction>", + }, + "next_cursor": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "PagedResponseWebhook": { + "docs": undefined, + "properties": { + "data": { + "type": "list<Webhook>", + }, + "next_cursor": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Recurrence": { + "docs": "The `Recurrence` object represents the recurrence pattern of a transaction. It provides information about +whether a transaction is a one-time event or a part of a recurring series.", + "properties": { + "type": { + "docs": "Whether the transaction is a one-time transfer `one-off`, regularly with varying pricing `recurring` or with fixed pricing `subscription`", + "type": "RecurrenceType", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "RecurrenceGroup": { + "docs": undefined, + "properties": { + "average_amount": { + "docs": "The average amount per transaction in this group", + "type": "double", + }, + "categories": { + "docs": "Categories of the transactions in the recurrence group", + "type": "Categories", + }, + "counterparty": { + "docs": "Counterparty of the transactions", + "type": "Counterparty", + }, + "end_date": { + "docs": "The date of the most recent transaction in the group", + "type": "string", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "id": { + "docs": "A unique UUID identifier for the group", + "type": "string", + }, + "periodicity": { + "docs": "A human-readable description of the transaction frequency", + "type": "RecurrencePeriodicity", + }, + "periodicity_in_days": { + "docs": "The estimated number of days between transactions in this group", + "type": "double", + }, + "start_date": { + "docs": "The date of the oldest transaction in the group", + "type": "string", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "total_amount": { + "docs": "The sum of all transaction amounts in this group", + "type": "double", + }, + "transaction_ids": { + "docs": "Transactions in this recurrence group", + "type": "list<string>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "RecurrencePeriodicity": { + "docs": "An enumeration.", + "enum": [ + "daily", + "weekly", + "bi_weekly", + "monthly", + "bi_monthly", + "quarterly", + "semi_yearly", + "yearly", + "other", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "RecurrenceType": { + "docs": "An enumeration.", + "enum": [ + "recurring", + "subscription", + { + "name": "OneOff", + "value": "one off", + }, + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "Report": { + "docs": undefined, + "properties": { + "created_at": { + "docs": "The date and time when the report was created.", + "type": "datetime", + }, + "description": { + "docs": "A description of what is wrong in the transaction", + "type": "string", + }, + "fields": { + "docs": "A list of the fields that are incorrect", + "type": "list<string>", + }, + "id": { + "docs": "A generated unique identifier for the report.", + "type": "string", + }, + "rejection_reason": { + "docs": "An explanation of why the report was rejected", + "type": "optional<string>", + }, + "status": { + "docs": "The status of the report. + +* `open`: a newly created report +* `pending`: the report is being investigated +* `rejected`: the original enrichment output was deemed correct or we couldn't resolve it, check `rejection_reason` +* `resolved`: the issue has been resolved", + "type": "ReportStatus", + }, + "transaction_id": { + "docs": "The unique identifier of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ReportStatus": { + "docs": "An enumeration.", + "enum": [ + "open", + "pending", + "resolved", + "rejected", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "StatementInfo": { + "docs": undefined, + "properties": { + "account_holder": { + "type": "optional<AccountHolder>", + }, + "accounts": { + "type": "optional<list<Account>>", + }, + "end_date": { + "type": "optional<string>", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "institution": { + "type": "optional<string>", + }, + "start_date": { + "type": "optional<string>", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "SyncEnrichmentOutput": { + "docs": undefined, + "properties": { + "transactions": { + "docs": "A list of enriched transactions resulting from the enrichment of this batch.", + "type": "list<EnrichedTransaction>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "Transaction": { + "docs": undefined, + "properties": { + "account_holder_id": { + "docs": "The unique ID of the account holder of the transaction", + "type": "optional<string>", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "amount": { + "docs": "The amount of the transaction in the `currency`. Must be a positive value. For example, if the `currency` is USD, then it's the amount in dollars.", + "type": "double", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": 0, + "multipleOf": undefined, + }, + }, + "categories": { + "type": "optional<Categories>", + }, + "created_at": { + "docs": "The timestamp of when the account holder was created.", + "type": "datetime", + }, + "currency": { + "docs": "The currency of the transaction in ISO 4217 format", + "type": "Currency", + }, + "date": { + "docs": "The date that the transaction was posted. Uses ISO 8601 format (YYYY-MM-DD)", + "type": "string", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "description": { + "docs": "The description string of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": 1024, + "minLength": 0, + "pattern": undefined, + }, + }, + "entities": { + "type": "optional<Entities>", + }, + "entry_type": { + "docs": "The direction of the flow of the money from the perspective of the account holder. `outgoing` to represent money leaving the account, such as purchases or fees, while `incoming` represents money entering the account, such as income or refunds.", + "type": "EntryType", + }, + "error": { + "type": "optional<TransactionError>", + }, + "id": { + "docs": "A unique identifier of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "location": { + "type": "optional<Location>", + }, + "recurrence": { + "type": "optional<Recurrence>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "TransactionError": { + "docs": undefined, + "properties": { + "code": { + "type": "TransactionErrorCode", + }, + "message": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "TransactionErrorCode": { + "docs": "An enumeration.", + "enum": [ + "account_holder_not_found", + "internal_error", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "TransactionInput": { + "docs": undefined, + "properties": { + "account_holder_id": { + "docs": "The unique ID of the account holder. Unsetting it will disable [categorization](./docs/v3/enrichment/entities).", + "type": "string", + }, + "amount": { + "docs": "The amount of the transaction in the `currency`. Must be a positive value. For example, if the `currency` is USD, then it's the amount in dollars.", + "type": "double", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": 0, + "multipleOf": undefined, + }, + }, + "currency": { + "docs": "The currency of the transaction in ISO 4217 format", + "type": "Currency", + }, + "date": { + "docs": "The date that the transaction was posted. Uses ISO 8601 format (YYYY-MM-DD)", + "type": "string", + "validation": { + "format": "date", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + "description": { + "docs": "The description string of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": 1024, + "minLength": 0, + "pattern": undefined, + }, + }, + "entry_type": { + "docs": "The direction of the flow of the money from the perspective of the account holder. `outgoing` to represent money leaving the account, such as purchases or fees, while `incoming` represents money entering the account, such as income or refunds.", + "type": "EntryType", + }, + "id": { + "docs": "A unique identifier of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "location": { + "type": "optional<LocationInput>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ValidationError": { + "docs": undefined, + "properties": { + "loc": { + "type": "list<ValidationErrorLocItem>", + }, + "msg": "string", + "type": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "ValidationErrorLocItem": { + "discriminated": false, + "docs": undefined, + "encoding": undefined, + "source": { + "openapi": "../openapi.yml", + }, + "union": [ + "string", + "integer", + ], + }, + "Webhook": { + "docs": undefined, + "properties": { + "created_at": { + "docs": "The date and time when the webhook was created.", + "type": "datetime", + }, + "enabled": { + "docs": "Whether the webhook is enabled or not.", + "type": "boolean", + }, + "events": { + "docs": "A list of events that this webhook subscribes to", + "type": "list<WebhookEventsItem>", + }, + "id": { + "docs": "A generated unique identifier for the webhook", + "type": "string", + }, + "token": { + "docs": "A secret string used to authenticate the webhook. This value will be included in the `X-Ntropy-Token` header when sending requests to the webhook", + "type": "optional<string>", + "validation": { + "format": undefined, + "maxLength": 128, + "minLength": undefined, + "pattern": undefined, + }, + }, + "url": { + "docs": "The URL of the webhook", + "type": "string", + "validation": { + "format": "uri", + "maxLength": 1024, + "minLength": 1, + "pattern": undefined, + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "WebhookEventsItem": { + "enum": [ + { + "name": "ReportsResolved", + "value": "reports.resolved", + }, + { + "name": "ReportsRejected", + "value": "reports.rejected", + }, + { + "name": "ReportsPending", + "value": "reports.pending", + }, + { + "name": "BankStatementsCompleted", + "value": "bank_statements.completed", + }, + { + "name": "BankStatementsError", + "value": "bank_statements.error", + }, + { + "name": "BatchesCompleted", + "value": "batches.completed", + }, + { + "name": "BatchesError", + "value": "batches.error", + }, + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "action": { + "discriminated": false, + "docs": undefined, + "encoding": undefined, + "source": { + "openapi": "../openapi.yml", + }, + "union": [ + { + "type": "if", + }, + { + "type": "ModifyLabels", + }, + { + "type": "set", + }, + ], + }, + "expression": { + "discriminated": false, + "docs": undefined, + "encoding": undefined, + "source": { + "openapi": "../openapi.yml", + }, + "union": [ + "boolean", + "string", + "double", + "FnCall", + ], + }, + "if": { + "docs": undefined, + "properties": { + "else": { + "type": "optional<list<action>>", + }, + "if": { + "type": "expression", + }, + "then": { + "type": "optional<list<action>>", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "properties": { + "enum": [ + "logo", + "website", + "merchant", + "description", + "merchant_id", + "location", + "person", + "transaction_type", + "amount", + "entry_type", + "account_holder_type", + "account_holder_id", + "account_holder_name", + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "set": { + "docs": undefined, + "properties": { + "set": { + "type": "EditableTxProp", + }, + "to": { + "type": "expression", + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + }, + "rawContents": "errors: + NotFoundError: + status-code: 404 + type: unknown + docs: Transaction with the provided id not found. + UnprocessableEntityError: + status-code: 422 + type: HTTPValidationError + docs: Validation Error + examples: + - value: {} + BadRequestError: + status-code: 400 + type: unknown + docs: Account holder with the provided id already exists. + ContentTooLargeError: + status-code: 413 + type: unknown + docs: Ruleset was larger than 50KiB + LockedError: + status-code: 423 + type: unknown + docs: Not enough credits. +types: + Account: + properties: + type: + type: optional<string> + number: + type: optional<string> + opening_balance: + type: optional<double> + closing_balance: + type: optional<double> + iso_currency_code: + type: optional<string> + source: + openapi: ../openapi.yml + AccountHolder: + properties: + type: + type: optional<AccountType> + name: + type: optional<string> + address: + type: optional<Address> + source: + openapi: ../openapi.yml + AccountHolderExternal: + properties: + id: + type: string + docs: The unique ID of the account holder of the transaction + validation: + minLength: 1 + type: + type: AccountHolderType + docs: 'The type of the account holder. ' + name: + type: optional<string> + docs: The name of the account holder + created_at: + type: datetime + docs: The timestamp of when the account holder was created. + source: + openapi: ../openapi.yml + AccountHolderType: + enum: + - consumer + - business + docs: An enumeration. + source: + openapi: ../openapi.yml + AccountType: + enum: + - consumer + - business + docs: An enumeration. + source: + openapi: ../openapi.yml + AccountingCategory: + enum: + - value: operational expenses + name: OperationalExpenses + - value: cost of goods sold + name: CostOfGoodsSold + - revenue + - financing + - taxes + docs: An enumeration. + source: + openapi: ../openapi.yml + ActionModel: + type: action + Address: + properties: + street: + type: optional<string> + postcode: + type: optional<string> + city: + type: optional<string> + state: + type: optional<string> + country: + type: optional<string> + source: + openapi: ../openapi.yml + BankStatement: + docs: Represents a bank statement with details about the file and its status. + properties: + id: + type: string + docs: A unique identifier for the bank statement job. + name: + type: optional<string> + docs: The name of the bank statement file, if available. + status: + type: BankStatementStatus + docs: The current status of the document. + created_at: + type: datetime + docs: The date and time when the job was created. + file: + type: BankStatementFile + docs: Information about the bank statement file being processed. + error: + type: optional<BankStatementError> + source: + openapi: ../openapi.yml + BankStatementAccount: + properties: + number: + type: optional<string> + docs: The account number, if available. + opening_balance: + type: optional<double> + docs: The opening balance of the account for the statement period. + closing_balance: + type: optional<double> + docs: The closing balance of the account for the statement period. + start_date: + type: optional<string> + docs: The start date of the statement period. + validation: + format: date + end_date: + type: optional<string> + docs: The end date of the statement period. + validation: + format: date + is_balance_reconciled: + type: optional<boolean> + docs: Indicates whether the balance has been reconciled. + total_incoming: + type: optional<double> + docs: The sum of amounts of all incoming transactions. + total_outgoing: + type: optional<double> + docs: The sum of amounts of all outgoing transactions. + transactions: + docs: List of transactions for this account. + type: list<BankStatementTransaction> + source: + openapi: ../openapi.yml + BankStatementError: + properties: + code: + type: BankStatementErrorCode + message: string + source: + openapi: ../openapi.yml + BankStatementErrorCode: + enum: + - invalid_bank_statement + - internal_error + docs: An enumeration. + source: + openapi: ../openapi.yml + BankStatementFile: + properties: + no_pages: + type: integer + docs: The number of pages in the bank statement file. + size: + type: optional<integer> + docs: The size of the bank statement file in bytes, if available. + source: + openapi: ../openapi.yml + BankStatementResults: + properties: + accounts: + docs: List of accounts in the bank statement. + type: list<BankStatementAccount> + source: + openapi: ../openapi.yml + BankStatementStatus: + enum: + - processing + - completed + - error + docs: An enumeration. + source: + openapi: ../openapi.yml + BankStatementTransaction: + properties: + id: + type: string + docs: A unique identifier of the transaction + validation: + minLength: 1 + description: + type: string + docs: The description string of the transaction + validation: + minLength: 0 + maxLength: 1024 + date: + type: string + docs: >- + The date that the transaction was posted. Uses ISO 8601 format + (YYYY-MM-DD) + validation: + format: date + amount: + type: double + docs: >- + The amount of the transaction in the `currency`. Must be a positive + value. For example, if the `currency` is USD, then it's the amount in + dollars. + validation: + min: 0 + entry_type: + type: EntryType + docs: >- + The direction of the flow of the money from the perspective of the + account holder. `outgoing` to represent money leaving the account, + such as purchases or fees, while `incoming` represents money entering + the account, such as income or refunds. + currency: + type: Currency + docs: The currency of the transaction in ISO 4217 format + running_balance: + type: optional<double> + docs: The account's balance when this transaction was performed + source: + openapi: ../openapi.yml + Batch: + docs: >- + The `Batch` object represents the status and progress of an asynchronous + batch enrichment job. + properties: + id: + type: string + docs: A unique identifier for the batch. + status: + type: BatchStatus + docs: >- + The current status of the batch. A batch will error if at least one of + the transactions contains an error. + created_at: + type: datetime + docs: The timestamp of when the batch was created. + updated_at: + type: datetime + docs: The timestamp of when the batch was last updated. + progress: + type: integer + docs: The number of transactions processed so far. + total: + type: integer + docs: The total number of transactions in the batch. + source: + openapi: ../openapi.yml + BatchResult: + docs: >- + The `BatchResult` object represents the result of a batch enrichment job, + including its status and + + enriched transactions. + properties: + id: + type: string + docs: A unique identifier for the batch. + total: + type: integer + docs: The total number of transactions in the batch result. + status: + type: BatchStatus + docs: The current status of the batch job. + results: + type: EnrichmentResult + source: + openapi: ../openapi.yml + BatchStatus: + enum: + - processing + - completed + - error + docs: An enumeration. + source: + openapi: ../openapi.yml + Categories: + properties: + general: + type: optional<string> + docs: >- + The category of the transaction. View the valid set of categories for + your key [here](./docs/v3/enrichment/entities). + accounting: + type: optional<AccountingCategory> + docs: >- + The corresponding accounting category. Only available for `business` + transactions. + source: + openapi: ../openapi.yml + CategoryConfidence: + enum: + - high + - medium + - low + - unknown + docs: An enumeration. + source: + openapi: ../openapi.yml + CategorySet: + properties: + incoming: + type: list<string> + outgoing: + type: list<string> + source: + openapi: ../openapi.yml + Counterparty: + properties: + id: + type: optional<string> + docs: The unique UUID identifier of the entity + name: + type: optional<string> + docs: The name of the entity + website: + type: optional<string> + docs: The website URL of the entity + logo: + type: optional<string> + docs: Logo's URL + mccs: + type: optional<list<integer>> + docs: >- + A list of [Merchant Category + Codes](https://en.wikipedia.org/wiki/Merchant_category_code) + type: + type: CounterpartyType + source: + openapi: ../openapi.yml + CounterpartyType: + enum: + - person + - organization + docs: An enumeration. + source: + openapi: ../openapi.yml + Country: + enum: + - AD + - AE + - AF + - AG + - AI + - AL + - AM + - AO + - AR + - AS + - AT + - AU + - AW + - AZ + - BA + - BB + - BD + - BE + - BF + - BG + - BH + - BI + - BJ + - BL + - BM + - BN + - BO + - BQ + - BR + - BS + - BT + - BV + - BW + - BY + - BZ + - CA + - CC + - CD + - CF + - CG + - CH + - CI + - CK + - CL + - CM + - CN + - CO + - CR + - CU + - CV + - CW + - CX + - CY + - CZ + - DE + - DJ + - DK + - DM + - DO + - DZ + - EC + - EE + - EG + - EH + - ER + - ES + - ET + - FI + - FJ + - FK + - FM + - FR + - GA + - GB + - GD + - GE + - GF + - GG + - GH + - GI + - GL + - GM + - GN + - GP + - GQ + - GR + - GS + - GT + - GU + - GW + - GY + - HK + - HM + - HN + - HR + - HT + - HU + - ID + - IE + - IL + - IM + - IN + - IO + - IQ + - IR + - IS + - IT + - JE + - JM + - JO + - JP + - KE + - KG + - KH + - KI + - KM + - KN + - KP + - KR + - KW + - KY + - KZ + - LA + - LB + - LC + - LI + - LK + - LR + - LS + - LT + - LU + - LV + - LY + - MA + - MC + - MD + - ME + - MF + - MG + - MH + - MK + - ML + - MM + - MN + - MO + - MP + - MQ + - MR + - MS + - MT + - MU + - MV + - MW + - MX + - MY + - MZ + - NA + - NC + - NE + - NF + - NG + - NI + - NL + - 'NO' + - NP + - NR + - NU + - NZ + - OM + - PA + - PE + - PF + - PG + - PH + - PK + - PL + - PM + - PN + - PR + - PS + - PT + - PW + - PY + - QA + - RE + - RO + - RS + - RU + - RW + - SA + - SB + - SC + - SD + - SE + - SG + - SH + - SI + - SJ + - SK + - SL + - SM + - SN + - SO + - SR + - SS + - ST + - SV + - SX + - SY + - SZ + - TC + - TD + - TG + - TH + - TJ + - TK + - TL + - TM + - TN + - TO + - TR + - TT + - TV + - TW + - TZ + - UA + - UG + - UM + - US + - UY + - UZ + - VC + - VE + - VG + - VI + - VN + - VU + - WF + - WS + - YE + - YT + - ZA + - ZM + - ZW + docs: An enumeration. + source: + openapi: ../openapi.yml + Currency: + enum: + - EUR + - AED + - AFN + - XCD + - ALL + - AMD + - AOA + - ARS + - USD + - AUD + - AWG + - AZN + - BAM + - BBD + - BDT + - XOF + - BGN + - BHD + - BIF + - BMD + - BND + - BOB + - BRL + - BSD + - INR + - NOK + - BWP + - BYR + - BZD + - CAD + - CDF + - XAF + - CHF + - NZD + - CLP + - CNY + - COP + - CRC + - CUP + - CVE + - ANG + - CZK + - DJF + - DKK + - DOP + - DZD + - EGP + - MAD + - ERN + - ETB + - FJD + - FKP + - GBP + - GEL + - GHS + - GIP + - GMD + - GNF + - GTQ + - GYD + - HKD + - HNL + - HUF + - IDR + - ILS + - IQD + - IRR + - ISK + - JMD + - JOD + - JPY + - KES + - KGS + - KHR + - KMF + - KPW + - KRW + - KWD + - KYD + - KZT + - LAK + - LBP + - LKR + - LRD + - ZAR + - LYD + - MDL + - MGA + - MKD + - MMK + - MNT + - MOP + - MRO + - MUR + - MVR + - MWK + - MXN + - MYR + - MZN + - XPF + - NGN + - NIO + - NPR + - OMR + - PEN + - PGK + - PHP + - PKR + - PLN + - PYG + - QAR + - RON + - RSD + - RUB + - RWF + - SAR + - SBD + - SCR + - SDG + - SEK + - SGD + - SHP + - SLL + - SOS + - SRD + - SSP + - STD + - SYP + - SZL + - THB + - TJS + - TMT + - TND + - TOP + - TRY + - TTD + - TWD + - TZS + - UAH + - UGX + - UYU + - UZS + - VEF + - VND + - VUV + - WST + - YER + - ZMW + - ZWL + - HRK + docs: An enumeration. + source: + openapi: ../openapi.yml + CustomCategorySet: + properties: + incoming: + type: list<string> + outgoing: + type: list<string> + source: + openapi: ../openapi.yml + DocumentStatus: + enum: + - queued + - processing + - processed + - failed + docs: An enumeration. + source: + openapi: ../openapi.yml + EnrichedTransaction: + properties: + entities: + type: optional<Entities> + categories: + type: optional<Categories> + location: + type: optional<Location> + error: + type: optional<TransactionError> + created_at: + type: datetime + docs: The timestamp of when the account holder was created. + id: + type: string + docs: >- + A unique identifier for the transaction. If two transactions are + submitted with the same `id` the most recent one will replace the + previous one. + validation: + minLength: 1 + source: + openapi: ../openapi.yml + EnrichmentResult: + properties: + transactions: + docs: >- + A list of enriched transactions resulting from the enrichment of this + batch. + type: list<EnrichedTransaction> + source: + openapi: ../openapi.yml + Entities: + docs: Entities found by identity identification + properties: + counterparty: + type: optional<Counterparty> + intermediaries: + type: optional<list<Intermediary>> + source: + openapi: ../openapi.yml + Entity: + properties: + id: + type: optional<string> + docs: The unique UUID identifier of the entity + name: + type: optional<string> + docs: The name of the entity + website: + type: optional<string> + docs: The website URL of the entity + logo: + type: optional<string> + docs: Logo's URL + mccs: + type: optional<list<integer>> + docs: >- + A list of [Merchant Category + Codes](https://en.wikipedia.org/wiki/Merchant_category_code) + source: + openapi: ../openapi.yml + EntryType: + enum: + - incoming + - outgoing + docs: An enumeration. + source: + openapi: ../openapi.yml + FilterModel: + type: Filter + HTTPValidationError: + properties: + detail: + type: optional<list<ValidationError>> + source: + openapi: ../openapi.yml + Intermediary: + properties: + id: + type: optional<string> + docs: The unique UUID identifier of the entity + name: + type: optional<string> + docs: The name of the entity + website: + type: optional<string> + docs: The website URL of the entity + logo: + type: optional<string> + docs: Logo's URL + mccs: + type: optional<list<integer>> + docs: >- + A list of [Merchant Category + Codes](https://en.wikipedia.org/wiki/Merchant_category_code) + type: + type: IntermediaryType + source: + openapi: ../openapi.yml + IntermediaryType: + enum: + - delivery_service + - payment_processor + docs: An enumeration. + source: + openapi: ../openapi.yml + Location: + properties: + raw_address: + type: optional<string> + docs: An unstructured string containing the address + structured: + type: optional<LocationStructured> + docs: When raw is set, a structured representation of it. + source: + openapi: ../openapi.yml + LocationInput: + docs: >- + Location of where the transaction has taken place. This can greatly + improve entity identification, especially + + under ambiguity. + properties: + raw_address: + type: optional<string> + docs: An unstructured string containing the address + country: + type: Country + docs: The country where the transaction was made in ISO 3166-2 format + source: + openapi: ../openapi.yml + LocationStructured: + properties: + street: + type: optional<string> + docs: The street name and number of the location + city: + type: optional<string> + docs: The city where the location is situated + state: + type: optional<string> + docs: The state or region of the location + postcode: + type: optional<string> + docs: The postal code or ZIP code of the location + country_code: + type: optional<string> + docs: The country code of the location in ISO 3166-2 format + country: + type: optional<string> + docs: The full name of the country + latitude: + type: optional<double> + docs: The latitude coordinate of the location + longitude: + type: optional<double> + docs: The longitude coordinate of the location + google_maps_url: + type: optional<string> + docs: A URL link to view the location on Google Maps + apple_maps_url: + type: optional<string> + docs: A URL link to view the location on Apple Maps + store_number: + type: optional<string> + docs: A unique identifier for a specific store or branch, if applicable + source: + openapi: ../openapi.yml + PagedResponseAccountHolderExternal: + properties: + next_cursor: string + data: + type: list<AccountHolderExternal> + source: + openapi: ../openapi.yml + PagedResponseBankStatement: + properties: + next_cursor: string + data: + type: list<BankStatement> + source: + openapi: ../openapi.yml + PagedResponseBatch: + properties: + next_cursor: string + data: + type: list<Batch> + source: + openapi: ../openapi.yml + PagedResponseReport: + properties: + next_cursor: + type: optional<string> + data: + type: list<Report> + source: + openapi: ../openapi.yml + PagedResponseTransaction: + properties: + next_cursor: string + data: + type: list<Transaction> + source: + openapi: ../openapi.yml + PagedResponseWebhook: + properties: + next_cursor: string + data: + type: list<Webhook> + source: + openapi: ../openapi.yml + Recurrence: + docs: >- + The `Recurrence` object represents the recurrence pattern of a + transaction. It provides information about + + whether a transaction is a one-time event or a part of a recurring series. + properties: + type: + type: RecurrenceType + docs: >- + Whether the transaction is a one-time transfer `one-off`, regularly + with varying pricing `recurring` or with fixed pricing `subscription` + source: + openapi: ../openapi.yml + RecurrenceGroup: + properties: + id: + type: string + docs: A unique UUID identifier for the group + start_date: + type: string + docs: The date of the oldest transaction in the group + validation: + format: date + end_date: + type: string + docs: The date of the most recent transaction in the group + validation: + format: date + total_amount: + type: double + docs: The sum of all transaction amounts in this group + average_amount: + type: double + docs: The average amount per transaction in this group + periodicity_in_days: + type: double + docs: The estimated number of days between transactions in this group + periodicity: + type: RecurrencePeriodicity + docs: A human-readable description of the transaction frequency + counterparty: + type: Counterparty + docs: Counterparty of the transactions + categories: + type: Categories + docs: Categories of the transactions in the recurrence group + transaction_ids: + docs: Transactions in this recurrence group + type: list<string> + source: + openapi: ../openapi.yml + RecurrencePeriodicity: + enum: + - daily + - weekly + - bi_weekly + - monthly + - bi_monthly + - quarterly + - semi_yearly + - yearly + - other + docs: An enumeration. + source: + openapi: ../openapi.yml + RecurrenceType: + enum: + - recurring + - subscription + - value: one off + name: OneOff + docs: An enumeration. + source: + openapi: ../openapi.yml + Report: + properties: + transaction_id: + type: string + docs: The unique identifier of the transaction + validation: + minLength: 1 + description: + type: string + docs: A description of what is wrong in the transaction + fields: + docs: A list of the fields that are incorrect + type: list<string> + id: + type: string + docs: A generated unique identifier for the report. + created_at: + type: datetime + docs: The date and time when the report was created. + status: + type: ReportStatus + docs: >- + The status of the report. + + + * `open`: a newly created report + + * `pending`: the report is being investigated + + * `rejected`: the original enrichment output was deemed correct or we + couldn't resolve it, check `rejection_reason` + + * `resolved`: the issue has been resolved + rejection_reason: + type: optional<string> + docs: An explanation of why the report was rejected + source: + openapi: ../openapi.yml + ReportStatus: + enum: + - open + - pending + - resolved + - rejected + docs: An enumeration. + source: + openapi: ../openapi.yml + StatementInfo: + properties: + institution: + type: optional<string> + start_date: + type: optional<string> + validation: + format: date + end_date: + type: optional<string> + validation: + format: date + account_holder: + type: optional<AccountHolder> + accounts: + type: optional<list<Account>> + source: + openapi: ../openapi.yml + SyncEnrichmentOutput: + properties: + transactions: + docs: >- + A list of enriched transactions resulting from the enrichment of this + batch. + type: list<EnrichedTransaction> + source: + openapi: ../openapi.yml + Transaction: + properties: + id: + type: string + docs: A unique identifier of the transaction + validation: + minLength: 1 + description: + type: string + docs: The description string of the transaction + validation: + minLength: 0 + maxLength: 1024 + date: + type: string + docs: >- + The date that the transaction was posted. Uses ISO 8601 format + (YYYY-MM-DD) + validation: + format: date + amount: + type: double + docs: >- + The amount of the transaction in the `currency`. Must be a positive + value. For example, if the `currency` is USD, then it's the amount in + dollars. + validation: + min: 0 + entry_type: + type: EntryType + docs: >- + The direction of the flow of the money from the perspective of the + account holder. `outgoing` to represent money leaving the account, + such as purchases or fees, while `incoming` represents money entering + the account, such as income or refunds. + currency: + type: Currency + docs: The currency of the transaction in ISO 4217 format + entities: + type: optional<Entities> + categories: + type: optional<Categories> + location: + type: optional<Location> + error: + type: optional<TransactionError> + created_at: + type: datetime + docs: The timestamp of when the account holder was created. + account_holder_id: + type: optional<string> + docs: The unique ID of the account holder of the transaction + validation: + minLength: 1 + recurrence: + type: optional<Recurrence> + source: + openapi: ../openapi.yml + TransactionError: + properties: + code: + type: TransactionErrorCode + message: string + source: + openapi: ../openapi.yml + TransactionErrorCode: + enum: + - account_holder_not_found + - internal_error + docs: An enumeration. + source: + openapi: ../openapi.yml + TransactionInput: + properties: + id: + type: string + docs: A unique identifier of the transaction + validation: + minLength: 1 + description: + type: string + docs: The description string of the transaction + validation: + minLength: 0 + maxLength: 1024 + date: + type: string + docs: >- + The date that the transaction was posted. Uses ISO 8601 format + (YYYY-MM-DD) + validation: + format: date + amount: + type: double + docs: >- + The amount of the transaction in the `currency`. Must be a positive + value. For example, if the `currency` is USD, then it's the amount in + dollars. + validation: + min: 0 + entry_type: + type: EntryType + docs: >- + The direction of the flow of the money from the perspective of the + account holder. `outgoing` to represent money leaving the account, + such as purchases or fees, while `incoming` represents money entering + the account, such as income or refunds. + currency: + type: Currency + docs: The currency of the transaction in ISO 4217 format + account_holder_id: + type: string + docs: >- + The unique ID of the account holder. Unsetting it will disable + [categorization](./docs/v3/enrichment/entities). + location: + type: optional<LocationInput> + source: + openapi: ../openapi.yml + ValidationErrorLocItem: + discriminated: false + union: + - string + - integer + source: + openapi: ../openapi.yml + ValidationError: + properties: + loc: + type: list<ValidationErrorLocItem> + msg: string + type: string + source: + openapi: ../openapi.yml + WebhookEventsItem: + enum: + - value: reports.resolved + name: ReportsResolved + - value: reports.rejected + name: ReportsRejected + - value: reports.pending + name: ReportsPending + - value: bank_statements.completed + name: BankStatementsCompleted + - value: bank_statements.error + name: BankStatementsError + - value: batches.completed + name: BatchesCompleted + - value: batches.error + name: BatchesError + source: + openapi: ../openapi.yml + Webhook: + properties: + url: + type: string + docs: The URL of the webhook + validation: + format: uri + minLength: 1 + maxLength: 1024 + events: + docs: A list of events that this webhook subscribes to + type: list<WebhookEventsItem> + token: + type: optional<string> + docs: >- + A secret string used to authenticate the webhook. This value will be + included in the `X-Ntropy-Token` header when sending requests to the + webhook + validation: + maxLength: 128 + id: + type: string + docs: A generated unique identifier for the webhook + created_at: + type: datetime + docs: The date and time when the webhook was created. + enabled: + type: boolean + docs: Whether the webhook is enabled or not. + source: + openapi: ../openapi.yml + expression: + discriminated: false + union: + - boolean + - string + - double + - FnCall + source: + openapi: ../openapi.yml + properties: + enum: + - logo + - website + - merchant + - description + - merchant_id + - location + - person + - transaction_type + - amount + - entry_type + - account_holder_type + - account_holder_id + - account_holder_name + source: + openapi: ../openapi.yml + FnCall&&: + properties: + '&&': list<expression> + source: + openapi: ../openapi.yml + FnCall||: + properties: + '||': list<expression> + source: + openapi: ../openapi.yml + FnCall==: + properties: + '==': list<expression> + source: + openapi: ../openapi.yml + FnCall+: + properties: + +: list<expression> + source: + openapi: ../openapi.yml + FnCall-: + properties: + '-': list<expression> + source: + openapi: ../openapi.yml + FnCall*: + properties: + '*': list<expression> + source: + openapi: ../openapi.yml + FnCall/: + properties: + /: list<expression> + source: + openapi: ../openapi.yml + FnCall//: + properties: + //: list<expression> + source: + openapi: ../openapi.yml + FnCall<: + properties: + <: list<expression> + source: + openapi: ../openapi.yml + FnCall<=: + properties: + <=: list<expression> + source: + openapi: ../openapi.yml + FnCall>: + properties: + '>': list<expression> + source: + openapi: ../openapi.yml + FnCall>=: + properties: + '>=': list<expression> + source: + openapi: ../openapi.yml + FnCall!: + properties: + '!': + type: expression + source: + openapi: ../openapi.yml + FnCallIsSubstring: + properties: + is_substring: list<expression> + source: + openapi: ../openapi.yml + FnCallStartsWith: + properties: + starts_with: list<expression> + source: + openapi: ../openapi.yml + FnCallEndsWith: + properties: + ends_with: list<expression> + source: + openapi: ../openapi.yml + FnCallToLower: + properties: + to_lower: + type: expression + source: + openapi: ../openapi.yml + FnCallToUpper: + properties: + to_upper: + type: expression + source: + openapi: ../openapi.yml + FnCallHasLabel: + properties: + has_label: + type: expression + source: + openapi: ../openapi.yml + FnCallHasMcc: + properties: + has_mcc: + type: expression + source: + openapi: ../openapi.yml + FnCallGet: + properties: + get: + type: properties + source: + openapi: ../openapi.yml + FnCall: + discriminated: false + union: + - type: FnCall&& + - type: FnCall|| + - type: FnCall== + - type: FnCall+ + - type: FnCall- + - type: FnCall* + - type: FnCall/ + - type: FnCall// + - type: FnCall< + - type: FnCall<= + - type: FnCall> + - type: FnCall>= + - type: FnCall! + - type: FnCallIsSubstring + - type: FnCallStartsWith + - type: FnCallEndsWith + - type: FnCallToLower + - type: FnCallToUpper + - type: FnCallHasLabel + - type: FnCallHasMcc + - type: FnCallGet + source: + openapi: ../openapi.yml + action: + discriminated: false + union: + - type: if + - type: ModifyLabels + - type: set + source: + openapi: ../openapi.yml + if: + properties: + if: + type: expression + then: + type: optional<list<action>> + else: + type: optional<list<action>> + source: + openapi: ../openapi.yml + ModifyLabelsAddLabel: + properties: + add_label: + type: expression + source: + openapi: ../openapi.yml + ModifyLabelsRemoveLabel: + properties: + remove_label: + type: expression + source: + openapi: ../openapi.yml + ModifyLabelsSetLabels: + properties: + set_labels: list<expression> + source: + openapi: ../openapi.yml + ModifyLabelsAddMcc: + properties: + add_mcc: + type: expression + source: + openapi: ../openapi.yml + ModifyLabelsRemoveMcc: + properties: + remove_mcc: + type: expression + source: + openapi: ../openapi.yml + ModifyLabelsSetMcc: + properties: + set_mcc: list<expression> + source: + openapi: ../openapi.yml + ModifyLabels: + discriminated: false + union: + - type: ModifyLabelsAddLabel + - type: ModifyLabelsRemoveLabel + - type: ModifyLabelsSetLabels + - type: ModifyLabelsAddMcc + - type: ModifyLabelsRemoveMcc + - type: ModifyLabelsSetMcc + source: + openapi: ../openapi.yml + EditableTxProp: + enum: + - logo + - website + - merchant + - merchant_id + - location + - person + - transaction_type + source: + openapi: ../openapi.yml + set: + properties: + set: + type: EditableTxProp + to: + type: expression + source: + openapi: ../openapi.yml + Filter: + type: list<action> +", + }, + "accountHolders.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Account Holder API allows you to retrieve, create and modify account holders. An account holder represents an +entity that holds an account associated with transactions. An account holder can either be a business or an individual +person - consumer. + +The fields chosen for an account holder are used by our enrichment process and can dramatically improve the accuracy +of the results. + +Complete guide: [Account Holders](../../../account-holders). +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Account Holders", + "endpoints": { + "createAccountHolder": { + "auth": true, + "display-name": "Create an account holder.", + "docs": undefined, + "errors": [ + "root.BadRequestError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/account_holders" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "type": "consumer", + "name": "John Doe" + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +ah = sdk.account_holders.create( + id="35b927b6-6fda-40aa-93b8-95b47c2b2cad", + type="consumer", + name="John Doe", +) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": { + "id": "id", + "type": "consumer", + }, + "response": { + "body": { + "created_at": "2024-03-30T00:00:00Z", + "id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "name": "John Doe", + "type": "consumer", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/account_holders", + "request": { + "body": { + "properties": { + "id": { + "docs": "The unique ID of the account holder of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + "name": { + "docs": "The name of the account holder", + "type": "optional<string>", + }, + "type": { + "docs": "The type of the account holder. ", + "type": "root.AccountHolderType", + }, + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "AccountHolderCreate", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Successful Response", + "type": "root.AccountHolderExternal", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "deleteAccountHolder": { + "auth": true, + "display-name": "Deletes an account holder and their transactions", + "docs": "Deletes all of the transactions in the account holder's history. This operation is permanent and irreversible", + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "DELETE" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +ah = sdk.account_holders.delete("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + }, + ], + "method": "DELETE", + "pagination": undefined, + "path": "/v3/account_holders/{id}", + "path-parameters": { + "id": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getAccountHolder": { + "auth": true, + "display-name": "Retrieve an account holder.", + "docs": undefined, + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +ah = sdk.account_holders.get("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "created_at": "2024-03-30T00:00:00Z", + "id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "name": "John Doe", + "type": "consumer", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/account_holders/{id}", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.AccountHolderExternal", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getAccountHolders": { + "auth": true, + "display-name": "List all account holders.", + "docs": undefined, + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +ah = sdk.account_holders.get("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "data": [ + { + "created_at": "2024-03-30T00:00:00Z", + "id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "name": "John Doe", + "type": "consumer", + }, + ], + "next_cursor": "XjdHaksD", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/account_holders", + "request": { + "name": "GetAccountHoldersV3AccountHoldersGetRequest", + "query-parameters": { + "created_after": { + "docs": "Only return account holders older or equal than this date", + "type": "optional<datetime>", + }, + "created_before": { + "docs": "Only return account holders newer than this date", + "type": "optional<datetime>", + }, + "cursor": { + "docs": "Starting point for the set of account holders", + "type": "optional<string>", + }, + "limit": { + "docs": "The limit of account holders to be returned", + "type": "optional<integer>", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": 50, + "min": 1, + "multipleOf": undefined, + }, + }, + }, + }, + "response": { + "docs": "Successful Response", + "type": "root.PagedResponseAccountHolderExternal", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getAccountHolder: + path: /v3/account_holders/{id} + method: GET + auth: true + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve an account holder. + response: + docs: Successful Response + type: root.AccountHolderExternal + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + type: consumer + name: John Doe + created_at: '2024-03-30T00:00:00Z' + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: >- + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + ah = + sdk.account_holders.get("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") + deleteAccountHolder: + path: /v3/account_holders/{id} + method: DELETE + auth: true + docs: >- + Deletes all of the transactions in the account holder's history. This + operation is permanent and irreversible + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Deletes an account holder and their transactions + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "DELETE" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: >- + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + ah = + sdk.account_holders.delete("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") + getAccountHolders: + path: /v3/account_holders + method: GET + auth: true + source: + openapi: ../openapi.yml + display-name: List all account holders. + request: + name: GetAccountHoldersV3AccountHoldersGetRequest + query-parameters: + created_after: + type: optional<datetime> + docs: Only return account holders older or equal than this date + created_before: + type: optional<datetime> + docs: Only return account holders newer than this date + cursor: + type: optional<string> + docs: Starting point for the set of account holders + limit: + type: optional<integer> + docs: The limit of account holders to be returned + validation: + min: 1 + max: 50 + response: + docs: Successful Response + type: root.PagedResponseAccountHolderExternal + errors: + - root.UnprocessableEntityError + examples: + - response: + body: + next_cursor: XjdHaksD + data: + - id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + type: consumer + name: John Doe + created_at: '2024-03-30T00:00:00Z' + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: >- + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + ah = + sdk.account_holders.get("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") + createAccountHolder: + path: /v3/account_holders + method: POST + auth: true + source: + openapi: ../openapi.yml + display-name: Create an account holder. + request: + name: AccountHolderCreate + body: + properties: + id: + type: string + docs: The unique ID of the account holder of the transaction + validation: + minLength: 1 + type: + type: root.AccountHolderType + docs: 'The type of the account holder. ' + name: + type: optional<string> + docs: The name of the account holder + content-type: application/json + response: + docs: Successful Response + type: root.AccountHolderExternal + errors: + - root.BadRequestError + - root.UnprocessableEntityError + examples: + - request: + id: id + type: consumer + response: + body: + id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + type: consumer + name: John Doe + created_at: '2024-03-30T00:00:00Z' + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/account_holders" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "type": "consumer", + "name": "John Doe" + }]' + + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + ah = sdk.account_holders.create( + id="35b927b6-6fda-40aa-93b8-95b47c2b2cad", + type="consumer", + name="John Doe", + ) + source: + openapi: ../openapi.yml + display-name: Account Holders +docs: > + + The Account Holder API allows you to retrieve, create and modify account + holders. An account holder represents an + + entity that holds an account associated with transactions. An account holder + can either be a business or an individual + + person - consumer. + + + The fields chosen for an account holder are used by our enrichment process and + can dramatically improve the accuracy + + of the results. + + + Complete guide: [Account Holders](../../../account-holders). +", + }, + "bankStatements.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Bank Statements API allows you to manage and extract information from bank statements. We support extraction of +account holder information, account information and transaction records. Files should be uploaded in PDF format. + +During the extraction process, the bank statements undergo several status changes: +| Status | Description | +|----------|------------------------------------------------------------------------| +|processing|The upload was successful. Extraction is in progress. | +|completed |The extraction was successful. Results are available. | +|error |An error occurred during extraction. Check `error` for more information.| + + +A list of error codes for the `error` status can be found below: +| Code | Description | +|----------------------|-------------------------------------------| +|invalid_bank_statement|Failed to process file as a bank statement.| +|internal_error |Internal error. Please contact support. | + + +Complete guide: [Bank Statements](../../../bank-statements). +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Bank statements", + "endpoints": { + "deleteBankStatement": { + "auth": true, + "display-name": "Deletes a bank statement", + "docs": undefined, + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "path-parameters": { + "id": "id", + }, + }, + ], + "method": "DELETE", + "pagination": undefined, + "path": "/v3/bank_statements/{id}", + "path-parameters": { + "id": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getBankStatement": { + "auth": true, + "display-name": "Retrieve a bank statement", + "docs": undefined, + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +bs = sdk.bank_statements.get("7f8dceac-2848-472d-b5c3-55cdbaf35a9b") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "created_at": "2024-01-01T00:00:00Z", + "error": { + "code": "invalid_bank_statement", + "message": "message", + }, + "file": { + "no_pages": 1, + "size": 4096, + }, + "id": "7f8dceac-2848-472d-b5c3-55cdbaf35a9b", + "name": "2014-01-01_2014-02-01_statement.pdf", + "status": "processing", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/bank_statements/{id}", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.BankStatement", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getBankStatementResult": { + "auth": true, + "display-name": "Retrieve the extraction results", + "docs": "Return the extracted account information and associated transactions from a bank statement PDF. The results are accessible once the statement's status is `completed`.", + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b/results" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +bs = sdk.bank_statements.get("7f8dceac-2848-472d-b5c3-55cdbaf35a9b") +results = sdk.bank_statements.wait_for_results( + "7f8dceac-2848-472d-b5c3-55cdbaf35a9b" +) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "accounts": [ + { + "closing_balance": 200, + "end_date": "2024-02-01", + "is_balance_reconciled": true, + "number": "972913289", + "opening_balance": 400, + "start_date": "2024-01-01", + "total_incoming": 0, + "total_outgoing": 200, + "transactions": [ + { + "amount": 200, + "currency": "USD", + "date": "2024-03-30", + "description": "SQ* STARBUCKS NW 43RD", + "entry_type": "outgoing", + "id": "xbx8YP14g565Xk", + "running_balance": 400, + }, + ], + }, + ], + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/bank_statements/{id}/results", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.BankStatementResults", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getBankStatementStatementInfo": { + "auth": true, + "display-name": "Quickly extract account holder, institution and first account", + "docs": "Extracts account holder, bank and account information extracted from the first page of the bank statement, which is typically available before the full results. This is a synchronous call. + +Complete guide: [Overview](../../../bank-statements)", + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b/overview" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +overview = sdk.bank_statements.overview( + "7f8dceac-2848-472d-b5c3-55cdbaf35a9b" +) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "account_holder": { + "address": { + "city": "Victoria", + "country": "United States", + "postcode": "77901", + "state": "Texas", + "street": "601 Rosebud Avenue", + }, + "name": "John Doe", + "type": "consumer", + }, + "accounts": [ + { + "closing_balance": 1500, + "iso_currency_code": "USD", + "number": "83721", + "opening_balance": 1000, + "type": "checking", + }, + ], + "end_date": "2024-02-01", + "institution": "Well's Fargo", + "start_date": "2024-01-01", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/bank_statements/{id}/overview", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.StatementInfo", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getBankStatements": { + "auth": true, + "display-name": "List all bank statements", + "docs": "Return a list of submitted bank statements starting with the most recent one.", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/bank_statements" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +for bs in sdk.bank_statements.list().auto_paginate(): + ... ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "data": [ + { + "created_at": "2024-01-01T00:00:00Z", + "error": { + "code": "invalid_bank_statement", + "message": "message", + }, + "file": { + "no_pages": 1, + "size": 4096, + }, + "id": "7f8dceac-2848-472d-b5c3-55cdbaf35a9b", + "name": "2014-01-01_2014-02-01_statement.pdf", + "status": "processing", + }, + ], + "next_cursor": "XjdHaksD", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/bank_statements", + "request": { + "name": "GetBankStatementsV3BankStatementsGetRequest", + "query-parameters": { + "created_after": { + "docs": "Only return bank statements older or equal than this date", + "type": "optional<datetime>", + }, + "created_before": { + "docs": "Only return bank statements newer than this date", + "type": "optional<datetime>", + }, + "cursor": { + "docs": "Starting point for the set of bank statements", + "type": "optional<string>", + }, + "limit": { + "docs": "The limit of bank statements to be returned", + "type": "optional<integer>", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": 50, + "min": 1, + "multipleOf": undefined, + }, + }, + "status": { + "docs": "If specified, only return bank statements with this status", + "type": "optional<root.DocumentStatus>", + }, + }, + }, + "response": { + "docs": "Successful Response", + "type": "root.PagedResponseBankStatement", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "postBankStatement": { + "auth": true, + "display-name": "Submit a bank statement PDF", + "docs": "Upload a PDF file and queue it for extraction.", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/bank_statements" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + --form file=@bank_statement.pdf + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +with open('bank_statement.pdf', 'rb') as fh: + bank_statement = sdk.bank_statements.create(fh) + results = sdk.bank_statement.wait_for_results(bank_statement.id) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": {}, + "response": { + "body": { + "created_at": "2024-01-01T00:00:00Z", + "error": { + "code": "invalid_bank_statement", + "message": "message", + }, + "file": { + "no_pages": 1, + "size": 4096, + }, + "id": "7f8dceac-2848-472d-b5c3-55cdbaf35a9b", + "name": "2014-01-01_2014-02-01_statement.pdf", + "status": "processing", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/bank_statements", + "request": { + "body": { + "properties": { + "file": "file", + }, + }, + "content-type": "multipart/form-data", + "headers": undefined, + "name": "Body_post_bank_statement_v3_bank_statements_post", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Successful Response", + "type": "root.BankStatement", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getBankStatements: + path: /v3/bank_statements + method: GET + auth: true + docs: >- + Return a list of submitted bank statements starting with the most recent + one. + source: + openapi: ../openapi.yml + display-name: List all bank statements + request: + name: GetBankStatementsV3BankStatementsGetRequest + query-parameters: + created_after: + type: optional<datetime> + docs: Only return bank statements older or equal than this date + created_before: + type: optional<datetime> + docs: Only return bank statements newer than this date + cursor: + type: optional<string> + docs: Starting point for the set of bank statements + limit: + type: optional<integer> + docs: The limit of bank statements to be returned + validation: + min: 1 + max: 50 + status: + type: optional<root.DocumentStatus> + docs: If specified, only return bank statements with this status + response: + docs: Successful Response + type: root.PagedResponseBankStatement + errors: + - root.UnprocessableEntityError + examples: + - response: + body: + next_cursor: XjdHaksD + data: + - id: 7f8dceac-2848-472d-b5c3-55cdbaf35a9b + name: 2014-01-01_2014-02-01_statement.pdf + status: processing + created_at: '2024-01-01T00:00:00Z' + file: + no_pages: 1 + size: 4096 + error: + code: invalid_bank_statement + message: message + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/bank_statements" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + for bs in sdk.bank_statements.list().auto_paginate(): + ... + postBankStatement: + path: /v3/bank_statements + method: POST + auth: true + docs: Upload a PDF file and queue it for extraction. + source: + openapi: ../openapi.yml + display-name: Submit a bank statement PDF + request: + name: Body_post_bank_statement_v3_bank_statements_post + body: + properties: + file: file + content-type: multipart/form-data + response: + docs: Successful Response + type: root.BankStatement + errors: + - root.UnprocessableEntityError + examples: + - request: {} + response: + body: + id: 7f8dceac-2848-472d-b5c3-55cdbaf35a9b + name: 2014-01-01_2014-02-01_statement.pdf + status: processing + created_at: '2024-01-01T00:00:00Z' + file: + no_pages: 1 + size: 4096 + error: + code: invalid_bank_statement + message: message + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/bank_statements" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + --form file=@bank_statement.pdf + + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + with open('bank_statement.pdf', 'rb') as fh: + bank_statement = sdk.bank_statements.create(fh) + results = sdk.bank_statement.wait_for_results(bank_statement.id) + getBankStatement: + path: /v3/bank_statements/{id} + method: GET + auth: true + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve a bank statement + response: + docs: Successful Response + type: root.BankStatement + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + id: 7f8dceac-2848-472d-b5c3-55cdbaf35a9b + name: 2014-01-01_2014-02-01_statement.pdf + status: processing + created_at: '2024-01-01T00:00:00Z' + file: + no_pages: 1 + size: 4096 + error: + code: invalid_bank_statement + message: message + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: >- + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + bs = + sdk.bank_statements.get("7f8dceac-2848-472d-b5c3-55cdbaf35a9b") + deleteBankStatement: + path: /v3/bank_statements/{id} + method: DELETE + auth: true + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Deletes a bank statement + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + getBankStatementStatementInfo: + path: /v3/bank_statements/{id}/overview + method: POST + auth: true + docs: >- + Extracts account holder, bank and account information extracted from the + first page of the bank statement, which is typically available before + the full results. This is a synchronous call. + + + Complete guide: [Overview](../../../bank-statements) + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Quickly extract account holder, institution and first account + response: + docs: Successful Response + type: root.StatementInfo + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + institution: Well's Fargo + start_date: '2024-01-01' + end_date: '2024-02-01' + account_holder: + type: consumer + name: John Doe + address: + street: 601 Rosebud Avenue + postcode: '77901' + city: Victoria + state: Texas + country: United States + accounts: + - type: checking + number: '83721' + opening_balance: 1000 + closing_balance: 1500 + iso_currency_code: USD + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b/overview" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + overview = sdk.bank_statements.overview( + "7f8dceac-2848-472d-b5c3-55cdbaf35a9b" + ) + getBankStatementResult: + path: /v3/bank_statements/{id}/results + method: GET + auth: true + docs: >- + Return the extracted account information and associated transactions + from a bank statement PDF. The results are accessible once the + statement's status is `completed`. + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve the extraction results + response: + docs: Successful Response + type: root.BankStatementResults + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + accounts: + - number: '972913289' + opening_balance: 400 + closing_balance: 200 + start_date: '2024-01-01' + end_date: '2024-02-01' + is_balance_reconciled: true + total_incoming: 0 + total_outgoing: 200 + transactions: + - id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 200 + entry_type: outgoing + currency: USD + running_balance: 400 + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b/results" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: >- + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + bs = + sdk.bank_statements.get("7f8dceac-2848-472d-b5c3-55cdbaf35a9b") + + results = sdk.bank_statements.wait_for_results( + "7f8dceac-2848-472d-b5c3-55cdbaf35a9b" + ) + source: + openapi: ../openapi.yml + display-name: Bank statements +docs: > + + The Bank Statements API allows you to manage and extract information from bank + statements. We support extraction of + + account holder information, account information and transaction records. Files + should be uploaded in PDF format. + + + During the extraction process, the bank statements undergo several status + changes: + + | Status | + Description | + + |----------|------------------------------------------------------------------------| + + |processing|The upload was successful. Extraction is in + progress. | + + |completed |The extraction was successful. Results are + available. | + + |error |An error occurred during extraction. Check `error` for more + information.| + + + + A list of error codes for the `error` status can be found below: + + | Code | Description | + + |----------------------|-------------------------------------------| + + |invalid_bank_statement|Failed to process file as a bank statement.| + + |internal_error |Internal error. Please contact support. | + + + + Complete guide: [Bank Statements](../../../bank-statements). +", + }, + "batches.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "endpoints": { + "getBatchResults": { + "auth": true, + "display-name": "Retrieve the results of a batch", + "docs": "Returns the results of the enrichment request. The resulting enriched transactions are returned in the same order they were submitted. Results are available after the batch has finished processing.", + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/batches/203613d2-83c8-4130-8809-d14206eeec20/results" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +results = sdk.batches.wait_for_results("f203613d2-83c8-4130-8809-d14206eeec20") +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "id": "id", + "results": { + "transactions": [ + { + "categories": { + "general": "outgoing - coffee shops", + }, + "created_at": "2024-03-30T00:00:00Z", + "entities": { + "counterparty": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "type": "organization", + "website": "starbucks.com", + }, + "intermediaries": [ + { + "id": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "logo": "https://logos.ntropy.com/squareup.com", + "mccs": [ + 1, + ], + "name": "Square", + "type": "payment_processor", + "website": "squareup.com", + }, + ], + }, + "id": "xbx8YP14g565Xk", + "location": { + "raw_address": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "structured": { + "apple_maps_url": "https://maps.apple.com/?q=29.704558,-82.389277", + "city": "Gainesville", + "country": "United States", + "country_code": "US", + "google_maps_url": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "latitude": 29.704558, + "longitude": -82.389277, + "postcode": "32653", + "state": "Florida", + "street": "Nw 43rd Street 5480", + }, + }, + }, + ], + }, + "status": "processing", + "total": 1, + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/batches/{id}/results", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Returned batch of transaction enrichment results.", + "type": "root.BatchResult", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getBatches": { + "auth": true, + "display-name": "List all batches", + "docs": "Returns a list of submitted batches starting with the most recent one.", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/batches" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +for batch in sdk.batches.list().auto_paginate(): + ... ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "data": [ + { + "created_at": "2024-01-01T00:00:00Z", + "id": "203613d2-83c8-4130-8809-d14206eeec20", + "progress": 0, + "status": "processing", + "total": 4000, + "updated_at": "2024-01-01T00:00:30Z", + }, + ], + "next_cursor": "XjdHaksD", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/batches", + "request": { + "name": "GetBatchesV3BatchesGetRequest", + "query-parameters": { + "created_after": { + "docs": "Only return batches older or equal than this date", + "type": "optional<datetime>", + }, + "created_before": { + "docs": "Only return batches newer than this date", + "type": "optional<datetime>", + }, + "cursor": { + "docs": "Starting point for the set of batches", + "type": "optional<string>", + }, + "limit": { + "docs": "The limit of batches to be returned", + "type": "optional<integer>", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": 50, + "min": 1, + "multipleOf": undefined, + }, + }, + "status": { + "docs": "If specified, only return batches with this status", + "type": "optional<root.BatchStatus>", + }, + }, + }, + "response": { + "docs": "Successful Response", + "type": "root.PagedResponseBatch", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getSingleBatch": { + "auth": true, + "display-name": "Retrieve a batch", + "docs": undefined, + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/batches/203613d2-83c8-4130-8809-d14206eeec20" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +batch = sdk.batches.get("f203613d2-83c8-4130-8809-d14206eeec20") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "created_at": "2024-01-01T00:00:00Z", + "id": "203613d2-83c8-4130-8809-d14206eeec20", + "progress": 0, + "status": "processing", + "total": 4000, + "updated_at": "2024-01-01T00:00:30Z", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/batches/{id}", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.Batch", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "postBatch": { + "auth": true, + "display-name": "Submit a batch of transactions", + "docs": "Creates a batch of transactions and enriches it in an asynchronous fashion. A batch, representing the status of the +enrichment progress is returned as a result of the submission. + +In order to be notified on the status of the batch, you can setup [webhooks](../../../webhooks) and receive +the respective notifications. Alternatively, you can +[poll](../../../enrichment/introduction/#viewing-the-progress-of-a-batch) for the status of the batch using its id. + +This endpoints supports up to 24960 transactions.", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/batches/" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '[{ + "id": "xbx8YP14g565Xk", + "description": "SQ* STARBUCKS NW 43RD", + "date": "2024-03-30", + "amount": 10.0, + "entry_type": "outgoing", + "currency": "USD", + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "location": { + "country": "US" + } + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK, TransactionInput, LocationInput + +sdk = SDK("cd1H...Wmhl") +batch = sdk.batches.create([ + TransactionInput( + id="xbx8YP14g565Xk", + description="SQ* STARBUCKS NW 43RD", + account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad", + amount=10.0, + entry_type="outgoing", + date="2024-03-30", + currency="USD", + location=LocationInput( + country="US", + ) + ) +]) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": { + "transactions": [ + { + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "amount": 10, + "currency": "USD", + "date": "2024-03-30", + "description": "SQ* STARBUCKS NW 43RD", + "entry_type": "outgoing", + "id": "xbx8YP14g565Xk", + "location": { + "country": "US", + }, + }, + ], + }, + "response": { + "body": { + "created_at": "2024-01-01T00:00:00Z", + "id": "203613d2-83c8-4130-8809-d14206eeec20", + "progress": 0, + "status": "processing", + "total": 4000, + "updated_at": "2024-01-01T00:00:30Z", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/batches", + "request": { + "body": { + "properties": { + "transactions": { + "type": "list<root.TransactionInput>", + }, + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "AsyncEnrichmentInput", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Successful Response", + "type": "root.Batch", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getBatches: + path: /v3/batches + method: GET + auth: true + docs: Returns a list of submitted batches starting with the most recent one. + source: + openapi: ../openapi.yml + display-name: List all batches + request: + name: GetBatchesV3BatchesGetRequest + query-parameters: + created_after: + type: optional<datetime> + docs: Only return batches older or equal than this date + created_before: + type: optional<datetime> + docs: Only return batches newer than this date + cursor: + type: optional<string> + docs: Starting point for the set of batches + limit: + type: optional<integer> + docs: The limit of batches to be returned + validation: + min: 1 + max: 50 + status: + type: optional<root.BatchStatus> + docs: If specified, only return batches with this status + response: + docs: Successful Response + type: root.PagedResponseBatch + errors: + - root.UnprocessableEntityError + examples: + - response: + body: + next_cursor: XjdHaksD + data: + - id: 203613d2-83c8-4130-8809-d14206eeec20 + status: processing + created_at: '2024-01-01T00:00:00Z' + updated_at: '2024-01-01T00:00:30Z' + progress: 0 + total: 4000 + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/batches" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + for batch in sdk.batches.list().auto_paginate(): + ... + postBatch: + path: /v3/batches + method: POST + auth: true + docs: >- + Creates a batch of transactions and enriches it in an asynchronous + fashion. A batch, representing the status of the + + enrichment progress is returned as a result of the submission. + + + In order to be notified on the status of the batch, you can setup + [webhooks](../../../webhooks) and receive + + the respective notifications. Alternatively, you can + + [poll](../../../enrichment/introduction/#viewing-the-progress-of-a-batch) + for the status of the batch using its id. + + + This endpoints supports up to 24960 transactions. + source: + openapi: ../openapi.yml + display-name: Submit a batch of transactions + request: + name: AsyncEnrichmentInput + body: + properties: + transactions: + type: list<root.TransactionInput> + content-type: application/json + response: + docs: Successful Response + type: root.Batch + errors: + - root.UnprocessableEntityError + examples: + - request: + transactions: + - id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10 + entry_type: outgoing + currency: USD + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + location: + country: US + response: + body: + id: 203613d2-83c8-4130-8809-d14206eeec20 + status: processing + created_at: '2024-01-01T00:00:00Z' + updated_at: '2024-01-01T00:00:30Z' + progress: 0 + total: 4000 + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/batches/" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '[{ + "id": "xbx8YP14g565Xk", + "description": "SQ* STARBUCKS NW 43RD", + "date": "2024-03-30", + "amount": 10.0, + "entry_type": "outgoing", + "currency": "USD", + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "location": { + "country": "US" + } + }]' + + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK, TransactionInput, LocationInput + + sdk = SDK("cd1H...Wmhl") + batch = sdk.batches.create([ + TransactionInput( + id="xbx8YP14g565Xk", + description="SQ* STARBUCKS NW 43RD", + account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad", + amount=10.0, + entry_type="outgoing", + date="2024-03-30", + currency="USD", + location=LocationInput( + country="US", + ) + ) + ]) + getSingleBatch: + path: /v3/batches/{id} + method: GET + auth: true + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve a batch + response: + docs: Successful Response + type: root.Batch + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + id: 203613d2-83c8-4130-8809-d14206eeec20 + status: processing + created_at: '2024-01-01T00:00:00Z' + updated_at: '2024-01-01T00:00:30Z' + progress: 0 + total: 4000 + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/batches/203613d2-83c8-4130-8809-d14206eeec20" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: >- + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + batch = + sdk.batches.get("f203613d2-83c8-4130-8809-d14206eeec20") + getBatchResults: + path: /v3/batches/{id}/results + method: GET + auth: true + docs: >- + Returns the results of the enrichment request. The resulting enriched + transactions are returned in the same order they were submitted. Results + are available after the batch has finished processing. + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve the results of a batch + response: + docs: Returned batch of transaction enrichment results. + type: root.BatchResult + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + id: id + total: 1 + status: processing + results: + transactions: + - entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: + - 1 + type: payment_processor + categories: + general: outgoing - coffee shops + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: >- + https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + created_at: '2024-03-30T00:00:00Z' + id: xbx8YP14g565Xk + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/batches/203613d2-83c8-4130-8809-d14206eeec20/results" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: > + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + results = + sdk.batches.wait_for_results("f203613d2-83c8-4130-8809-d14206eeec20") + source: + openapi: ../openapi.yml +", + }, + "categories.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "endpoints": { + "customCategoriesPost": { + "auth": true, + "display-name": "Set a custom set of categories", + "docs": "Sets a custom set of categories. Transactions that don't match a category will be categorized `not enough information` regardless of whether it is present in the set.", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/categories/consumer" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "incoming": [ + "salary", + "investment income", + "other income" + ], + "outgoing": [ + "rent", + "utilities", + "groceries", + "entertainment" + ] + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.categories.set("consumer", { + "incoming": [ + "transfer from investment app", + "transfer from stock broker", + "transfer from crypto broker", + "chargeback", + "freelance income", + "rideshare or delivery income", + "paycheck", + "benefits", + "interest earned", + "stock dividend" + ], + "outgoing": [ + "digital content and streaming", + "vending machine", + "reversal", + "transfer to investment app", + "transfer to stock broker", + "transfer to crypto broker", + "adjustment", + "intra account transfer", + "inter account transfer", + "peer to peer transfer", + "funeral service", + "ATM withdrawal", + "teller withdrawal" + ] +}) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "account_holder_type": "consumer", + }, + "request": { + "incoming": [ + "salary", + "investment income", + "other income", + ], + "outgoing": [ + "rent", + "utilities", + "groceries", + "entertainment", + ], + }, + "response": { + "body": { + "incoming": [ + "salary", + "investment income", + "other income", + ], + "outgoing": [ + "rent", + "utilities", + "groceries", + "entertainment", + ], + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/categories/{account_holder_type}", + "path-parameters": { + "account_holder_type": "root.AccountHolderType", + }, + "request": { + "body": { + "type": "root.CustomCategorySet", + }, + "content-type": "application/json", + }, + "response": { + "docs": "Custom categories successfully set.", + "type": "root.CustomCategorySet", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "deleteCustomCategorySet": { + "auth": true, + "display-name": "Reset category set to original values", + "docs": "Resets the set of categories of the specified account holder type to the original values.", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/categories/consumer/reset" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.categories.reset("consumer") +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "account_holder_type": "consumer", + }, + "response": { + "body": { + "incoming": [ + "transfer from investment app", + "transfer from stock broker", + "transfer from crypto broker", + "chargeback", + "freelance income", + "rideshare or delivery income", + "paycheck", + "benefits", + "interest earned", + "stock dividend", + ], + "outgoing": [ + "digital content and streaming", + "vending machine", + "reversal", + "transfer to investment app", + "transfer to stock broker", + "transfer to crypto broker", + "adjustment", + "intra account transfer", + "inter account transfer", + "peer to peer transfer", + "funeral service", + "ATM withdrawal", + "teller withdrawal", + ], + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/categories/{account_holder_type}/reset", + "path-parameters": { + "account_holder_type": "root.AccountHolderType", + }, + "response": { + "docs": "Successful Response", + "type": "root.CategorySet", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getCategorySet": { + "auth": true, + "display-name": "Retrieve category set", + "docs": "Retrieves the set of categories. Category sets are different per account holder type.", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/categories/consumer" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.categories.get("consumer") +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "account_holder_type": "consumer", + }, + "response": { + "body": { + "incoming": [ + "transfer from investment app", + "transfer from stock broker", + "transfer from crypto broker", + "chargeback", + "freelance income", + "rideshare or delivery income", + "paycheck", + "benefits", + "interest earned", + "stock dividend", + ], + "outgoing": [ + "digital content and streaming", + "vending machine", + "reversal", + "transfer to investment app", + "transfer to stock broker", + "transfer to crypto broker", + "adjustment", + "intra account transfer", + "inter account transfer", + "peer to peer transfer", + "funeral service", + "ATM withdrawal", + "teller withdrawal", + ], + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/categories/{account_holder_type}", + "path-parameters": { + "account_holder_type": "root.AccountHolderType", + }, + "response": { + "docs": "Category set for the selected type of account holder", + "type": "root.CategorySet", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getCategorySet: + path: /v3/categories/{account_holder_type} + method: GET + auth: true + docs: >- + Retrieves the set of categories. Category sets are different per account + holder type. + source: + openapi: ../openapi.yml + path-parameters: + account_holder_type: root.AccountHolderType + display-name: Retrieve category set + response: + docs: Category set for the selected type of account holder + type: root.CategorySet + errors: + - root.UnprocessableEntityError + examples: + - path-parameters: + account_holder_type: consumer + response: + body: + incoming: + - transfer from investment app + - transfer from stock broker + - transfer from crypto broker + - chargeback + - freelance income + - rideshare or delivery income + - paycheck + - benefits + - interest earned + - stock dividend + outgoing: + - digital content and streaming + - vending machine + - reversal + - transfer to investment app + - transfer to stock broker + - transfer to crypto broker + - adjustment + - intra account transfer + - inter account transfer + - peer to peer transfer + - funeral service + - ATM withdrawal + - teller withdrawal + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/categories/consumer" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.categories.get("consumer") + customCategoriesPost: + path: /v3/categories/{account_holder_type} + method: POST + auth: true + docs: >- + Sets a custom set of categories. Transactions that don't match a + category will be categorized `not enough information` regardless of + whether it is present in the set. + source: + openapi: ../openapi.yml + path-parameters: + account_holder_type: root.AccountHolderType + display-name: Set a custom set of categories + request: + body: + type: root.CustomCategorySet + content-type: application/json + response: + docs: Custom categories successfully set. + type: root.CustomCategorySet + errors: + - root.UnprocessableEntityError + examples: + - path-parameters: + account_holder_type: consumer + request: + incoming: + - salary + - investment income + - other income + outgoing: + - rent + - utilities + - groceries + - entertainment + response: + body: + incoming: + - salary + - investment income + - other income + outgoing: + - rent + - utilities + - groceries + - entertainment + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/categories/consumer" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "incoming": [ + "salary", + "investment income", + "other income" + ], + "outgoing": [ + "rent", + "utilities", + "groceries", + "entertainment" + ] + }]' + + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.categories.set("consumer", { + "incoming": [ + "transfer from investment app", + "transfer from stock broker", + "transfer from crypto broker", + "chargeback", + "freelance income", + "rideshare or delivery income", + "paycheck", + "benefits", + "interest earned", + "stock dividend" + ], + "outgoing": [ + "digital content and streaming", + "vending machine", + "reversal", + "transfer to investment app", + "transfer to stock broker", + "transfer to crypto broker", + "adjustment", + "intra account transfer", + "inter account transfer", + "peer to peer transfer", + "funeral service", + "ATM withdrawal", + "teller withdrawal" + ] + }) + deleteCustomCategorySet: + path: /v3/categories/{account_holder_type}/reset + method: POST + auth: true + docs: >- + Resets the set of categories of the specified account holder type to the + original values. + source: + openapi: ../openapi.yml + path-parameters: + account_holder_type: root.AccountHolderType + display-name: Reset category set to original values + response: + docs: Successful Response + type: root.CategorySet + errors: + - root.UnprocessableEntityError + examples: + - path-parameters: + account_holder_type: consumer + response: + body: + incoming: + - transfer from investment app + - transfer from stock broker + - transfer from crypto broker + - chargeback + - freelance income + - rideshare or delivery income + - paycheck + - benefits + - interest earned + - stock dividend + outgoing: + - digital content and streaming + - vending machine + - reversal + - transfer to investment app + - transfer to stock broker + - transfer to crypto broker + - adjustment + - intra account transfer + - inter account transfer + - peer to peer transfer + - funeral service + - ATM withdrawal + - teller withdrawal + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/categories/consumer/reset" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.categories.reset("consumer") + source: + openapi: ../openapi.yml +", + }, + "entities.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "endpoints": { + "getEntityById": { + "auth": true, + "display-name": "Retrieve an entity", + "docs": "Retrieve more information about an entity by using its unique ID.", + "errors": [ + "root.BadRequestError", + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/entities/d4bc3c80-ec1a-3da2-836e-2a4ca4758be5" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.entities.lookup("d4bc3c80-ec1a-3da2-836e-2a4ca4758be5") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "website": "starbucks.com", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/entities/{id}", + "path-parameters": { + "id": { + "docs": "The unique ID of the entity", + "type": "string", + }, + }, + "response": { + "docs": "Entity", + "type": "root.Entity", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "searchEntity": { + "auth": true, + "display-name": "Searches for an entity", + "docs": "Resolves a query into an entity by querying our entity resolution system. + The parameters `name` and `website` are mutually exclusive. Calls to this endpoint using + the `name` parameter are billed the same way transactions are.", + "errors": [ + "root.BadRequestError", + "root.UnprocessableEntityError", + "root.LockedError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/entities?name=Starbucks" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.entities.lookup(name="Starbucks") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "website": "starbucks.com", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/entities/lookup", + "request": { + "name": "SearchEntityV3EntitiesLookupGetRequest", + "query-parameters": { + "location": { + "docs": "An unstructured location string of the entity to resolve", + "type": "optional<string>", + }, + "name": { + "docs": "The name of the entity to resolve", + "type": "optional<string>", + }, + "website": { + "docs": "The website of the entity to resolve", + "type": "optional<string>", + }, + }, + }, + "response": { + "docs": "Entity", + "type": "root.Entity", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + searchEntity: + path: /v3/entities/lookup + method: GET + auth: true + docs: >- + Resolves a query into an entity by querying our entity resolution + system. + The parameters `name` and `website` are mutually exclusive. Calls to this endpoint using + the `name` parameter are billed the same way transactions are. + source: + openapi: ../openapi.yml + display-name: Searches for an entity + request: + name: SearchEntityV3EntitiesLookupGetRequest + query-parameters: + name: + type: optional<string> + docs: The name of the entity to resolve + website: + type: optional<string> + docs: The website of the entity to resolve + location: + type: optional<string> + docs: An unstructured location string of the entity to resolve + response: + docs: Entity + type: root.Entity + errors: + - root.BadRequestError + - root.UnprocessableEntityError + - root.LockedError + examples: + - response: + body: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/entities?name=Starbucks" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.entities.lookup(name="Starbucks") + getEntityById: + path: /v3/entities/{id} + method: GET + auth: true + docs: Retrieve more information about an entity by using its unique ID. + source: + openapi: ../openapi.yml + path-parameters: + id: + type: string + docs: The unique ID of the entity + display-name: Retrieve an entity + response: + docs: Entity + type: root.Entity + errors: + - root.BadRequestError + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/entities/d4bc3c80-ec1a-3da2-836e-2a4ca4758be5" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.entities.lookup("d4bc3c80-ec1a-3da2-836e-2a4ca4758be5") + source: + openapi: ../openapi.yml +", + }, + "personalization.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Personalization API allows you to customize the output of enrichment by +uploading a set of rules. For more information, see our documentation on +[Personalization](None). +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Personalization", + "endpoints": { + "filterAppend": { + "auth": true, + "display-name": "Append a rule.", + "docs": "Append a rule to the personalization ruleset.", + "errors": [ + "root.BadRequestError", + "root.ContentTooLargeError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/rules/append" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{"set": "logo", "to": "http://example.com/favicon.ico"}' +", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.rules.append({"set": "logo", "to": "http://example.com/favicon.ico"}) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": { + "if": true, + }, + "response": { + "body": { + "key": "value", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/rules/append", + "request": { + "body": { + "type": "root.action", + }, + "content-type": "application/json", + }, + "response": { + "docs": "Successful Response", + "type": "unknown", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "filterDelete": { + "auth": true, + "display-name": "Delete a rule.", + "docs": "Delete the rule at the specified index from the personalization ruleset.", + "errors": [ + "root.BadRequestError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "DELETE" \ + "https://api.ntropy.com/v3/rules/0" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.rules.delete(0) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "index": 1, + }, + "response": { + "body": { + "key": "value", + }, + }, + }, + ], + "method": "DELETE", + "pagination": undefined, + "path": "/v3/rules/{index}", + "path-parameters": { + "index": "integer", + }, + "response": { + "docs": "Successful Response", + "type": "unknown", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "filterGet": { + "auth": true, + "display-name": "Get the current personalization ruleset.", + "docs": "Get the current personalization ruleset.", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/rules" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +rules = sdk.rules.get() +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": [ + { + "if": { + "is_substring": [], + }, + }, + ], + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/rules", + "response": { + "docs": "Successful Response", + "type": "root.Filter", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "filterPatch": { + "auth": true, + "display-name": "Modify an existing rule.", + "docs": "Modify an existing rule at the specified index on the ruleset.", + "errors": [ + "root.BadRequestError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "PATCH" \ + "https://api.ntropy.com/v3/rules/0" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{"set": "logo", "to": "http://example.com/favicon.ico"}' +", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.rules.patch(0, {"set": "logo", "to": "http://example.com/favicon.ico"}) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "index": 1, + }, + "request": { + "if": true, + }, + "response": { + "body": { + "key": "value", + }, + }, + }, + ], + "method": "PATCH", + "pagination": undefined, + "path": "/v3/rules/{index}", + "path-parameters": { + "index": "integer", + }, + "request": { + "body": { + "type": "root.action", + }, + "content-type": "application/json", + }, + "response": { + "docs": "Successful Response", + "type": "unknown", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "filterPost": { + "auth": true, + "display-name": "Set the personalization ruleset.", + "docs": "Set the personalization ruleset.", + "errors": [ + "root.BadRequestError", + "root.ContentTooLargeError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/rules" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '[{ + "if": { + "is_substring": [ + {"get": "website"}, + "ntropy" + ] + }, + "then": [ + {"set": "logo", "to": "http://example.com/favicon.ico"} + ], + "else": [ + {"remove_label": "example label"} + ] + }]' +", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.rules.set([{ + "if": { + "is_substring": [ + {"get": "website"}, + "ntropy" + ] + }, + "then": [ + {"set": "logo", "to": "http://example.com/favicon.ico"} + ], + "else": [ + {"remove_label": "example label"} + ] +}]) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": [ + { + "if": { + "is_substring": [], + }, + }, + ], + "response": { + "body": { + "key": "value", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/rules", + "request": { + "body": { + "type": "root.Filter", + }, + "content-type": "application/json", + }, + "response": { + "docs": "Successful Response", + "type": "unknown", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + filterGet: + path: /v3/rules + method: GET + auth: true + docs: Get the current personalization ruleset. + source: + openapi: ../openapi.yml + display-name: Get the current personalization ruleset. + response: + docs: Successful Response + type: root.Filter + errors: + - root.UnprocessableEntityError + examples: + - response: + body: + - if: + is_substring: [] + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/rules" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + rules = sdk.rules.get() + filterPost: + path: /v3/rules + method: POST + auth: true + docs: Set the personalization ruleset. + source: + openapi: ../openapi.yml + display-name: Set the personalization ruleset. + request: + body: + type: root.Filter + content-type: application/json + response: + docs: Successful Response + type: unknown + errors: + - root.BadRequestError + - root.ContentTooLargeError + - root.UnprocessableEntityError + examples: + - request: + - if: + is_substring: [] + response: + body: + key: value + code-samples: + - name: cURL + language: cURL + code: | + curl -X "POST" \ + "https://api.ntropy.com/v3/rules" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '[{ + "if": { + "is_substring": [ + {"get": "website"}, + "ntropy" + ] + }, + "then": [ + {"set": "logo", "to": "http://example.com/favicon.ico"} + ], + "else": [ + {"remove_label": "example label"} + ] + }]' + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.rules.set([{ + "if": { + "is_substring": [ + {"get": "website"}, + "ntropy" + ] + }, + "then": [ + {"set": "logo", "to": "http://example.com/favicon.ico"} + ], + "else": [ + {"remove_label": "example label"} + ] + }]) + filterAppend: + path: /v3/rules/append + method: POST + auth: true + docs: Append a rule to the personalization ruleset. + source: + openapi: ../openapi.yml + display-name: Append a rule. + request: + body: + type: root.action + content-type: application/json + response: + docs: Successful Response + type: unknown + errors: + - root.BadRequestError + - root.ContentTooLargeError + - root.UnprocessableEntityError + examples: + - request: + if: true + response: + body: + key: value + code-samples: + - name: cURL + language: cURL + code: | + curl -X "POST" \ + "https://api.ntropy.com/v3/rules/append" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{"set": "logo", "to": "http://example.com/favicon.ico"}' + - name: Python SDK + language: python + code: > + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + sdk.rules.append({"set": "logo", "to": + "http://example.com/favicon.ico"}) + filterDelete: + path: /v3/rules/{index} + method: DELETE + auth: true + docs: Delete the rule at the specified index from the personalization ruleset. + source: + openapi: ../openapi.yml + path-parameters: + index: integer + display-name: Delete a rule. + response: + docs: Successful Response + type: unknown + errors: + - root.BadRequestError + - root.UnprocessableEntityError + examples: + - path-parameters: + index: 1 + response: + body: + key: value + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "DELETE" \ + "https://api.ntropy.com/v3/rules/0" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.rules.delete(0) + filterPatch: + path: /v3/rules/{index} + method: PATCH + auth: true + docs: Modify an existing rule at the specified index on the ruleset. + source: + openapi: ../openapi.yml + path-parameters: + index: integer + display-name: Modify an existing rule. + request: + body: + type: root.action + content-type: application/json + response: + docs: Successful Response + type: unknown + errors: + - root.BadRequestError + - root.UnprocessableEntityError + examples: + - path-parameters: + index: 1 + request: + if: true + response: + body: + key: value + code-samples: + - name: cURL + language: cURL + code: | + curl -X "PATCH" \ + "https://api.ntropy.com/v3/rules/0" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{"set": "logo", "to": "http://example.com/favicon.ico"}' + - name: Python SDK + language: python + code: > + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + sdk.rules.patch(0, {"set": "logo", "to": + "http://example.com/favicon.ico"}) + source: + openapi: ../openapi.yml + display-name: Personalization +docs: | + + The Personalization API allows you to customize the output of enrichment by + uploading a set of rules. For more information, see our documentation on + [Personalization](None). +", + }, + "recurrence.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Recurrence API allows you to identify and categorize recurring patterns found in the transactions of an +[account holder](#tag/Account-Holders), such as periodic payments or subscriptions and group them +into recurrence groups. Each recurrence group contains detailed information about the pattern, +such as periodicity, amount and counterparty. + +Transactions can be added to an account holder via the [Enrichment API](#tag/Enrichment). +It is crucial that transactions are submitted with the [correct](../../../account-holders) +account holder information as the recurrence calculation relies heavily on it. + +Complete guide: [Recurrence](../../../enrichment/recurrence). +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Recurrence", + "endpoints": { + "getAccountHolderRecurringPayments": { + "auth": true, + "display-name": "Find recurring groups in a transaction history", + "docs": "Identifies and categorizes recurring patterns found in the transaction history of the account holder, such as periodic payments or subscriptions. These patterns are called recurrence groups.", + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad/recurring_groups" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +recurring_groups = sdk.account_holders.recurring_groups( + "35b927b6-6fda-40aa-93b8-95b47c2b2cad" +) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": [ + { + "average_amount": 10, + "categories": { + "accounting": "operational expenses", + "general": "outgoing - coffee shops", + }, + "counterparty": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "type": "organization", + "website": "starbucks.com", + }, + "end_date": "2024-03-30", + "id": "8efbac45-9bd5-4b67-be29-334106198c40", + "periodicity": "daily", + "periodicity_in_days": 1, + "start_date": "2024-03-01", + "total_amount": 300, + "transaction_ids": [ + "2dc6SE8A7cTQ2jUdUadCg", + "tQYAhhl0XNkl1wasacpVQ", + "NNJTqvockIdKnYxBqPlJw", + ], + }, + ], + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/account_holders/{id}/recurring_groups", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "list<root.RecurrenceGroup>", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getAccountHolderRecurringPayments: + path: /v3/account_holders/{id}/recurring_groups + method: POST + auth: true + docs: >- + Identifies and categorizes recurring patterns found in the transaction + history of the account holder, such as periodic payments or + subscriptions. These patterns are called recurrence groups. + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Find recurring groups in a transaction history + response: + docs: Successful Response + type: list<root.RecurrenceGroup> + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + - id: 8efbac45-9bd5-4b67-be29-334106198c40 + start_date: '2024-03-01' + end_date: '2024-03-30' + total_amount: 300 + average_amount: 10 + periodicity_in_days: 1 + periodicity: daily + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + categories: + general: outgoing - coffee shops + accounting: operational expenses + transaction_ids: + - 2dc6SE8A7cTQ2jUdUadCg + - tQYAhhl0XNkl1wasacpVQ + - NNJTqvockIdKnYxBqPlJw + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad/recurring_groups" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + recurring_groups = sdk.account_holders.recurring_groups( + "35b927b6-6fda-40aa-93b8-95b47c2b2cad" + ) + source: + openapi: ../openapi.yml + display-name: Recurrence +docs: > + + The Recurrence API allows you to identify and categorize recurring patterns + found in the transactions of an + + [account holder](#tag/Account-Holders), such as periodic payments or + subscriptions and group them + + into recurrence groups. Each recurrence group contains detailed information + about the pattern, + + such as periodicity, amount and counterparty. + + + Transactions can be added to an account holder via the [Enrichment + API](#tag/Enrichment). + + It is crucial that transactions are submitted with the + [correct](../../../account-holders) + + account holder information as the recurrence calculation relies heavily on it. + + + Complete guide: [Recurrence](../../../enrichment/recurrence). +", + }, + "reports.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Reports API allows you to flag transactions with incorrect fields. You can also track the progress of each +report either through the API or using [webhooks](#tag/Webhooks). +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Reports", + "endpoints": { + "deleteReport": { + "auth": true, + "display-name": "Delete a report", + "docs": "Delete a report", + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "path-parameters": { + "id": "id", + }, + }, + ], + "method": "DELETE", + "pagination": undefined, + "path": "/v3/reports/{id}", + "path-parameters": { + "id": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getReport": { + "auth": true, + "display-name": "Retrieve a report", + "docs": "Retrieve a report", + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/reports/a652285d-de1b-4a6f-b6ce-45efa9be7952" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +report = sdk.reports.get("a652285d-de1b-4a6f-b6ce-45efa9be7952") + ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "created_at": "2024-10-03T02:53:30Z", + "description": "lorem ipsum", + "fields": [ + ".entities.counterparty", + ], + "id": "a652285d-de1b-4a6f-b6ce-45efa9be7952", + "rejection_reason": "rejection_reason", + "status": "open", + "transaction_id": "xbx8YP14g565Xk", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/reports/{id}", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.Report", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getReports": { + "auth": true, + "display-name": "List all reports", + "docs": "List all reports", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/reports" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +reports = sdk.reports.list() + ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "data": [ + { + "created_at": "2024-10-03T02:53:30Z", + "description": "lorem ipsum", + "fields": [ + ".entities.counterparty", + ], + "id": "a652285d-de1b-4a6f-b6ce-45efa9be7952", + "rejection_reason": "rejection_reason", + "status": "open", + "transaction_id": "xbx8YP14g565Xk", + }, + ], + "next_cursor": "next_cursor", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/reports", + "request": { + "name": "GetReportsV3ReportsGetRequest", + "query-parameters": { + "created_after": { + "docs": "Only return report older or equal than this date", + "type": "optional<datetime>", + }, + "created_before": { + "docs": "Only return report newer than this date", + "type": "optional<datetime>", + }, + "cursor": { + "docs": "Starting point for the set of report", + "type": "optional<string>", + }, + "limit": { + "docs": "The limit of report to be returned", + "type": "optional<integer>", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": 50, + "min": 1, + "multipleOf": undefined, + }, + }, + "status": { + "docs": "If specified, only return reports with this status", + "type": "optional<root.ReportStatus>", + }, + }, + }, + "response": { + "docs": "Successful Response", + "type": "root.PagedResponseReport", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "postReport": { + "auth": true, + "display-name": "Create a report", + "docs": "Report a transaction with incorrect fields.", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/reports" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "transaction_id": "xbx8YP14g565Xk", + "description": "lorem ipsum", + "fields": [ + ".entities.counterparty" + ] + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +report = sdk.reports.create( + transaction_id="xbx8YP14g565Xk", + description="lorem ipsum", + fields=['.entities.counterparty'], +) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": { + "description": "lorem ipsum", + "fields": [ + ".entities.counterparty", + ], + "transaction_id": "xbx8YP14g565Xk", + }, + "response": { + "body": { + "created_at": "2024-10-03T02:53:30Z", + "description": "lorem ipsum", + "fields": [ + ".entities.counterparty", + ], + "id": "a652285d-de1b-4a6f-b6ce-45efa9be7952", + "rejection_reason": "rejection_reason", + "status": "open", + "transaction_id": "xbx8YP14g565Xk", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/reports", + "request": { + "body": { + "properties": { + "description": { + "docs": "A description of what is wrong in the transaction", + "type": "string", + }, + "fields": { + "docs": "A list of the fields that are incorrect", + "type": "list<string>", + }, + "transaction_id": { + "docs": "The unique identifier of the transaction", + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": 1, + "pattern": undefined, + }, + }, + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "ReportBase", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "The newly created report", + "type": "root.Report", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getReports: + path: /v3/reports + method: GET + auth: true + docs: List all reports + source: + openapi: ../openapi.yml + display-name: List all reports + request: + name: GetReportsV3ReportsGetRequest + query-parameters: + created_after: + type: optional<datetime> + docs: Only return report older or equal than this date + created_before: + type: optional<datetime> + docs: Only return report newer than this date + cursor: + type: optional<string> + docs: Starting point for the set of report + limit: + type: optional<integer> + docs: The limit of report to be returned + validation: + min: 1 + max: 50 + status: + type: optional<root.ReportStatus> + docs: If specified, only return reports with this status + response: + docs: Successful Response + type: root.PagedResponseReport + errors: + - root.UnprocessableEntityError + examples: + - response: + body: + next_cursor: next_cursor + data: + - transaction_id: xbx8YP14g565Xk + description: lorem ipsum + fields: + - .entities.counterparty + id: a652285d-de1b-4a6f-b6ce-45efa9be7952 + created_at: '2024-10-03T02:53:30Z' + status: open + rejection_reason: rejection_reason + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/reports" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + reports = sdk.reports.list() + + postReport: + path: /v3/reports + method: POST + auth: true + docs: Report a transaction with incorrect fields. + source: + openapi: ../openapi.yml + display-name: Create a report + request: + name: ReportBase + body: + properties: + transaction_id: + type: string + docs: The unique identifier of the transaction + validation: + minLength: 1 + description: + type: string + docs: A description of what is wrong in the transaction + fields: + docs: A list of the fields that are incorrect + type: list<string> + content-type: application/json + response: + docs: The newly created report + type: root.Report + errors: + - root.UnprocessableEntityError + examples: + - request: + transaction_id: xbx8YP14g565Xk + description: lorem ipsum + fields: + - .entities.counterparty + response: + body: + transaction_id: xbx8YP14g565Xk + description: lorem ipsum + fields: + - .entities.counterparty + id: a652285d-de1b-4a6f-b6ce-45efa9be7952 + created_at: '2024-10-03T02:53:30Z' + status: open + rejection_reason: rejection_reason + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/reports" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "transaction_id": "xbx8YP14g565Xk", + "description": "lorem ipsum", + "fields": [ + ".entities.counterparty" + ] + }]' + + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + report = sdk.reports.create( + transaction_id="xbx8YP14g565Xk", + description="lorem ipsum", + fields=['.entities.counterparty'], + ) + getReport: + path: /v3/reports/{id} + method: GET + auth: true + docs: Retrieve a report + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve a report + response: + docs: Successful Response + type: root.Report + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + transaction_id: xbx8YP14g565Xk + description: lorem ipsum + fields: + - .entities.counterparty + id: a652285d-de1b-4a6f-b6ce-45efa9be7952 + created_at: '2024-10-03T02:53:30Z' + status: open + rejection_reason: rejection_reason + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/reports/a652285d-de1b-4a6f-b6ce-45efa9be7952" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + report = sdk.reports.get("a652285d-de1b-4a6f-b6ce-45efa9be7952") + + deleteReport: + path: /v3/reports/{id} + method: DELETE + auth: true + docs: Delete a report + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Delete a report + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + source: + openapi: ../openapi.yml + display-name: Reports +docs: > + + The Reports API allows you to flag transactions with incorrect fields. You can + also track the progress of each + + report either through the API or using [webhooks](#tag/Webhooks). +", + }, + "transactions.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Transaction API allows you to manage, retrieve and search through enriched transactions. A transaction contains +both the enrichment fields and the original input fields. They are made available after being +[enriched](#tag/Enrichment). +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Transactions", + "endpoints": { + "deleteTransaction": { + "auth": true, + "display-name": "Deletes a transaction", + "docs": "Deleting a transaction will also delete it from our systems. This operation is permanent.", + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "DELETE" \ + "https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +tx = sdk.transactions.delete("xbx8YP14g565Xk") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + }, + ], + "method": "DELETE", + "pagination": undefined, + "path": "/v3/transactions/{id}", + "path-parameters": { + "id": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getTransaction": { + "auth": true, + "display-name": "Retrieve a transaction", + "docs": undefined, + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +tx = sdk.transactions.get("xbx8YP14g565Xk") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "amount": 10, + "categories": { + "accounting": "operational expenses", + "general": "outgoing - coffee shops", + }, + "created_at": "2024-03-30T00:00:00Z", + "currency": "USD", + "date": "2024-03-30", + "description": "SQ* STARBUCKS NW 43RD", + "entities": { + "counterparty": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "type": "organization", + "website": "starbucks.com", + }, + "intermediaries": [ + { + "id": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "logo": "https://logos.ntropy.com/squareup.com", + "mccs": [ + 1, + ], + "name": "Square", + "type": "payment_processor", + "website": "squareup.com", + }, + ], + }, + "entry_type": "outgoing", + "error": { + "code": "account_holder_not_found", + "message": "message", + }, + "id": "xbx8YP14g565Xk", + "location": { + "raw_address": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "structured": { + "apple_maps_url": "https://maps.apple.com/?q=29.704558,-82.389277", + "city": "Gainesville", + "country": "United States", + "country_code": "US", + "google_maps_url": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "latitude": 29.704558, + "longitude": -82.389277, + "postcode": "32653", + "state": "Florida", + "store_number": "store_number", + "street": "Nw 43rd Street 5480", + }, + }, + "recurrence": { + "type": "recurring", + }, + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/transactions/{id}", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.Transaction", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "listTransactions": { + "auth": true, + "display-name": "List all transactions", + "docs": "Return a list of enriched transactions starting with the most recent one.", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/transactions" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +for tx in sdk.transactions.list().auto_paginate(): + ... ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "data": [ + { + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "amount": 10, + "categories": { + "general": "outgoing - coffee shops", + }, + "created_at": "2024-03-30T00:00:00Z", + "currency": "USD", + "date": "2024-03-30", + "description": "SQ* STARBUCKS NW 43RD", + "entities": { + "counterparty": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "type": "organization", + "website": "starbucks.com", + }, + "intermediaries": [ + { + "id": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "logo": "https://logos.ntropy.com/squareup.com", + "mccs": [ + 1, + ], + "name": "Square", + "type": "payment_processor", + "website": "squareup.com", + }, + ], + }, + "entry_type": "outgoing", + "error": { + "code": "account_holder_not_found", + "message": "message", + }, + "id": "xbx8YP14g565Xk", + "location": { + "raw_address": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "structured": { + "apple_maps_url": "https://maps.apple.com/?q=29.704558,-82.389277", + "city": "Gainesville", + "country": "United States", + "country_code": "US", + "google_maps_url": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "latitude": 29.704558, + "longitude": -82.389277, + "postcode": "32653", + "state": "Florida", + "street": "Nw 43rd Street 5480", + }, + }, + "recurrence": { + "type": "recurring", + }, + }, + ], + "next_cursor": "XjdHaksD", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/transactions", + "request": { + "name": "ListTransactionsV3TransactionsGetRequest", + "query-parameters": { + "account_holder_id": { + "docs": "If specified, only return the transactions of this account holder", + "type": "optional<string>", + }, + "created_after": { + "docs": "Only return transactions older or equal than this date", + "type": "optional<datetime>", + }, + "created_before": { + "docs": "Only return transactions newer than this date", + "type": "optional<datetime>", + }, + "cursor": { + "docs": "Starting point for the set of transactions", + "type": "optional<string>", + }, + "limit": { + "docs": "The limit of transactions to be returned", + "type": "optional<integer>", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": 500, + "min": 1, + "multipleOf": undefined, + }, + }, + }, + }, + "response": { + "docs": "Successful Response", + "type": "root.PagedResponseTransaction", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "postTransactions": { + "auth": true, + "display-name": "Synchronously enrich transactions", + "docs": "Enriches a list of transactions in synchronous fashion. The enriched transactions returned in +the order that they were submitted. Webhook events are not triggered for this operation. + +This endpoint supports up to 1000 transactions. + +If you want more throughput and live updates refer to the +[async enrichment endpoint](../batches/post-batch).", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/transactions" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '[{ + "id": "xbx8YP14g565Xk", + "description": "SQ* STARBUCKS NW 43RD", + "date": "2024-03-30", + "amount": 10.0, + "entry_type": "outgoing", + "currency": "USD", + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "location": { + "country": "US" + } + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK, TransactionInput, LocationInput + +sdk = SDK("cd1H...Wmhl") +enriched = sdk.transactions.create([ + TransactionInput( + id="xbx8YP14g565Xk", + description="SQ* STARBUCKS NW 43RD", + account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad", + amount=10.0, + entry_type="outgoing", + date="2024-03-30", + currency="USD", + location=LocationInput( + country="US", + ) + ) +]) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": { + "transactions": [ + { + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "amount": 10, + "currency": "USD", + "date": "2024-03-30", + "description": "SQ* STARBUCKS NW 43RD", + "entry_type": "outgoing", + "id": "xbx8YP14g565Xk", + "location": { + "country": "US", + }, + }, + ], + }, + "response": { + "body": { + "transactions": [ + { + "categories": { + "general": "outgoing - coffee shops", + }, + "created_at": "2024-03-30T00:00:00Z", + "entities": { + "counterparty": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "type": "organization", + "website": "starbucks.com", + }, + "intermediaries": [ + { + "id": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "logo": "https://logos.ntropy.com/squareup.com", + "mccs": [ + 1, + ], + "name": "Square", + "type": "payment_processor", + "website": "squareup.com", + }, + ], + }, + "error": { + "code": "account_holder_not_found", + "message": "message", + }, + "id": "xbx8YP14g565Xk", + "location": { + "raw_address": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "structured": { + "apple_maps_url": "https://maps.apple.com/?q=29.704558,-82.389277", + "city": "Gainesville", + "country": "United States", + "country_code": "US", + "google_maps_url": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "latitude": 29.704558, + "longitude": -82.389277, + "postcode": "32653", + "state": "Florida", + "street": "Nw 43rd Street 5480", + }, + }, + }, + ], + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/transactions", + "request": { + "body": { + "properties": { + "transactions": { + "type": "list<root.TransactionInput>", + }, + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "SyncEnrichmentInput", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Enriched transactions.", + "type": "root.SyncEnrichmentOutput", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "setTransactionAh": { + "auth": true, + "display-name": "Assign a transaction to an account holder", + "docs": "Changes the account holder associated with the transaction. The old and new account holder must share the same categories", + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad" + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.transactions.assign( + transaction_id="xbx8YP14g565Xk", + account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad" +) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "request": { + "account_holder_id": "account_holder_id", + }, + "response": { + "body": { + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "amount": 10, + "categories": { + "accounting": "operational expenses", + "general": "outgoing - coffee shops", + }, + "created_at": "2024-03-30T00:00:00Z", + "currency": "USD", + "date": "2024-03-30", + "description": "SQ* STARBUCKS NW 43RD", + "entities": { + "counterparty": { + "id": "d4bc3c80-ec1a-3da2-836e-2a4ca4758be5", + "logo": "https://logos.ntropy.com/starbucks.com", + "mccs": [ + 5814, + ], + "name": "Starbucks", + "type": "organization", + "website": "starbucks.com", + }, + "intermediaries": [ + { + "id": "916bc837-55ef-3106-88f6-5a8269ca9f2a", + "logo": "https://logos.ntropy.com/squareup.com", + "mccs": [ + 1, + ], + "name": "Square", + "type": "payment_processor", + "website": "squareup.com", + }, + ], + }, + "entry_type": "outgoing", + "error": { + "code": "account_holder_not_found", + "message": "message", + }, + "id": "xbx8YP14g565Xk", + "location": { + "raw_address": "Nw 43rd Street 5480, Gainesville, Florida 32653, US", + "structured": { + "apple_maps_url": "https://maps.apple.com/?q=29.704558,-82.389277", + "city": "Gainesville", + "country": "United States", + "country_code": "US", + "google_maps_url": "https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277", + "latitude": 29.704558, + "longitude": -82.389277, + "postcode": "32653", + "state": "Florida", + "store_number": "store_number", + "street": "Nw 43rd Street 5480", + }, + }, + "recurrence": { + "type": "recurring", + }, + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/transactions/{id}/assign", + "path-parameters": { + "id": "string", + }, + "request": { + "body": { + "properties": { + "account_holder_id": "string", + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "BodySetTransactionAhV3TransactionsIdAssignPost", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Successful Response", + "type": "root.Transaction", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getTransaction: + path: /v3/transactions/{id} + method: GET + auth: true + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve a transaction + response: + docs: Successful Response + type: root.Transaction + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10 + entry_type: outgoing + currency: USD + entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: + - 1 + type: payment_processor + categories: + general: outgoing - coffee shops + accounting: operational expenses + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: >- + https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + store_number: store_number + error: + code: account_holder_not_found + message: message + created_at: '2024-03-30T00:00:00Z' + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + recurrence: + type: recurring + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + tx = sdk.transactions.get("xbx8YP14g565Xk") + deleteTransaction: + path: /v3/transactions/{id} + method: DELETE + auth: true + docs: >- + Deleting a transaction will also delete it from our systems. This + operation is permanent. + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Deletes a transaction + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "DELETE" \ + "https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + tx = sdk.transactions.delete("xbx8YP14g565Xk") + listTransactions: + path: /v3/transactions + method: GET + auth: true + docs: >- + Return a list of enriched transactions starting with the most recent + one. + source: + openapi: ../openapi.yml + display-name: List all transactions + request: + name: ListTransactionsV3TransactionsGetRequest + query-parameters: + created_after: + type: optional<datetime> + docs: Only return transactions older or equal than this date + created_before: + type: optional<datetime> + docs: Only return transactions newer than this date + cursor: + type: optional<string> + docs: Starting point for the set of transactions + limit: + type: optional<integer> + docs: The limit of transactions to be returned + validation: + min: 1 + max: 500 + account_holder_id: + type: optional<string> + docs: If specified, only return the transactions of this account holder + response: + docs: Successful Response + type: root.PagedResponseTransaction + errors: + - root.UnprocessableEntityError + examples: + - response: + body: + next_cursor: XjdHaksD + data: + - id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10 + entry_type: outgoing + currency: USD + entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: + - 1 + type: payment_processor + categories: + general: outgoing - coffee shops + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: >- + https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + error: + code: account_holder_not_found + message: message + created_at: '2024-03-30T00:00:00Z' + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + recurrence: + type: recurring + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/transactions" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + for tx in sdk.transactions.list().auto_paginate(): + ... + postTransactions: + path: /v3/transactions + method: POST + auth: true + docs: >- + Enriches a list of transactions in synchronous fashion. The enriched + transactions returned in + + the order that they were submitted. Webhook events are not triggered for + this operation. + + + This endpoint supports up to 1000 transactions. + + + If you want more throughput and live updates refer to the + + [async enrichment endpoint](../batches/post-batch). + source: + openapi: ../openapi.yml + display-name: Synchronously enrich transactions + request: + name: SyncEnrichmentInput + body: + properties: + transactions: + type: list<root.TransactionInput> + content-type: application/json + response: + docs: Enriched transactions. + type: root.SyncEnrichmentOutput + errors: + - root.UnprocessableEntityError + examples: + - request: + transactions: + - id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10 + entry_type: outgoing + currency: USD + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + location: + country: US + response: + body: + transactions: + - entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: + - 1 + type: payment_processor + categories: + general: outgoing - coffee shops + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: >- + https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + error: + code: account_holder_not_found + message: message + created_at: '2024-03-30T00:00:00Z' + id: xbx8YP14g565Xk + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/transactions" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '[{ + "id": "xbx8YP14g565Xk", + "description": "SQ* STARBUCKS NW 43RD", + "date": "2024-03-30", + "amount": 10.0, + "entry_type": "outgoing", + "currency": "USD", + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad", + "location": { + "country": "US" + } + }]' + + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK, TransactionInput, LocationInput + + sdk = SDK("cd1H...Wmhl") + enriched = sdk.transactions.create([ + TransactionInput( + id="xbx8YP14g565Xk", + description="SQ* STARBUCKS NW 43RD", + account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad", + amount=10.0, + entry_type="outgoing", + date="2024-03-30", + currency="USD", + location=LocationInput( + country="US", + ) + ) + ]) + setTransactionAh: + path: /v3/transactions/{id}/assign + method: POST + auth: true + docs: >- + Changes the account holder associated with the transaction. The old and + new account holder must share the same categories + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Assign a transaction to an account holder + request: + name: BodySetTransactionAhV3TransactionsIdAssignPost + body: + properties: + account_holder_id: string + content-type: application/json + response: + docs: Successful Response + type: root.Transaction + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + request: + account_holder_id: account_holder_id + response: + body: + id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10 + entry_type: outgoing + currency: USD + entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: + - 1 + type: payment_processor + categories: + general: outgoing - coffee shops + accounting: operational expenses + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: >- + https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + store_number: store_number + error: + code: account_holder_not_found + message: message + created_at: '2024-03-30T00:00:00Z' + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + recurrence: + type: recurring + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "account_holder_id": "35b927b6-6fda-40aa-93b8-95b47c2b2cad" + }]' + + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.transactions.assign( + transaction_id="xbx8YP14g565Xk", + account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad" + ) + source: + openapi: ../openapi.yml + display-name: Transactions +docs: > + + The Transaction API allows you to manage, retrieve and search through enriched + transactions. A transaction contains + + both the enrichment fields and the original input fields. They are made + available after being + + [enriched](#tag/Enrichment). +", + }, + "webhooks.yml": { + "absoluteFilepath": "/DUMMY_PATH", + "contents": { + "docs": " +The Webhooks API allows you to receive notifications when certain events occur, +such as when a batch or bank statement finishes processing. + +When an event occurs, Ntropy will make a POST request to the `url` of the +webhook. If you specified a `token` when creating the webhook, this string will +be included in the `X-Ntropy-Token` header. The webhook call has a timeout limit of 10 +seconds, so any processing of the event +", + "imports": { + "root": "__package__.yml", + }, + "service": { + "auth": false, + "base-path": "", + "display-name": "Webhooks", + "endpoints": { + "deleteWebhook": { + "auth": true, + "display-name": "Delete a webhook", + "docs": "Delete a webhook", + "errors": [ + "root.NotFoundError", + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "DELETE" \ + "https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.webhooks.delete("e94a150d-40af-4e96-8aa7-2948a6b4d8d3") ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + }, + ], + "method": "DELETE", + "pagination": undefined, + "path": "/v3/webhooks/{id}", + "path-parameters": { + "id": "string", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getWebhook": { + "auth": true, + "display-name": "Retrieve a webhook", + "docs": "Retrieve a webhook", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +webhook = sdk.webhooks.get("e94a150d-40af-4e96-8aa7-2948a6b4d8d3") +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "response": { + "body": { + "created_at": "2024-10-03T02:53:30Z", + "enabled": true, + "events": [ + "batches.completed", + "batches.error", + ], + "id": "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + "token": "hunter2", + "url": "https://example.com:5689", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/webhooks/{id}", + "path-parameters": { + "id": "string", + }, + "response": { + "docs": "Successful Response", + "type": "root.Webhook", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "getWebhooks": { + "auth": true, + "display-name": "List all webhooks", + "docs": "List all webhooks", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "GET" \ + "https://api.ntropy.com/v3/webhooks" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +for webhook in sdk.webhooks.list().auto_paginate(): + ... ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "response": { + "body": { + "data": [ + { + "created_at": "2024-10-03T02:53:30Z", + "enabled": true, + "events": [ + "batches.completed", + "batches.error", + ], + "id": "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + "token": "hunter2", + "url": "https://example.com:5689", + }, + ], + "next_cursor": "XjdHaksD", + }, + }, + }, + ], + "method": "GET", + "pagination": undefined, + "path": "/v3/webhooks", + "response": { + "docs": "Successful Response", + "type": "root.PagedResponseWebhook", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "patchWebhook": { + "auth": true, + "display-name": "Update a webhook", + "docs": "Update a webhook. Fields that aren't specified in the body will remain unchanged", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "events": [ + "batches.completed", + "batches.error" + ], + "enabled": false + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +wh = sdk.webhooks.patch( + "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + events=['batches.completed', 'batches.error'], + enabled=False, +) +", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "path-parameters": { + "id": "id", + }, + "request": {}, + "response": { + "body": { + "created_at": "2024-10-03T02:53:30Z", + "enabled": true, + "events": [ + "batches.completed", + "batches.error", + ], + "id": "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + "token": "hunter2", + "url": "https://example.com:5689", + }, + }, + }, + ], + "method": "PATCH", + "pagination": undefined, + "path": "/v3/webhooks/{id}", + "path-parameters": { + "id": "string", + }, + "request": { + "body": { + "properties": { + "enabled": { + "docs": "Whether the webhook is enabled or not.", + "type": "optional<boolean>", + }, + "events": { + "docs": "A list of events that this webhook subscribes to", + "type": "optional<list<WebhookPatchEventsItem>>", + }, + "token": { + "docs": "A secret string used to authenticate the webhook. This value will be included in the `X-Ntropy-Token` header when sending requests to the webhook", + "type": "optional<string>", + "validation": { + "format": undefined, + "maxLength": 128, + "minLength": undefined, + "pattern": undefined, + }, + }, + "url": { + "docs": "The URL of the webhook", + "type": "optional<string>", + "validation": { + "format": "uri", + "maxLength": 1024, + "minLength": 1, + "pattern": undefined, + }, + }, + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "WebhookPatch", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Successful Response", + "type": "root.Webhook", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "postWebhook": { + "auth": true, + "display-name": "Create a webhook", + "docs": "Create a webhook to be called when certain events occur.", + "errors": [ + "root.UnprocessableEntityError", + ], + "examples": [ + { + "code-samples": [ + { + "code": "curl -X "POST" \ + "https://api.ntropy.com/v3/webhooks" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "url": "https://example.com:5689", + "events": [ + "batches.completed", + "batches.error" + ], + "token": "hunter2" + }]' + ", + "docs": undefined, + "install": undefined, + "language": "cURL", + "name": "cURL", + }, + { + "code": "from ntropy_sdk import SDK + +sdk = SDK("cd1H...Wmhl") +sdk.webhooks.create( + url="https://example.com:5689", + events="['batches.completed', 'batches.error']", + token="hunter2", +) ", + "docs": undefined, + "install": undefined, + "language": "python", + "name": "Python SDK", + }, + ], + "request": { + "events": [ + "reports.resolved", + ], + "url": "url", + }, + "response": { + "body": { + "created_at": "2024-10-03T02:53:30Z", + "enabled": true, + "events": [ + "batches.completed", + "batches.error", + ], + "id": "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + "token": "hunter2", + "url": "https://example.com:5689", + }, + }, + }, + ], + "method": "POST", + "pagination": undefined, + "path": "/v3/webhooks", + "request": { + "body": { + "properties": { + "events": { + "docs": "A list of events that this webhook subscribes to", + "type": "list<WebhookBaseEventsItem>", + }, + "token": { + "docs": "A secret string used to authenticate the webhook. This value will be included in the `X-Ntropy-Token` header when sending requests to the webhook", + "type": "optional<string>", + "validation": { + "format": undefined, + "maxLength": 128, + "minLength": undefined, + "pattern": undefined, + }, + }, + "url": { + "docs": "The URL of the webhook", + "type": "string", + "validation": { + "format": "uri", + "maxLength": 1024, + "minLength": 1, + "pattern": undefined, + }, + }, + }, + }, + "content-type": "application/json", + "headers": undefined, + "name": "WebhookBase", + "path-parameters": undefined, + "query-parameters": undefined, + }, + "response": { + "docs": "Successful Response", + "type": "root.Webhook", + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + "source": { + "openapi": "../openapi.yml", + }, + }, + "types": { + "WebhookBaseEventsItem": { + "enum": [ + { + "name": "ReportsResolved", + "value": "reports.resolved", + }, + { + "name": "ReportsRejected", + "value": "reports.rejected", + }, + { + "name": "ReportsPending", + "value": "reports.pending", + }, + { + "name": "BankStatementsCompleted", + "value": "bank_statements.completed", + }, + { + "name": "BankStatementsError", + "value": "bank_statements.error", + }, + { + "name": "BatchesCompleted", + "value": "batches.completed", + }, + { + "name": "BatchesError", + "value": "batches.error", + }, + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + "WebhookPatchEventsItem": { + "enum": [ + { + "name": "ReportsResolved", + "value": "reports.resolved", + }, + { + "name": "ReportsRejected", + "value": "reports.rejected", + }, + { + "name": "ReportsPending", + "value": "reports.pending", + }, + { + "name": "BankStatementsCompleted", + "value": "bank_statements.completed", + }, + { + "name": "BankStatementsError", + "value": "bank_statements.error", + }, + { + "name": "BatchesCompleted", + "value": "batches.completed", + }, + { + "name": "BatchesError", + "value": "batches.error", + }, + ], + "source": { + "openapi": "../openapi.yml", + }, + }, + }, + }, + "rawContents": "imports: + root: __package__.yml +service: + auth: false + base-path: '' + endpoints: + getWebhooks: + path: /v3/webhooks + method: GET + auth: true + docs: List all webhooks + source: + openapi: ../openapi.yml + display-name: List all webhooks + response: + docs: Successful Response + type: root.PagedResponseWebhook + errors: + - root.UnprocessableEntityError + examples: + - response: + body: + next_cursor: XjdHaksD + data: + - url: https://example.com:5689 + events: + - batches.completed + - batches.error + token: hunter2 + id: e94a150d-40af-4e96-8aa7-2948a6b4d8d3 + created_at: '2024-10-03T02:53:30Z' + enabled: true + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/webhooks" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + for webhook in sdk.webhooks.list().auto_paginate(): + ... + postWebhook: + path: /v3/webhooks + method: POST + auth: true + docs: Create a webhook to be called when certain events occur. + source: + openapi: ../openapi.yml + display-name: Create a webhook + request: + name: WebhookBase + body: + properties: + url: + type: string + docs: The URL of the webhook + validation: + format: uri + minLength: 1 + maxLength: 1024 + events: + docs: A list of events that this webhook subscribes to + type: list<WebhookBaseEventsItem> + token: + type: optional<string> + docs: >- + A secret string used to authenticate the webhook. This value + will be included in the `X-Ntropy-Token` header when sending + requests to the webhook + validation: + maxLength: 128 + content-type: application/json + response: + docs: Successful Response + type: root.Webhook + errors: + - root.UnprocessableEntityError + examples: + - request: + url: url + events: + - reports.resolved + response: + body: + url: https://example.com:5689 + events: + - batches.completed + - batches.error + token: hunter2 + id: e94a150d-40af-4e96-8aa7-2948a6b4d8d3 + created_at: '2024-10-03T02:53:30Z' + enabled: true + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/webhooks" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "url": "https://example.com:5689", + "events": [ + "batches.completed", + "batches.error" + ], + "token": "hunter2" + }]' + + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.webhooks.create( + url="https://example.com:5689", + events="['batches.completed', 'batches.error']", + token="hunter2", + ) + getWebhook: + path: /v3/webhooks/{id} + method: GET + auth: true + docs: Retrieve a webhook + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Retrieve a webhook + response: + docs: Successful Response + type: root.Webhook + errors: + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + response: + body: + url: https://example.com:5689 + events: + - batches.completed + - batches.error + token: hunter2 + id: e94a150d-40af-4e96-8aa7-2948a6b4d8d3 + created_at: '2024-10-03T02:53:30Z' + enabled: true + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "GET" \ + "https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: > + from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + webhook = + sdk.webhooks.get("e94a150d-40af-4e96-8aa7-2948a6b4d8d3") + deleteWebhook: + path: /v3/webhooks/{id} + method: DELETE + auth: true + docs: Delete a webhook + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Delete a webhook + errors: + - root.NotFoundError + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "DELETE" \ + "https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" + - name: Python SDK + language: python + code: |- + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + sdk.webhooks.delete("e94a150d-40af-4e96-8aa7-2948a6b4d8d3") + patchWebhook: + path: /v3/webhooks/{id} + method: PATCH + auth: true + docs: >- + Update a webhook. Fields that aren't specified in the body will remain + unchanged + source: + openapi: ../openapi.yml + path-parameters: + id: string + display-name: Update a webhook + request: + name: WebhookPatch + body: + properties: + url: + type: optional<string> + docs: The URL of the webhook + validation: + format: uri + minLength: 1 + maxLength: 1024 + events: + type: optional<list<WebhookPatchEventsItem>> + docs: A list of events that this webhook subscribes to + token: + type: optional<string> + docs: >- + A secret string used to authenticate the webhook. This value + will be included in the `X-Ntropy-Token` header when sending + requests to the webhook + validation: + maxLength: 128 + enabled: + type: optional<boolean> + docs: Whether the webhook is enabled or not. + content-type: application/json + response: + docs: Successful Response + type: root.Webhook + errors: + - root.UnprocessableEntityError + examples: + - path-parameters: + id: id + request: {} + response: + body: + url: https://example.com:5689 + events: + - batches.completed + - batches.error + token: hunter2 + id: e94a150d-40af-4e96-8aa7-2948a6b4d8d3 + created_at: '2024-10-03T02:53:30Z' + enabled: true + code-samples: + - name: cURL + language: cURL + code: |- + curl -X "POST" \ + "https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3" \ + -H "Accept: application/json" \ + -H "X-API-KEY: cd1H...Wmhl" \ + -H "Content-Type: application/json" \ + -d '{ + "events": [ + "batches.completed", + "batches.error" + ], + "enabled": false + }]' + + - name: Python SDK + language: python + code: | + from ntropy_sdk import SDK + + sdk = SDK("cd1H...Wmhl") + wh = sdk.webhooks.patch( + "e94a150d-40af-4e96-8aa7-2948a6b4d8d3", + events=['batches.completed', 'batches.error'], + enabled=False, + ) + source: + openapi: ../openapi.yml + display-name: Webhooks +docs: > + + The Webhooks API allows you to receive notifications when certain events + occur, + + such as when a batch or bank statement finishes processing. + + + When an event occurs, Ntropy will make a POST request to the `url` of the + + webhook. If you specified a `token` when creating the webhook, this string + will + + be included in the `X-Ntropy-Token` header. The webhook call has a timeout + limit of 10 + + seconds, so any processing of the event +types: + WebhookBaseEventsItem: + enum: + - value: reports.resolved + name: ReportsResolved + - value: reports.rejected + name: ReportsRejected + - value: reports.pending + name: ReportsPending + - value: bank_statements.completed + name: BankStatementsCompleted + - value: bank_statements.error + name: BankStatementsError + - value: batches.completed + name: BatchesCompleted + - value: batches.error + name: BatchesError + source: + openapi: ../openapi.yml + WebhookPatchEventsItem: + enum: + - value: reports.resolved + name: ReportsResolved + - value: reports.rejected + name: ReportsRejected + - value: reports.pending + name: ReportsPending + - value: bank_statements.completed + name: BankStatementsCompleted + - value: bank_statements.error + name: BankStatementsError + - value: batches.completed + name: BatchesCompleted + - value: batches.error + name: BatchesError + source: + openapi: ../openapi.yml +", + }, + }, + "packageMarkers": {}, + "rootApiFile": { + "contents": { + "auth": "APIKeyHeader", + "auth-schemes": { + "APIKeyHeader": { + "header": "X-Api-Key", + "name": "apiKey", + "type": "string", + }, + }, + "default-environment": "Default", + "display-name": "Ntropy Transaction API", + "environments": { + "Default": "https://api.ntropy.com", + }, + "error-discrimination": { + "strategy": "status-code", + }, + "name": "api", + }, + "defaultUrl": undefined, + "rawContents": "name: api +error-discrimination: + strategy: status-code +display-name: Ntropy Transaction API +environments: + Default: https://api.ntropy.com +default-environment: Default +auth-schemes: + APIKeyHeader: + header: X-Api-Key + name: apiKey + type: string +auth: APIKeyHeader +", + }, +} \ No newline at end of file diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/fern/fern.config.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/fern/fern.config.json new file mode 100644 index 00000000000..7980537f564 --- /dev/null +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/fern/fern.config.json @@ -0,0 +1,4 @@ +{ + "organization": "fern", + "version": "*" +} \ No newline at end of file diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/fern/generators.yml b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/fern/generators.yml new file mode 100644 index 00000000000..602118874c2 --- /dev/null +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/fern/generators.yml @@ -0,0 +1,3 @@ +api: + specs: + - openapi: ../openapi.yml diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/openapi.yml b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/openapi.yml new file mode 100644 index 00000000000..90fcd63f6fd --- /dev/null +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/openapi.yml @@ -0,0 +1,4145 @@ +openapi: 3.1.0 +info: + title: Ntropy Transaction API + contact: + name: API Support + url: https://ntropy.com/developers + email: api@ntropy.com + version: '3.0' +servers: +- url: https://api.ntropy.com + description: Production server (uses live data). +paths: + /v3/transactions/{id}: + get: + tags: + - Transactions + summary: Retrieve a transaction + operationId: get_transaction_v3_transactions__id__get + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Transaction' + '404': + description: Transaction with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + tx = sdk.transactions.get("xbx8YP14g565Xk") ' + delete: + tags: + - Transactions + summary: Deletes a transaction + description: Deleting a transaction will also delete it from our systems. This + operation is permanent. + operationId: delete_transaction_v3_transactions__id__delete + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '204': + description: Deletion successful + '404': + description: Transaction with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"DELETE\" \\\n \"https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + tx = sdk.transactions.delete("xbx8YP14g565Xk") ' + /v3/transactions: + get: + tags: + - Transactions + summary: List all transactions + description: Return a list of enriched transactions starting with the most recent + one. + operationId: list_transactions_v3_transactions_get + parameters: + - description: Only return transactions older or equal than this date + required: false + schema: + type: string + format: date-time + title: Created After + description: Only return transactions older or equal than this date + name: created_after + in: query + - description: Only return transactions newer than this date + required: false + schema: + type: string + format: date-time + title: Created Before + description: Only return transactions newer than this date + name: created_before + in: query + - description: Starting point for the set of transactions + required: false + schema: + type: string + title: Cursor + description: Starting point for the set of transactions + name: cursor + in: query + - description: The limit of transactions to be returned + required: false + schema: + type: integer + maximum: 500.0 + minimum: 1.0 + title: Limit + description: The limit of transactions to be returned + default: 25 + name: limit + in: query + - description: If specified, only return the transactions of this account holder + required: false + schema: + type: string + title: Account Holder Id + description: If specified, only return the transactions of this account + holder + name: account_holder_id + in: query + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/PagedResponse_Transaction' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/transactions\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nfor tx\ + \ in sdk.transactions.list().auto_paginate():\n ... " + post: + tags: + - Transactions + summary: Synchronously enrich transactions + description: "Enriches a list of transactions in synchronous fashion. The enriched\ + \ transactions returned in\nthe order that they were submitted. Webhook events\ + \ are not triggered for this operation. \n\nThis endpoint supports up to 1000\ + \ transactions. \n\nIf you want more throughput and live updates refer to\ + \ the \n[async enrichment endpoint](../batches/post-batch)." + operationId: post_transactions_v3_transactions_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SyncEnrichmentInput' + required: true + responses: + '200': + description: Enriched transactions. + content: + application/json: + schema: + $ref: '#/components/schemas/SyncEnrichmentOutput' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/transactions\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ \\\n -H \"Content-Type: application/json\" \\\n -d '[{\n \ + \ \"id\": \"xbx8YP14g565Xk\",\n \"description\": \"SQ* STARBUCKS\ + \ NW 43RD\",\n \"date\": \"2024-03-30\",\n \"amount\": 10.0,\n\ + \ \"entry_type\": \"outgoing\",\n \"currency\": \"USD\",\n\ + \ \"account_holder_id\": \"35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\ + ,\n \"location\": {\n \"country\": \"US\"\n }\n\ + \ }]'\n " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK, TransactionInput, LocationInput\n\nsdk\ + \ = SDK(\"cd1H...Wmhl\")\nenriched = sdk.transactions.create([\n TransactionInput(\n\ + \ id=\"xbx8YP14g565Xk\",\n description=\"SQ* STARBUCKS NW\ + \ 43RD\",\n account_holder_id=\"35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\ + ,\n amount=10.0,\n entry_type=\"outgoing\",\n date=\"\ + 2024-03-30\",\n currency=\"USD\",\n location=LocationInput(\n\ + \ country=\"US\",\n )\n )\n]) " + /v3/transactions/{id}/assign: + post: + tags: + - Transactions + summary: Assign a transaction to an account holder + description: Changes the account holder associated with the transaction. The + old and new account holder must share the same categories + operationId: set_transaction_ah_v3_transactions__id__assign_post + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Body_set_transaction_ah_v3_transactions__id__assign_post' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Transaction' + '404': + description: Transaction or account holder with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/transactions/xbx8YP14g565Xk\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \ + \ \"account_holder_id\": \"35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\n }]'\n\ + \ " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.transactions.assign(\n\ + \ transaction_id=\"xbx8YP14g565Xk\", \n account_holder_id=\"35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\ + \n) " + /v3/batches: + get: + tags: + - Batches + summary: List all batches + description: Returns a list of submitted batches starting with the most recent + one. + operationId: get_batches_v3_batches_get + parameters: + - description: Only return batches older or equal than this date + required: false + schema: + type: string + format: date-time + title: Created After + description: Only return batches older or equal than this date + name: created_after + in: query + - description: Only return batches newer than this date + required: false + schema: + type: string + format: date-time + title: Created Before + description: Only return batches newer than this date + name: created_before + in: query + - description: Starting point for the set of batches + required: false + schema: + type: string + title: Cursor + description: Starting point for the set of batches + name: cursor + in: query + - description: The limit of batches to be returned + required: false + schema: + type: integer + maximum: 50.0 + minimum: 1.0 + title: Limit + description: The limit of batches to be returned + default: 10 + name: limit + in: query + - description: If specified, only return batches with this status + required: false + schema: + allOf: + - $ref: '#/components/schemas/BatchStatus' + description: If specified, only return batches with this status + name: status + in: query + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/PagedResponse_Batch' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/batches\" \\\n\ + \ -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nfor batch in sdk.batches.list().auto_paginate():\n\ + \ ... " + post: + tags: + - Batches + summary: Submit a batch of transactions + description: "Creates a batch of transactions and enriches it in an asynchronous\ + \ fashion. A batch, representing the status of the \nenrichment progress is\ + \ returned as a result of the submission. \n\nIn order to be notified on the\ + \ status of the batch, you can setup [webhooks](../../../webhooks) and receive\ + \ \nthe respective notifications. Alternatively, you can \n[poll](../../../enrichment/introduction/#viewing-the-progress-of-a-batch)\ + \ for the status of the batch using its id.\n\nThis endpoints supports up\ + \ to 24960 transactions." + operationId: post_batch_v3_batches_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AsyncEnrichmentInput' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Batch' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/batches/\" \\\ + \n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ \\\n -H \"Content-Type: application/json\" \\\n -d '[{\n \ + \ \"id\": \"xbx8YP14g565Xk\",\n \"description\": \"SQ* STARBUCKS\ + \ NW 43RD\",\n \"date\": \"2024-03-30\",\n \"amount\": 10.0,\n\ + \ \"entry_type\": \"outgoing\",\n \"currency\": \"USD\",\n\ + \ \"account_holder_id\": \"35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\ + ,\n \"location\": {\n \"country\": \"US\"\n }\n\ + \ }]'\n " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK, TransactionInput, LocationInput\n\nsdk\ + \ = SDK(\"cd1H...Wmhl\")\nbatch = sdk.batches.create([\n TransactionInput(\n\ + \ id=\"xbx8YP14g565Xk\",\n description=\"SQ* STARBUCKS NW\ + \ 43RD\",\n account_holder_id=\"35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\ + ,\n amount=10.0,\n entry_type=\"outgoing\",\n date=\"\ + 2024-03-30\",\n currency=\"USD\",\n location=LocationInput(\n\ + \ country=\"US\",\n )\n )\n]) " + /v3/batches/{id}: + get: + tags: + - Batches + summary: Retrieve a batch + operationId: get_single_batch_v3_batches__id__get + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Batch' + '404': + description: Batch with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/batches/203613d2-83c8-4130-8809-d14206eeec20\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + batch = sdk.batches.get("f203613d2-83c8-4130-8809-d14206eeec20") ' + /v3/batches/{id}/results: + get: + tags: + - Batches + summary: Retrieve the results of a batch + description: Returns the results of the enrichment request. The resulting enriched + transactions are returned in the same order they were submitted. Results are + available after the batch has finished processing. + operationId: get_batch_results_v3_batches__id__results_get + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '200': + description: Returned batch of transaction enrichment results. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '404': + description: Batch with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/batches/203613d2-83c8-4130-8809-d14206eeec20/results\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + results = sdk.batches.wait_for_results("f203613d2-83c8-4130-8809-d14206eeec20") + + ' + /v3/bank_statements: + get: + tags: + - Bank statements + summary: List all bank statements + description: Return a list of submitted bank statements starting with the most + recent one. + operationId: get_bank_statements_v3_bank_statements_get + parameters: + - description: Only return bank statements older or equal than this date + required: false + schema: + type: string + format: date-time + title: Created After + description: Only return bank statements older or equal than this date + name: created_after + in: query + - description: Only return bank statements newer than this date + required: false + schema: + type: string + format: date-time + title: Created Before + description: Only return bank statements newer than this date + name: created_before + in: query + - description: Starting point for the set of bank statements + required: false + schema: + type: string + title: Cursor + description: Starting point for the set of bank statements + name: cursor + in: query + - description: The limit of bank statements to be returned + required: false + schema: + type: integer + maximum: 50.0 + minimum: 1.0 + title: Limit + description: The limit of bank statements to be returned + default: 10 + name: limit + in: query + - description: If specified, only return bank statements with this status + required: false + schema: + allOf: + - $ref: '#/components/schemas/DocumentStatus' + description: If specified, only return bank statements with this status + name: status + in: query + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/PagedResponse_BankStatement' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/bank_statements\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nfor bs\ + \ in sdk.bank_statements.list().auto_paginate():\n ... " + post: + tags: + - Bank statements + summary: Submit a bank statement PDF + description: Upload a PDF file and queue it for extraction. + operationId: post_bank_statement_v3_bank_statements_post + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/Body_post_bank_statement_v3_bank_statements_post' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/BankStatement' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/bank_statements\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY:\ + \ cd1H...Wmhl\" \\\n --form file=@bank_statement.pdf\n " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nwith open('bank_statement.pdf',\ + \ 'rb') as fh:\n bank_statement = sdk.bank_statements.create(fh)\n \ + \ results = sdk.bank_statement.wait_for_results(bank_statement.id) " + /v3/bank_statements/{id}: + get: + tags: + - Bank statements + summary: Retrieve a bank statement + operationId: get_bank_statement_v3_bank_statements__id__get + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/BankStatement' + '404': + description: Bank statement with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + bs = sdk.bank_statements.get("7f8dceac-2848-472d-b5c3-55cdbaf35a9b") ' + delete: + tags: + - Bank statements + summary: Deletes a bank statement + operationId: delete_bank_statement_v3_bank_statements__id__delete + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '204': + description: Deletion successful + '404': + description: Bank statement with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + /v3/bank_statements/{id}/overview: + post: + tags: + - Bank statements + summary: Quickly extract account holder, institution and first account + description: 'Extracts account holder, bank and account information extracted + from the first page of the bank statement, which is typically available before + the full results. This is a synchronous call. + + + Complete guide: [Overview](../../../bank-statements)' + operationId: get_bank_statement_statement_info_v3_bank_statements__id__overview_post + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/StatementInfo' + '404': + description: Bank statement with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b/overview\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\noverview\ + \ = sdk.bank_statements.overview(\n \"7f8dceac-2848-472d-b5c3-55cdbaf35a9b\"\ + \n) " + /v3/bank_statements/{id}/results: + get: + tags: + - Bank statements + summary: Retrieve the extraction results + description: Return the extracted account information and associated transactions + from a bank statement PDF. The results are accessible once the statement's + status is `completed`. + operationId: get_bank_statement_result_v3_bank_statements__id__results_get + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/BankStatementResults' + '404': + description: Bank statement with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/bank_statements/7f8dceac-2848-472d-b5c3-55cdbaf35a9b/results\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nbs = sdk.bank_statements.get(\"\ + 7f8dceac-2848-472d-b5c3-55cdbaf35a9b\")\nresults = sdk.bank_statements.wait_for_results(\n\ + \ \"7f8dceac-2848-472d-b5c3-55cdbaf35a9b\"\n) " + /v3/account_holders/{id}: + get: + tags: + - Account Holders + summary: Retrieve an account holder. + operationId: get_account_holder_v3_account_holders__id__get + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/AccountHolderExternal' + '404': + description: Account holder with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + ah = sdk.account_holders.get("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") ' + delete: + tags: + - Account Holders + summary: Deletes an account holder and their transactions + description: Deletes all of the transactions in the account holder's history. + This operation is permanent and irreversible + operationId: delete_account_holder_v3_account_holders__id__delete + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '204': + description: Deletion successful + '404': + description: Account holder with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"DELETE\" \\\n \"https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + ah = sdk.account_holders.delete("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") ' + /v3/account_holders: + get: + tags: + - Account Holders + summary: List all account holders. + operationId: get_account_holders_v3_account_holders_get + parameters: + - description: Only return account holders older or equal than this date + required: false + schema: + type: string + format: date-time + title: Created After + description: Only return account holders older or equal than this date + name: created_after + in: query + - description: Only return account holders newer than this date + required: false + schema: + type: string + format: date-time + title: Created Before + description: Only return account holders newer than this date + name: created_before + in: query + - description: Starting point for the set of account holders + required: false + schema: + type: string + title: Cursor + description: Starting point for the set of account holders + name: cursor + in: query + - description: The limit of account holders to be returned + required: false + schema: + type: integer + maximum: 50.0 + minimum: 1.0 + title: Limit + description: The limit of account holders to be returned + default: 10 + name: limit + in: query + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/PagedResponse_AccountHolderExternal' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + ah = sdk.account_holders.get("f35b927b6-6fda-40aa-93b8-95b47c2b2cad") ' + post: + tags: + - Account Holders + summary: Create an account holder. + operationId: create_account_holder_v3_account_holders_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AccountHolderCreate' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/AccountHolderExternal' + '400': + description: Account holder with the provided id already exists. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/account_holders\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \ + \ \"id\": \"35b927b6-6fda-40aa-93b8-95b47c2b2cad\",\n \"type\": \"\ + consumer\",\n \"name\": \"John Doe\"\n }]'\n " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nah = sdk.account_holders.create(\n\ + \ id=\"35b927b6-6fda-40aa-93b8-95b47c2b2cad\",\n type=\"consumer\"\ + ,\n name=\"John Doe\",\n) " + /v3/account_holders/{id}/recurring_groups: + post: + tags: + - Recurrence + summary: Find recurring groups in a transaction history + description: Identifies and categorizes recurring patterns found in the transaction + history of the account holder, such as periodic payments or subscriptions. + These patterns are called recurrence groups. + operationId: get_account_holder_recurring_payments_v3_account_holders__id__recurring_groups_post + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RecurrenceGroup' + type: array + title: Response Get Account Holder Recurring Payments V3 Account Holders Id Recurring + Groups Post + '404': + description: Account holder with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/account_holders/35b927b6-6fda-40aa-93b8-95b47c2b2cad/recurring_groups\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nrecurring_groups\ + \ = sdk.account_holders.recurring_groups(\n \"35b927b6-6fda-40aa-93b8-95b47c2b2cad\"\ + \n) " + /v3/webhooks: + get: + tags: + - Webhooks + summary: List all webhooks + description: List all webhooks + operationId: get_webhooks_v3_webhooks_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/PagedResponse_Webhook' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/webhooks\" \\\ + \n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nfor webhook\ + \ in sdk.webhooks.list().auto_paginate():\n ... " + post: + tags: + - Webhooks + summary: Create a webhook + description: Create a webhook to be called when certain events occur. + operationId: post_webhook_v3_webhooks_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/WebhookBase' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Webhook' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/webhooks\" \\\ + \n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \ + \ \"url\": \"https://example.com:5689\",\n \"events\": [\n \ + \ \"batches.completed\",\n \"batches.error\"\n ],\n\ + \ \"token\": \"hunter2\"\n }]'\n " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.webhooks.create(\n\ + \ url=\"https://example.com:5689\",\n events=\"['batches.completed',\ + \ 'batches.error']\",\n token=\"hunter2\",\n) " + /v3/webhooks/{id}: + get: + tags: + - Webhooks + summary: Retrieve a webhook + description: Retrieve a webhook + operationId: get_webhook_v3_webhooks__id__get + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Webhook' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + webhook = sdk.webhooks.get("e94a150d-40af-4e96-8aa7-2948a6b4d8d3") + + ' + delete: + tags: + - Webhooks + summary: Delete a webhook + description: Delete a webhook + operationId: delete_webhook_v3_webhooks__id__delete + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '204': + description: Deletion successful + '404': + description: Webhook with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"DELETE\" \\\n \"https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + sdk.webhooks.delete("e94a150d-40af-4e96-8aa7-2948a6b4d8d3") ' + patch: + tags: + - Webhooks + summary: Update a webhook + description: Update a webhook. Fields that aren't specified in the body will + remain unchanged + operationId: patch_webhook_v3_webhooks__id__patch + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/WebhookPatch' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Webhook' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/webhooks/e94a150d-40af-4e96-8aa7-2948a6b4d8d3\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \ + \ \"events\": [\n \"batches.completed\",\n \"batches.error\"\ + \n ],\n \"enabled\": false\n }]'\n " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nwh = sdk.webhooks.patch(\n\ + \ \"e94a150d-40af-4e96-8aa7-2948a6b4d8d3\",\n events=['batches.completed',\ + \ 'batches.error'],\n enabled=False,\n)\n" + /v3/rules: + get: + tags: + - Personalization + - Personalization + summary: Get the current personalization ruleset. + description: Get the current personalization ruleset. + operationId: filter_get_v3_rules_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/FilterModel' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/rules\" \\\n\ + \ -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + rules = sdk.rules.get() + + ' + post: + tags: + - Personalization + - Personalization + summary: Set the personalization ruleset. + description: Set the personalization ruleset. + operationId: filter_post_v3_rules_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FilterModel' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + description: Provided ruleset has invalid structure + '413': + description: Ruleset was larger than 50KiB + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/rules\" \\\n\ + \ -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ \\\n -H \"Content-Type: application/json\" \\\n -d '[{\n \ + \ \"if\": {\n \"is_substring\": [\n {\"get\":\ + \ \"website\"},\n \"ntropy\"\n ]\n },\n\ + \ \"then\": [\n {\"set\": \"logo\", \"to\": \"http://example.com/favicon.ico\"\ + }\n ],\n \"else\": [\n {\"remove_label\": \"example\ + \ label\"}\n ]\n }]'\n" + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.rules.set([{\n\ + \ \"if\": {\n \"is_substring\": [\n {\"get\": \"website\"\ + },\n \"ntropy\"\n ]\n },\n \"then\": [\n \ + \ {\"set\": \"logo\", \"to\": \"http://example.com/favicon.ico\"}\n ],\n\ + \ \"else\": [\n {\"remove_label\": \"example label\"}\n ]\n\ + }])\n" + /v3/rules/append: + post: + tags: + - Personalization + - Personalization + summary: Append a rule. + description: Append a rule to the personalization ruleset. + operationId: filter_append_v3_rules_append_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ActionModel' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + description: Provided rule has invalid structure + '413': + description: Ruleset after append was larger than 50KiB + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/rules/append\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ \\\n -H \"Content-Type: application/json\" \\\n -d '{\"set\": \"\ + logo\", \"to\": \"http://example.com/favicon.ico\"}'\n" + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + sdk.rules.append({"set": "logo", "to": "http://example.com/favicon.ico"}) + + ' + /v3/rules/{index}: + delete: + tags: + - Personalization + - Personalization + summary: Delete a rule. + description: Delete the rule at the specified index from the personalization + ruleset. + operationId: filter_delete_v3_rules__index__delete + parameters: + - required: true + schema: + type: integer + title: Index + name: index + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + description: Provided index does not exist in ruleset + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"DELETE\" \\\n \"https://api.ntropy.com/v3/rules/0\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + sdk.rules.delete(0) + + ' + patch: + tags: + - Personalization + - Personalization + summary: Modify an existing rule. + description: Modify an existing rule at the specified index on the ruleset. + operationId: filter_patch_v3_rules__index__patch + parameters: + - required: true + schema: + type: integer + title: Index + name: index + in: path + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ActionModel' + required: true + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + '400': + description: Provided index does not exist in ruleset + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"PATCH\" \\\n \"https://api.ntropy.com/v3/rules/0\" \\\ + \n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ \\\n -H \"Content-Type: application/json\" \\\n -d '{\"set\": \"\ + logo\", \"to\": \"http://example.com/favicon.ico\"}'\n" + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + sdk.rules.patch(0, {"set": "logo", "to": "http://example.com/favicon.ico"}) + + ' + /v3/reports: + get: + tags: + - Reports + summary: List all reports + description: List all reports + operationId: get_reports_v3_reports_get + parameters: + - description: Only return report older or equal than this date + required: false + schema: + type: string + format: date-time + title: Created After + description: Only return report older or equal than this date + name: created_after + in: query + - description: Only return report newer than this date + required: false + schema: + type: string + format: date-time + title: Created Before + description: Only return report newer than this date + name: created_before + in: query + - description: Starting point for the set of report + required: false + schema: + type: string + title: Cursor + description: Starting point for the set of report + name: cursor + in: query + - description: The limit of report to be returned + required: false + schema: + type: integer + maximum: 50.0 + minimum: 1.0 + title: Limit + description: The limit of report to be returned + default: 10 + name: limit + in: query + - description: If specified, only return reports with this status + required: false + schema: + allOf: + - $ref: '#/components/schemas/ReportStatus' + description: If specified, only return reports with this status + name: status + in: query + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/PagedResponse_Report_' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/reports\" \\\n\ + \ -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nreports\ + \ = sdk.reports.list()\n " + post: + tags: + - Reports + summary: Create a report + description: Report a transaction with incorrect fields. + operationId: post_report_v3_reports_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ReportBase' + required: true + responses: + '200': + description: The newly created report + content: + application/json: + schema: + $ref: '#/components/schemas/Report' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/reports\" \\\ + \n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \ + \ \"transaction_id\": \"xbx8YP14g565Xk\",\n \"description\": \"lorem\ + \ ipsum\",\n \"fields\": [\n \".entities.counterparty\"\ + \n ]\n }]'\n " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nreport\ + \ = sdk.reports.create(\n transaction_id=\"xbx8YP14g565Xk\",\n description=\"\ + lorem ipsum\",\n fields=['.entities.counterparty'],\n)\n" + /v3/reports/{id}: + get: + tags: + - Reports + summary: Retrieve a report + description: Retrieve a report + operationId: get_report_v3_reports__id__get + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Report' + '404': + description: Report with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/reports/a652285d-de1b-4a6f-b6ce-45efa9be7952\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nreport\ + \ = sdk.reports.get(\"a652285d-de1b-4a6f-b6ce-45efa9be7952\")\n " + delete: + tags: + - Reports + summary: Delete a report + description: Delete a report + operationId: delete_report_v3_reports__id__delete + parameters: + - required: true + schema: + type: string + title: Id + name: id + in: path + responses: + '204': + description: Deletion successful + '404': + description: Report with the provided id not found. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + /v3/categories/{account_holder_type}: + get: + tags: + - Categories + summary: Retrieve category set + description: Retrieves the set of categories. Category sets are different per + account holder type. + operationId: get_category_set_v3_categories__account_holder_type__get + parameters: + - required: true + schema: + $ref: '#/components/schemas/AccountHolderType' + name: account_holder_type + in: path + responses: + '200': + description: Category set for the selected type of account holder + content: + application/json: + schema: + $ref: '#/components/schemas/CategorySet' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/categories/consumer\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + sdk.categories.get("consumer") + + ' + post: + tags: + - Categories + summary: Set a custom set of categories + description: Sets a custom set of categories. Transactions that don't match + a category will be categorized `not enough information` regardless of whether + it is present in the set. + operationId: custom_categories_post_v3_categories__account_holder_type__post + parameters: + - required: true + schema: + $ref: '#/components/schemas/AccountHolderType' + name: account_holder_type + in: path + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CustomCategorySet' + required: true + responses: + '200': + description: Custom categories successfully set. + content: + application/json: + schema: + $ref: '#/components/schemas/CustomCategorySet' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/categories/consumer\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \ + \ \"incoming\": [\n \"salary\",\n \"investment income\"\ + ,\n \"other income\"\n ],\n \"outgoing\": [\n \ + \ \"rent\",\n \"utilities\",\n \"groceries\"\ + ,\n \"entertainment\"\n ]\n }]'\n " + - lang: python + label: Python SDK + source: "from ntropy_sdk import SDK\n\nsdk = SDK(\"cd1H...Wmhl\")\nsdk.categories.set(\"\ + consumer\", {\n \"incoming\": [\n \"transfer from investment app\"\ + ,\n \"transfer from stock broker\",\n \"transfer from crypto\ + \ broker\",\n \"chargeback\",\n \"freelance income\",\n \ + \ \"rideshare or delivery income\",\n \"paycheck\",\n \ + \ \"benefits\",\n \"interest earned\",\n \"stock dividend\"\ + \n ],\n \"outgoing\": [\n \"digital content and streaming\"\ + ,\n \"vending machine\",\n \"reversal\",\n \"transfer\ + \ to investment app\",\n \"transfer to stock broker\",\n \"\ + transfer to crypto broker\",\n \"adjustment\",\n \"intra account\ + \ transfer\",\n \"inter account transfer\",\n \"peer to peer\ + \ transfer\",\n \"funeral service\",\n \"ATM withdrawal\"\ + ,\n \"teller withdrawal\"\n ]\n})\n" + /v3/categories/{account_holder_type}/reset: + post: + tags: + - Categories + summary: Reset category set to original values + description: Resets the set of categories of the specified account holder type + to the original values. + operationId: delete_custom_category_set_v3_categories__account_holder_type__reset_post + parameters: + - required: true + schema: + $ref: '#/components/schemas/AccountHolderType' + name: account_holder_type + in: path + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/CategorySet' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"POST\" \\\n \"https://api.ntropy.com/v3/categories/consumer/reset\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + sdk.categories.reset("consumer") + + ' + /v3/entities/lookup: + get: + tags: + - Entities + summary: Searches for an entity + description: "Resolves a query into an entity by querying our entity resolution\ + \ system. \n The parameters `name` and `website` are mutually exclusive.\ + \ Calls to this endpoint using \n the `name` parameter are billed the same\ + \ way transactions are." + operationId: search_entity_v3_entities_lookup_get + parameters: + - description: The name of the entity to resolve + required: false + schema: + type: string + title: Name + description: The name of the entity to resolve + name: name + in: query + - description: The website of the entity to resolve + required: false + schema: + type: string + title: Website + description: The website of the entity to resolve + name: website + in: query + - description: An unstructured location string of the entity to resolve + required: false + schema: + type: string + title: Location + description: An unstructured location string of the entity to resolve + name: location + in: query + responses: + '200': + description: Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Entity' + '400': + description: Bad request. + '423': + description: Not enough credits. + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/entities?name=Starbucks\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + sdk.entities.lookup(name="Starbucks") ' + /v3/entities/{id}: + get: + tags: + - Entities + summary: Retrieve an entity + description: Retrieve more information about an entity by using its unique ID. + operationId: get_entity_by_id_v3_entities__id__get + parameters: + - description: The unique ID of the entity + required: true + schema: + type: string + title: Id + description: The unique ID of the entity + name: id + in: path + responses: + '200': + description: Entity + content: + application/json: + schema: + $ref: '#/components/schemas/Entity' + '400': + description: Bad request. + '404': + description: Entity does not exist for ID + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + security: + - APIKeyHeader: [] + x-codeSamples: + - lang: cURL + label: cURL + source: "curl -X \"GET\" \\\n \"https://api.ntropy.com/v3/entities/d4bc3c80-ec1a-3da2-836e-2a4ca4758be5\"\ + \ \\\n -H \"Accept: application/json\" \\\n -H \"X-API-KEY: cd1H...Wmhl\"\ + \ " + - lang: python + label: Python SDK + source: 'from ntropy_sdk import SDK + + + sdk = SDK("cd1H...Wmhl") + + sdk.entities.lookup("d4bc3c80-ec1a-3da2-836e-2a4ca4758be5") ' +components: + schemas: + Account: + properties: + type: + type: string + title: Type + number: + type: string + title: Number + opening_balance: + type: number + title: Opening Balance + closing_balance: + type: number + title: Closing Balance + iso_currency_code: + type: string + title: Iso Currency Code + type: object + title: Account + AccountHolder: + properties: + type: + $ref: '#/components/schemas/AccountType' + name: + type: string + title: Name + address: + $ref: '#/components/schemas/Address' + type: object + title: AccountHolder + AccountHolderCreate: + properties: + id: + type: string + minLength: 1 + title: Id + description: The unique ID of the account holder of the transaction + type: + allOf: + - $ref: '#/components/schemas/AccountHolderType' + description: 'The type of the account holder. ' + name: + type: string + title: Name + description: The name of the account holder + type: object + required: + - id + - type + title: AccountHolderCreate + AccountHolderExternal: + properties: + id: + type: string + minLength: 1 + title: Id + description: The unique ID of the account holder of the transaction + type: + allOf: + - $ref: '#/components/schemas/AccountHolderType' + description: 'The type of the account holder. ' + name: + type: string + title: Name + description: The name of the account holder + created_at: + type: string + format: date-time + title: Created At + description: The timestamp of when the account holder was created. + additionalProperties: false + type: object + required: + - id + - type + - created_at + title: AccountHolderExternal + example: + id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + type: consumer + name: John Doe + created_at: '2024-03-30T00:00:00' + AccountHolderType: + type: string + enum: + - consumer + - business + title: AccountHolderType + description: An enumeration. + AccountType: + type: string + enum: + - consumer + - business + title: AccountType + description: An enumeration. + AccountingCategory: + type: string + enum: + - operational expenses + - cost of goods sold + - revenue + - financing + - taxes + title: AccountingCategory + description: An enumeration. + ActionModel: + $ref: personalization.json#/definitions/Action + Address: + properties: + street: + type: string + title: Street + postcode: + type: string + title: Postcode + city: + type: string + title: City + state: + type: string + title: State + country: + type: string + title: Country + type: object + title: Address + AsyncEnrichmentInput: + properties: + transactions: + items: + $ref: '#/components/schemas/TransactionInput' + type: array + maxItems: 24960 + minItems: 1 + title: Transactions + additionalProperties: false + type: object + required: + - transactions + title: AsyncEnrichmentInput + BankStatement: + properties: + id: + type: string + title: Id + description: A unique identifier for the bank statement job. + name: + type: string + title: Name + description: The name of the bank statement file, if available. + status: + allOf: + - $ref: '#/components/schemas/BankStatementStatus' + description: The current status of the document. + created_at: + type: string + format: date-time + title: Created At + description: The date and time when the job was created. + file: + allOf: + - $ref: '#/components/schemas/BankStatementFile' + title: File + description: Information about the bank statement file being processed. + error: + $ref: '#/components/schemas/BankStatementError' + additionalProperties: false + type: object + required: + - id + - status + - created_at + - file + title: BankStatement + description: Represents a bank statement with details about the file and its + status. + example: + id: 7f8dceac-2848-472d-b5c3-55cdbaf35a9b + name: 2014-01-01_2014-02-01_statement.pdf + status: processing + created_at: '2024-01-01T00:00:00' + file: + no_pages: 1 + size: 4096 + BankStatementAccount: + properties: + number: + type: string + title: Number + description: The account number, if available. + opening_balance: + type: number + title: Opening Balance + description: The opening balance of the account for the statement period. + closing_balance: + type: number + title: Closing Balance + description: The closing balance of the account for the statement period. + start_date: + type: string + format: date + title: Start Date + description: The start date of the statement period. + end_date: + type: string + format: date + title: End Date + description: The end date of the statement period. + is_balance_reconciled: + type: boolean + title: Is Balance Reconciled + description: Indicates whether the balance has been reconciled. + total_incoming: + type: number + title: Total Incoming + description: The sum of amounts of all incoming transactions. + total_outgoing: + type: number + title: Total Outgoing + description: The sum of amounts of all outgoing transactions. + transactions: + items: + $ref: '#/components/schemas/BankStatementTransaction' + type: array + title: Transactions + description: List of transactions for this account. + additionalProperties: false + type: object + required: + - transactions + title: BankStatementAccount + example: + number: '972913289' + opening_balance: 400.0 + closing_balance: 200.0 + start_date: '2024-01-01' + end_date: '2024-02-01' + is_balance_reconciled: true + total_incoming: 0.0 + total_outgoing: 200.0 + transactions: + - id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 200 + entry_type: outgoing + currency: USD + running_balance: 400.0 + BankStatementError: + properties: + code: + $ref: '#/components/schemas/BankStatementErrorCode' + message: + type: string + title: Message + type: object + required: + - code + - message + title: BankStatementError + BankStatementErrorCode: + type: string + enum: + - invalid_bank_statement + - internal_error + title: BankStatementErrorCode + description: An enumeration. + BankStatementFile: + properties: + no_pages: + type: integer + title: No Pages + description: The number of pages in the bank statement file. + size: + type: integer + title: Size + description: The size of the bank statement file in bytes, if available. + additionalProperties: false + type: object + required: + - no_pages + title: BankStatementFile + example: + no_pages: 1 + size: 4096 + BankStatementResults: + properties: + accounts: + items: + $ref: '#/components/schemas/BankStatementAccount' + type: array + title: Accounts + description: List of accounts in the bank statement. + type: object + required: + - accounts + title: BankStatementResults + BankStatementStatus: + type: string + enum: + - processing + - completed + - error + title: BankStatementStatus + description: An enumeration. + BankStatementTransaction: + properties: + id: + type: string + minLength: 1 + title: Id + description: A unique identifier of the transaction + description: + type: string + maxLength: 1024 + minLength: 0 + title: Description + description: The description string of the transaction + date: + type: string + format: date + title: Date + description: The date that the transaction was posted. Uses ISO 8601 format + (YYYY-MM-DD) + amount: + type: number + minimum: 0.0 + title: Amount + description: The amount of the transaction in the `currency`. Must be a + positive value. For example, if the `currency` is USD, then it's the amount + in dollars. + entry_type: + allOf: + - $ref: '#/components/schemas/EntryType' + description: The direction of the flow of the money from the perspective + of the account holder. `outgoing` to represent money leaving the account, + such as purchases or fees, while `incoming` represents money entering + the account, such as income or refunds. + currency: + allOf: + - $ref: '#/components/schemas/Currency' + description: The currency of the transaction in ISO 4217 format + running_balance: + type: number + title: Running Balance + description: The account's balance when this transaction was performed + additionalProperties: false + type: object + required: + - id + - description + - date + - amount + - entry_type + - currency + title: BankStatementTransaction + example: + id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10.0 + entry_type: outgoing + currency: USD + running_balance: 400.0 + Batch: + properties: + id: + type: string + title: Id + description: A unique identifier for the batch. + status: + allOf: + - $ref: '#/components/schemas/BatchStatus' + description: The current status of the batch. A batch will error if at least + one of the transactions contains an error. + created_at: + type: string + format: date-time + title: Created At + description: The timestamp of when the batch was created. + updated_at: + type: string + format: date-time + title: Updated At + description: The timestamp of when the batch was last updated. + progress: + type: integer + title: Progress + description: The number of transactions processed so far. + total: + type: integer + title: Total + description: The total number of transactions in the batch. + additionalProperties: false + type: object + required: + - id + - status + - created_at + - updated_at + - progress + - total + title: Batch + description: The `Batch` object represents the status and progress of an asynchronous + batch enrichment job. + example: + id: 203613d2-83c8-4130-8809-d14206eeec20 + status: processing + created_at: '2024-01-01T00:00:00' + updated_at: '2024-01-01T00:00:30' + progress: 0 + total: 4000 + BatchResult: + properties: + id: + type: string + title: Id + description: A unique identifier for the batch. + total: + type: integer + title: Total + description: The total number of transactions in the batch result. + status: + allOf: + - $ref: '#/components/schemas/BatchStatus' + description: The current status of the batch job. + results: + $ref: '#/components/schemas/EnrichmentResult' + additionalProperties: false + type: object + required: + - id + - total + - status + - results + title: BatchResult + description: 'The `BatchResult` object represents the result of a batch enrichment + job, including its status and + + enriched transactions.' + BatchStatus: + type: string + enum: + - processing + - completed + - error + title: BatchStatus + description: An enumeration. + Body_post_bank_statement_v3_bank_statements_post: + properties: + file: + type: string + format: binary + title: File + type: object + required: + - file + title: Body_post_bank_statement_v3_bank_statements_post + Body_set_transaction_ah_v3_transactions__id__assign_post: + properties: + account_holder_id: + type: string + title: Account Holder Id + type: object + required: + - account_holder_id + title: Body_set_transaction_ah_v3_transactions__id__assign_post + Categories: + properties: + general: + type: string + title: General + description: The category of the transaction. View the valid set of categories + for your key [here](./docs/v3/enrichment/entities). + accounting: + allOf: + - $ref: '#/components/schemas/AccountingCategory' + description: The corresponding accounting category. Only available for `business` + transactions. + additionalProperties: false + type: object + title: Categories + CategoryConfidence: + type: string + enum: + - high + - medium + - low + - unknown + title: CategoryConfidence + description: An enumeration. + CategorySet: + properties: + incoming: + items: + type: string + type: array + title: Incoming + outgoing: + items: + type: string + type: array + title: Outgoing + type: object + required: + - incoming + - outgoing + title: CategorySet + example: + incoming: + - transfer from investment app + - transfer from stock broker + - transfer from crypto broker + - chargeback + - freelance income + - rideshare or delivery income + - paycheck + - benefits + - interest earned + - stock dividend + outgoing: + - digital content and streaming + - vending machine + - reversal + - transfer to investment app + - transfer to stock broker + - transfer to crypto broker + - adjustment + - intra account transfer + - inter account transfer + - peer to peer transfer + - funeral service + - ATM withdrawal + - teller withdrawal + Counterparty: + properties: + id: + type: string + title: Id + description: The unique UUID identifier of the entity + name: + type: string + title: Name + description: The name of the entity + website: + type: string + title: Website + description: The website URL of the entity + logo: + type: string + title: Logo + description: Logo's URL + mccs: + items: + type: integer + type: array + title: Mccs + description: A list of [Merchant Category Codes](https://en.wikipedia.org/wiki/Merchant_category_code) + default: [] + type: + $ref: '#/components/schemas/CounterpartyType' + additionalProperties: false + type: object + required: + - type + title: Counterparty + example: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + CounterpartyType: + type: string + enum: + - person + - organization + title: CounterpartyType + description: An enumeration. + Country: + type: string + enum: + - AD + - AE + - AF + - AG + - AI + - AL + - AM + - AO + - AR + - AS + - AT + - AU + - AW + - AZ + - BA + - BB + - BD + - BE + - BF + - BG + - BH + - BI + - BJ + - BL + - BM + - BN + - BO + - BQ + - BR + - BS + - BT + - BV + - BW + - BY + - BZ + - CA + - CC + - CD + - CF + - CG + - CH + - CI + - CK + - CL + - CM + - CN + - CO + - CR + - CU + - CV + - CW + - CX + - CY + - CZ + - DE + - DJ + - DK + - DM + - DO + - DZ + - EC + - EE + - EG + - EH + - ER + - ES + - ET + - FI + - FJ + - FK + - FM + - FR + - GA + - GB + - GD + - GE + - GF + - GG + - GH + - GI + - GL + - GM + - GN + - GP + - GQ + - GR + - GS + - GT + - GU + - GW + - GY + - HK + - HM + - HN + - HR + - HT + - HU + - ID + - IE + - IL + - IM + - IN + - IO + - IQ + - IR + - IS + - IT + - JE + - JM + - JO + - JP + - KE + - KG + - KH + - KI + - KM + - KN + - KP + - KR + - KW + - KY + - KZ + - LA + - LB + - LC + - LI + - LK + - LR + - LS + - LT + - LU + - LV + - LY + - MA + - MC + - MD + - ME + - MF + - MG + - MH + - MK + - ML + - MM + - MN + - MO + - MP + - MQ + - MR + - MS + - MT + - MU + - MV + - MW + - MX + - MY + - MZ + - NA + - NC + - NE + - NF + - NG + - NI + - NL + - 'NO' + - NP + - NR + - NU + - NZ + - OM + - PA + - PE + - PF + - PG + - PH + - PK + - PL + - PM + - PN + - PR + - PS + - PT + - PW + - PY + - QA + - RE + - RO + - RS + - RU + - RW + - SA + - SB + - SC + - SD + - SE + - SG + - SH + - SI + - SJ + - SK + - SL + - SM + - SN + - SO + - SR + - SS + - ST + - SV + - SX + - SY + - SZ + - TC + - TD + - TG + - TH + - TJ + - TK + - TL + - TM + - TN + - TO + - TR + - TT + - TV + - TW + - TZ + - UA + - UG + - UM + - US + - UY + - UZ + - VC + - VE + - VG + - VI + - VN + - VU + - WF + - WS + - YE + - YT + - ZA + - ZM + - ZW + title: Country + description: An enumeration. + Currency: + type: string + enum: + - EUR + - AED + - AFN + - XCD + - ALL + - AMD + - AOA + - ARS + - USD + - AUD + - AWG + - AZN + - BAM + - BBD + - BDT + - XOF + - BGN + - BHD + - BIF + - BMD + - BND + - BOB + - BRL + - BSD + - INR + - NOK + - BWP + - BYR + - BZD + - CAD + - CDF + - XAF + - CHF + - NZD + - CLP + - CNY + - COP + - CRC + - CUP + - CVE + - ANG + - CZK + - DJF + - DKK + - DOP + - DZD + - EGP + - MAD + - ERN + - ETB + - FJD + - FKP + - GBP + - GEL + - GHS + - GIP + - GMD + - GNF + - GTQ + - GYD + - HKD + - HNL + - HUF + - IDR + - ILS + - IQD + - IRR + - ISK + - JMD + - JOD + - JPY + - KES + - KGS + - KHR + - KMF + - KPW + - KRW + - KWD + - KYD + - KZT + - LAK + - LBP + - LKR + - LRD + - ZAR + - LYD + - MDL + - MGA + - MKD + - MMK + - MNT + - MOP + - MRO + - MUR + - MVR + - MWK + - MXN + - MYR + - MZN + - XPF + - NGN + - NIO + - NPR + - OMR + - PEN + - PGK + - PHP + - PKR + - PLN + - PYG + - QAR + - RON + - RSD + - RUB + - RWF + - SAR + - SBD + - SCR + - SDG + - SEK + - SGD + - SHP + - SLL + - SOS + - SRD + - SSP + - STD + - SYP + - SZL + - THB + - TJS + - TMT + - TND + - TOP + - TRY + - TTD + - TWD + - TZS + - UAH + - UGX + - UYU + - UZS + - VEF + - VND + - VUV + - WST + - YER + - ZMW + - ZWL + - HRK + title: Currency + description: An enumeration. + CustomCategorySet: + properties: + incoming: + items: + type: string + type: array + title: Incoming + outgoing: + items: + type: string + type: array + title: Outgoing + type: object + required: + - incoming + - outgoing + title: CustomCategorySet + example: + incoming: + - salary + - investment income + - other income + outgoing: + - rent + - utilities + - groceries + - entertainment + DocumentStatus: + type: string + enum: + - queued + - processing + - processed + - failed + title: DocumentStatus + description: An enumeration. + EnrichedTransaction: + properties: + entities: + $ref: '#/components/schemas/Entities' + categories: + $ref: '#/components/schemas/Categories' + location: + $ref: '#/components/schemas/Location' + error: + $ref: '#/components/schemas/TransactionError' + created_at: + type: string + format: date-time + title: Created At + description: The timestamp of when the account holder was created. + id: + type: string + minLength: 1 + title: Id + description: A unique identifier for the transaction. If two transactions + are submitted with the same `id` the most recent one will replace the + previous one. + additionalProperties: false + type: object + required: + - created_at + - id + title: EnrichedTransaction + example: + error: null + entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: [] + type: payment_processor + categories: + general: outgoing - coffee shops + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + created_at: '2024-03-30T00:00:00' + id: xbx8YP14g565Xk + EnrichmentResult: + properties: + transactions: + items: + $ref: '#/components/schemas/EnrichedTransaction' + type: array + title: Transactions + description: A list of enriched transactions resulting from the enrichment + of this batch. + additionalProperties: false + type: object + required: + - transactions + title: EnrichmentResult + Entities: + properties: + counterparty: + $ref: '#/components/schemas/Counterparty' + intermediaries: + items: + $ref: '#/components/schemas/Intermediary' + type: array + title: Intermediaries + default: [] + additionalProperties: false + type: object + title: Entities + description: Entities found by identity identification + Entity: + properties: + id: + type: string + title: Id + description: The unique UUID identifier of the entity + name: + type: string + title: Name + description: The name of the entity + website: + type: string + title: Website + description: The website URL of the entity + logo: + type: string + title: Logo + description: Logo's URL + mccs: + items: + type: integer + type: array + title: Mccs + description: A list of [Merchant Category Codes](https://en.wikipedia.org/wiki/Merchant_category_code) + default: [] + type: object + title: Entity + example: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + EntryType: + type: string + enum: + - incoming + - outgoing + title: EntryType + description: An enumeration. + FilterModel: + $ref: personalization.json + HTTPValidationError: + properties: + detail: + items: + $ref: '#/components/schemas/ValidationError' + type: array + title: Detail + type: object + title: HTTPValidationError + Intermediary: + properties: + id: + type: string + title: Id + description: The unique UUID identifier of the entity + name: + type: string + title: Name + description: The name of the entity + website: + type: string + title: Website + description: The website URL of the entity + logo: + type: string + title: Logo + description: Logo's URL + mccs: + items: + type: integer + type: array + title: Mccs + description: A list of [Merchant Category Codes](https://en.wikipedia.org/wiki/Merchant_category_code) + default: [] + type: + $ref: '#/components/schemas/IntermediaryType' + additionalProperties: false + type: object + required: + - type + title: Intermediary + example: + id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: [] + type: payment_processor + IntermediaryType: + type: string + enum: + - delivery_service + - payment_processor + title: IntermediaryType + description: An enumeration. + Location: + properties: + raw_address: + type: string + title: Raw Address + description: An unstructured string containing the address + structured: + allOf: + - $ref: '#/components/schemas/LocationStructured' + title: Structured + description: When raw is set, a structured representation of it. + additionalProperties: false + type: object + title: Location + LocationInput: + properties: + raw_address: + type: string + title: Raw Address + description: An unstructured string containing the address + country: + allOf: + - $ref: '#/components/schemas/Country' + description: The country where the transaction was made in ISO 3166-2 format + additionalProperties: false + type: object + required: + - country + title: LocationInput + description: 'Location of where the transaction has taken place. This can greatly + improve entity identification, especially + + under ambiguity.' + LocationStructured: + properties: + street: + type: string + title: Street + description: The street name and number of the location + city: + type: string + title: City + description: The city where the location is situated + state: + type: string + title: State + description: The state or region of the location + postcode: + type: string + title: Postcode + description: The postal code or ZIP code of the location + country_code: + type: string + title: Country Code + description: The country code of the location in ISO 3166-2 format + country: + type: string + title: Country + description: The full name of the country + latitude: + type: number + title: Latitude + description: The latitude coordinate of the location + longitude: + type: number + title: Longitude + description: The longitude coordinate of the location + google_maps_url: + type: string + title: Google Maps Url + description: A URL link to view the location on Google Maps + apple_maps_url: + type: string + title: Apple Maps Url + description: A URL link to view the location on Apple Maps + store_number: + type: string + title: Store Number + description: A unique identifier for a specific store or branch, if applicable + type: object + title: LocationStructured + PagedResponse_AccountHolderExternal: + properties: + next_cursor: + type: string + title: Next Cursor + data: + items: + $ref: '#/components/schemas/AccountHolderExternal' + type: array + title: Data + type: object + required: + - next_cursor + - data + title: PagedResponse_AccountHolderExternal + example: + next_cursor: XjdHaksD + data: + - id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + type: consumer + name: John Doe + created_at: '2024-03-30T00:00:00' + PagedResponse_BankStatement: + properties: + next_cursor: + type: string + title: Next Cursor + data: + items: + $ref: '#/components/schemas/BankStatement' + type: array + title: Data + type: object + required: + - next_cursor + - data + title: PagedResponse_BankStatement + example: + next_cursor: XjdHaksD + data: + - id: 7f8dceac-2848-472d-b5c3-55cdbaf35a9b + name: 2014-01-01_2014-02-01_statement.pdf + status: processing + created_at: '2024-01-01T00:00:00' + file: + no_pages: 1 + size: 4096 + PagedResponse_Batch: + properties: + next_cursor: + type: string + title: Next Cursor + data: + items: + $ref: '#/components/schemas/Batch' + type: array + title: Data + type: object + required: + - next_cursor + - data + title: PagedResponse_Batch + example: + next_cursor: XjdHaksD + data: + - id: 203613d2-83c8-4130-8809-d14206eeec20 + status: processing + created_at: '2024-01-01T00:00:00' + updated_at: '2024-01-01T00:00:30' + progress: 0 + total: 4000 + PagedResponse_Report_: + properties: + next_cursor: + type: string + title: Next Cursor + data: + items: + $ref: '#/components/schemas/Report' + type: array + title: Data + type: object + required: + - data + title: PagedResponse[Report] + PagedResponse_Transaction: + properties: + next_cursor: + type: string + title: Next Cursor + data: + items: + $ref: '#/components/schemas/Transaction' + type: array + title: Data + type: object + required: + - next_cursor + - data + title: PagedResponse_Transaction + example: + next_cursor: XjdHaksD + data: + - id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10.0 + entry_type: outgoing + currency: USD + entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: [] + type: payment_processor + categories: + general: outgoing - coffee shops + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + created_at: '2024-03-30T00:00:00' + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + recurrence: + type: recurring + PagedResponse_Webhook: + properties: + next_cursor: + type: string + title: Next Cursor + data: + items: + $ref: '#/components/schemas/Webhook' + type: array + title: Data + type: object + required: + - next_cursor + - data + title: PagedResponse_Webhook + example: + next_cursor: XjdHaksD + data: + - url: https://example.com:5689 + events: + - batches.completed + - batches.error + token: hunter2 + id: e94a150d-40af-4e96-8aa7-2948a6b4d8d3 + created_at: '2024-10-03T02:53:30.167953' + enabled: true + Recurrence: + properties: + type: + allOf: + - $ref: '#/components/schemas/RecurrenceType' + description: Whether the transaction is a one-time transfer `one-off`, regularly + with varying pricing `recurring` or with fixed pricing `subscription` + additionalProperties: false + type: object + required: + - type + title: Recurrence + description: 'The `Recurrence` object represents the recurrence pattern of a + transaction. It provides information about + + whether a transaction is a one-time event or a part of a recurring series.' + RecurrenceGroup: + properties: + id: + type: string + title: Id + description: A unique UUID identifier for the group + start_date: + type: string + format: date + title: Start Date + description: The date of the oldest transaction in the group + end_date: + type: string + format: date + title: End Date + description: The date of the most recent transaction in the group + total_amount: + type: number + title: Total Amount + description: The sum of all transaction amounts in this group + average_amount: + type: number + title: Average Amount + description: The average amount per transaction in this group + periodicity_in_days: + type: number + title: Periodicity In Days + description: The estimated number of days between transactions in this group + periodicity: + allOf: + - $ref: '#/components/schemas/RecurrencePeriodicity' + description: A human-readable description of the transaction frequency + counterparty: + allOf: + - $ref: '#/components/schemas/Counterparty' + title: Counterparty + description: Counterparty of the transactions + categories: + allOf: + - $ref: '#/components/schemas/Categories' + title: Categories + description: Categories of the transactions in the recurrence group + transaction_ids: + items: + type: string + type: array + title: Transaction Ids + description: Transactions in this recurrence group + additionalProperties: false + type: object + required: + - id + - start_date + - end_date + - total_amount + - average_amount + - periodicity_in_days + - periodicity + - counterparty + - categories + - transaction_ids + title: RecurrenceGroup + example: + id: 8efbac45-9bd5-4b67-be29-334106198c40 + start_date: '2024-03-01' + end_date: '2024-03-30' + total_amount: 300.0 + average_amount: 10.0 + periodicity_in_days: 1.0 + periodicity: daily + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + categories: + general: outgoing - coffee shops + transaction_ids: + - 2dc6SE8A7cTQ2jUdUadCg + - tQYAhhl0XNkl1wasacpVQ + - NNJTqvockIdKnYxBqPlJw + RecurrencePeriodicity: + type: string + enum: + - daily + - weekly + - bi_weekly + - monthly + - bi_monthly + - quarterly + - semi_yearly + - yearly + - other + title: RecurrencePeriodicity + description: An enumeration. + RecurrenceType: + type: string + enum: + - recurring + - subscription + - one off + title: RecurrenceType + description: An enumeration. + Report: + properties: + transaction_id: + type: string + minLength: 1 + title: Transaction Id + description: The unique identifier of the transaction + description: + type: string + title: Description + description: A description of what is wrong in the transaction + fields: + items: + type: string + type: array + title: Fields + description: A list of the fields that are incorrect + id: + type: string + title: Id + description: A generated unique identifier for the report. + created_at: + type: string + format: date-time + title: Created At + description: The date and time when the report was created. + status: + allOf: + - $ref: '#/components/schemas/ReportStatus' + description: 'The status of the report. + + + * `open`: a newly created report + + * `pending`: the report is being investigated + + * `rejected`: the original enrichment output was deemed correct or we + couldn''t resolve it, check `rejection_reason` + + * `resolved`: the issue has been resolved' + rejection_reason: + type: string + title: Rejection Reason + description: An explanation of why the report was rejected + additionalProperties: false + type: object + required: + - transaction_id + - description + - fields + - id + - created_at + - status + title: Report + examples: + - transaction_id: xbx8YP14g565Xk + description: lorem ipsum + fields: + - .entities.counterparty + id: a652285d-de1b-4a6f-b6ce-45efa9be7952 + created_at: '2024-10-03T02:53:30.167953+00:00' + status: open + ReportBase: + properties: + transaction_id: + type: string + minLength: 1 + title: Transaction Id + description: The unique identifier of the transaction + description: + type: string + title: Description + description: A description of what is wrong in the transaction + fields: + items: + type: string + type: array + title: Fields + description: A list of the fields that are incorrect + additionalProperties: false + type: object + required: + - transaction_id + - description + - fields + title: ReportBase + examples: + - transaction_id: xbx8YP14g565Xk + description: lorem ipsum + fields: + - .entities.counterparty + ReportStatus: + type: string + enum: + - open + - pending + - resolved + - rejected + title: ReportStatus + description: An enumeration. + StatementInfo: + properties: + institution: + type: string + title: Institution + start_date: + type: string + format: date + title: Start Date + end_date: + type: string + format: date + title: End Date + account_holder: + $ref: '#/components/schemas/AccountHolder' + accounts: + items: + $ref: '#/components/schemas/Account' + type: array + title: Accounts + type: object + title: StatementInfo + example: + institution: Well's Fargo + start_date: '2024-01-01' + end_date: '2024-02-01' + account_holder: + type: consumer + name: John Doe + address: + street: 601 Rosebud Avenue + postcode: '77901' + city: Victoria + state: Texas + country: United States + accounts: + - type: checking + number: '83721' + opening_balance: 1000.0 + closing_balance: 1500.0 + iso_currency_code: USD + SyncEnrichmentInput: + properties: + transactions: + items: + $ref: '#/components/schemas/TransactionInput' + type: array + maxItems: 1000 + minItems: 1 + title: Transactions + additionalProperties: false + type: object + required: + - transactions + title: SyncEnrichmentInput + SyncEnrichmentOutput: + properties: + transactions: + items: + $ref: '#/components/schemas/EnrichedTransaction' + type: array + title: Transactions + description: A list of enriched transactions resulting from the enrichment + of this batch. + additionalProperties: false + type: object + required: + - transactions + title: SyncEnrichmentOutput + Transaction: + properties: + id: + type: string + minLength: 1 + title: Id + description: A unique identifier of the transaction + description: + type: string + maxLength: 1024 + minLength: 0 + title: Description + description: The description string of the transaction + date: + type: string + format: date + title: Date + description: The date that the transaction was posted. Uses ISO 8601 format + (YYYY-MM-DD) + amount: + type: number + minimum: 0.0 + title: Amount + description: The amount of the transaction in the `currency`. Must be a + positive value. For example, if the `currency` is USD, then it's the amount + in dollars. + entry_type: + allOf: + - $ref: '#/components/schemas/EntryType' + description: The direction of the flow of the money from the perspective + of the account holder. `outgoing` to represent money leaving the account, + such as purchases or fees, while `incoming` represents money entering + the account, such as income or refunds. + currency: + allOf: + - $ref: '#/components/schemas/Currency' + description: The currency of the transaction in ISO 4217 format + entities: + $ref: '#/components/schemas/Entities' + categories: + $ref: '#/components/schemas/Categories' + location: + $ref: '#/components/schemas/Location' + error: + $ref: '#/components/schemas/TransactionError' + created_at: + type: string + format: date-time + title: Created At + description: The timestamp of when the account holder was created. + account_holder_id: + type: string + minLength: 1 + title: Account Holder Id + description: The unique ID of the account holder of the transaction + recurrence: + $ref: '#/components/schemas/Recurrence' + additionalProperties: false + type: object + required: + - id + - description + - date + - amount + - entry_type + - currency + - created_at + title: Transaction + example: + id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10.0 + entry_type: outgoing + currency: USD + entities: + counterparty: + id: d4bc3c80-ec1a-3da2-836e-2a4ca4758be5 + name: Starbucks + website: starbucks.com + logo: https://logos.ntropy.com/starbucks.com + mccs: + - 5814 + type: organization + intermediaries: + - id: 916bc837-55ef-3106-88f6-5a8269ca9f2a + name: Square + website: squareup.com + logo: https://logos.ntropy.com/squareup.com + mccs: [] + type: payment_processor + categories: + general: outgoing - coffee shops + location: + raw_address: Nw 43rd Street 5480, Gainesville, Florida 32653, US + structured: + street: Nw 43rd Street 5480 + city: Gainesville + state: Florida + postcode: '32653' + country_code: US + country: United States + latitude: 29.704558 + longitude: -82.389277 + google_maps_url: https://www.google.com/maps/search/?api=1&query=29.704558,-82.389277 + apple_maps_url: https://maps.apple.com/?q=29.704558,-82.389277 + created_at: '2024-03-30T00:00:00' + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + recurrence: + type: recurring + TransactionError: + properties: + code: + $ref: '#/components/schemas/TransactionErrorCode' + message: + type: string + title: Message + type: object + required: + - code + - message + title: TransactionError + TransactionErrorCode: + type: string + enum: + - account_holder_not_found + - internal_error + title: TransactionErrorCode + description: An enumeration. + TransactionInput: + properties: + id: + type: string + minLength: 1 + title: Id + description: A unique identifier of the transaction + description: + type: string + maxLength: 1024 + minLength: 0 + title: Description + description: The description string of the transaction + date: + type: string + format: date + title: Date + description: The date that the transaction was posted. Uses ISO 8601 format + (YYYY-MM-DD) + amount: + type: number + minimum: 0.0 + title: Amount + description: The amount of the transaction in the `currency`. Must be a + positive value. For example, if the `currency` is USD, then it's the amount + in dollars. + entry_type: + allOf: + - $ref: '#/components/schemas/EntryType' + description: The direction of the flow of the money from the perspective + of the account holder. `outgoing` to represent money leaving the account, + such as purchases or fees, while `incoming` represents money entering + the account, such as income or refunds. + currency: + allOf: + - $ref: '#/components/schemas/Currency' + description: The currency of the transaction in ISO 4217 format + account_holder_id: + type: string + title: Account Holder Id + description: The unique ID of the account holder. Unsetting it will disable + [categorization](./docs/v3/enrichment/entities). + location: + $ref: '#/components/schemas/LocationInput' + additionalProperties: false + type: object + required: + - id + - description + - date + - amount + - entry_type + - currency + - account_holder_id + title: TransactionInput + example: + id: xbx8YP14g565Xk + description: SQ* STARBUCKS NW 43RD + date: '2024-03-30' + amount: 10.0 + entry_type: outgoing + currency: USD + account_holder_id: 35b927b6-6fda-40aa-93b8-95b47c2b2cad + location: + country: US + ValidationError: + properties: + loc: + items: + anyOf: + - type: string + - type: integer + type: array + title: Location + msg: + type: string + title: Message + type: + type: string + title: Error Type + type: object + required: + - loc + - msg + - type + title: ValidationError + Webhook: + properties: + url: + type: string + maxLength: 1024 + minLength: 1 + format: uri + title: Url + description: The URL of the webhook + events: + items: + type: string + enum: + - reports.resolved + - reports.rejected + - reports.pending + - bank_statements.completed + - bank_statements.error + - batches.completed + - batches.error + type: array + title: Events + description: A list of events that this webhook subscribes to + token: + type: string + maxLength: 128 + title: Token + description: A secret string used to authenticate the webhook. This value + will be included in the `X-Ntropy-Token` header when sending requests + to the webhook + id: + type: string + title: Id + description: A generated unique identifier for the webhook + created_at: + type: string + format: date-time + title: Created At + description: The date and time when the webhook was created. + enabled: + type: boolean + title: Enabled + description: Whether the webhook is enabled or not. + type: object + required: + - url + - events + - id + - created_at + - enabled + title: Webhook + example: + url: https://example.com:5689 + events: + - batches.completed + - batches.error + token: hunter2 + id: e94a150d-40af-4e96-8aa7-2948a6b4d8d3 + created_at: '2024-10-03T02:53:30.167953' + enabled: true + WebhookBase: + properties: + url: + type: string + maxLength: 1024 + minLength: 1 + format: uri + title: Url + description: The URL of the webhook + events: + items: + type: string + enum: + - reports.resolved + - reports.rejected + - reports.pending + - bank_statements.completed + - bank_statements.error + - batches.completed + - batches.error + type: array + title: Events + description: A list of events that this webhook subscribes to + token: + type: string + maxLength: 128 + title: Token + description: A secret string used to authenticate the webhook. This value + will be included in the `X-Ntropy-Token` header when sending requests + to the webhook + type: object + required: + - url + - events + title: WebhookBase + WebhookPatch: + properties: + url: + type: string + maxLength: 1024 + minLength: 1 + format: uri + title: Url + description: The URL of the webhook + events: + items: + type: string + enum: + - reports.resolved + - reports.rejected + - reports.pending + - bank_statements.completed + - bank_statements.error + - batches.completed + - batches.error + type: array + title: Events + description: A list of events that this webhook subscribes to + token: + type: string + maxLength: 128 + title: Token + description: A secret string used to authenticate the webhook. This value + will be included in the `X-Ntropy-Token` header when sending requests + to the webhook + enabled: + type: boolean + title: Enabled + description: Whether the webhook is enabled or not. + type: object + title: WebhookPatch + securitySchemes: + APIKeyHeader: + type: apiKey + in: header + name: X-Api-Key +tags: +- name: Enrichment + description: "\nThe Enrichment API allows you to submit multiple transactions for\ + \ enrichment in a single request. It supports both \nsynchronous and asynchronous\ + \ submission of transactions.\n\nTransactions enriched by these endpoints are\ + \ accessible via the [Transactions API](#tag/Transactions) \nand only accessible\ + \ by the API key that has submitted them. Each transaction is identified by an\ + \ id, if you submit two\ntransactions the same id, the most recent will replace\ + \ the previous one. Transactions also accept an account holder.\nNot supplying\ + \ one will disable both categorization and recurrence.\n\nFor more information\ + \ on account holder attributes, please refer to \n[this](../../../account-holders/#optional-account-holder-fields)\ + \ guide.\n\nComplete guide: [Transaction Enrichment](../../../enrichment/introduction).\n" + section_url: '#tag/Enrichment' + docs_url: ../../../enrichment/introduction +- name: Transactions + description: "\nThe Transaction API allows you to manage, retrieve and search through\ + \ enriched transactions. A transaction contains\nboth the enrichment fields and\ + \ the original input fields. They are made available after being \n[enriched](#tag/Enrichment).\n" + section_url: '#tag/Transactions' +- name: Account Holders + description: "\nThe Account Holder API allows you to retrieve, create and modify\ + \ account holders. An account holder represents an\nentity that holds an account\ + \ associated with transactions. An account holder can either be a business or\ + \ an individual\nperson - consumer.\n\nThe fields chosen for an account holder\ + \ are used by our enrichment process and can dramatically improve the accuracy\n\ + of the results. \n\nComplete guide: [Account Holders](../../../account-holders).\n" + section_url: '#tag/Account-Holders' + docs_url: ../../../account-holders +- name: Recurrence + description: "\nThe Recurrence API allows you to identify and categorize recurring\ + \ patterns found in the transactions of an \n[account holder](#tag/Account-Holders),\ + \ such as periodic payments or subscriptions and group them \ninto recurrence\ + \ groups. Each recurrence group contains detailed information about the pattern,\ + \ \nsuch as periodicity, amount and counterparty.\n\nTransactions can be added\ + \ to an account holder via the [Enrichment API](#tag/Enrichment). \nIt is crucial\ + \ that transactions are submitted with the [correct](../../../account-holders)\ + \ \naccount holder information as the recurrence calculation relies heavily on\ + \ it.\n\nComplete guide: [Recurrence](../../../enrichment/recurrence).\n" + section_url: '#tag/Recurrence' + docs_url: ../../../enrichment/recurrence +- name: Bank statements + description: ' + + The Bank Statements API allows you to manage and extract information from bank + statements. We support extraction of + + account holder information, account information and transaction records. Files + should be uploaded in PDF format. + + + During the extraction process, the bank statements undergo several status changes: + + | Status | Description | + + |----------|------------------------------------------------------------------------| + + |processing|The upload was successful. Extraction is in progress. | + + |completed |The extraction was successful. Results are available. | + + |error |An error occurred during extraction. Check `error` for more information.| + + + + A list of error codes for the `error` status can be found below: + + | Code | Description | + + |----------------------|-------------------------------------------| + + |invalid_bank_statement|Failed to process file as a bank statement.| + + |internal_error |Internal error. Please contact support. | + + + + Complete guide: [Bank Statements](../../../bank-statements). + + ' + section_url: '#tag/Bank-statements' + docs_url: ../../../bank-statements +- name: Webhooks + description: "\nThe Webhooks API allows you to receive notifications when certain\ + \ events occur,\nsuch as when a batch or bank statement finishes processing. \n\ + \nWhen an event occurs, Ntropy will make a POST request to the `url` of the\n\ + webhook. If you specified a `token` when creating the webhook, this string will\n\ + be included in the `X-Ntropy-Token` header. The webhook call has a timeout limit\ + \ of 10 \nseconds, so any processing of the event \n" + section_url: '#tag/Webhooks' + docs_url: ../../../webhooks +- name: Personalization + description: ' + + The Personalization API allows you to customize the output of enrichment by + + uploading a set of rules. For more information, see our documentation on + + [Personalization](None). + + ' + section_url: '#tag/Personalization' +- name: Reports + description: ' + + The Reports API allows you to flag transactions with incorrect fields. You can + also track the progress of each + + report either through the API or using [webhooks](#tag/Webhooks). + + ' + section_url: '#tag/Reports' diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/personalization.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/personalization.json new file mode 100644 index 00000000000..5b395c33923 --- /dev/null +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/fixtures/ntropy/personalization.json @@ -0,0 +1,568 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "Filter", + "examples": [ + [ + { + "if": { + "is_substring": [ + { + "get": "website" + }, + "ntropy" + ] + }, + "then": [ + { + "set": "logo", + "to": "http://example.com/favicon.ico" + } + ], + "else": [ + { + "remove_label": "example label" + } + ] + } + ] + ], + "type": "array", + "items": { + "$ref": "#/definitions/Action" + }, + "definitions": { + "Action": { + "title": "action", + "anyOf": [ + { + "$ref": "#/definitions/If" + }, + { + "$ref": "#/definitions/ModifyLabels" + }, + { + "$ref": "#/definitions/Setter" + } + ] + }, + "If": { + "title": "if", + "type": "object", + "required": [ + "if" + ], + "properties": { + "if": { + "$ref": "#/definitions/Expr" + }, + "then": { + "type": "array", + "items": { + "$ref": "#/definitions/Action" + } + }, + "else": { + "type": "array", + "items": { + "$ref": "#/definitions/Action" + } + } + } + }, + "Expr": { + "title": "expression", + "anyOf": [ + { + "title": "boolean", + "type": "boolean" + }, + { + "title": "string", + "type": "string" + }, + { + "title": "number", + "type": "number", + "format": "double" + }, + { + "title": "function", + "$ref": "#/definitions/FnCall" + } + ] + }, + "FnCall": { + "oneOf": [ + { + "title": "&&", + "type": "object", + "required": [ + "&&" + ], + "properties": { + "&&": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + } + } + }, + "additionalProperties": false + }, + { + "title": "||", + "type": "object", + "required": [ + "||" + ], + "properties": { + "||": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + } + } + }, + "additionalProperties": false + }, + { + "title": "==", + "type": "object", + "required": [ + "==" + ], + "properties": { + "==": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + } + } + }, + "additionalProperties": false + }, + { + "title": "+", + "type": "object", + "required": [ + "+" + ], + "properties": { + "+": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + } + } + }, + "additionalProperties": false + }, + { + "title": "-", + "type": "object", + "required": [ + "-" + ], + "properties": { + "-": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + } + } + }, + "additionalProperties": false + }, + { + "title": "*", + "type": "object", + "required": [ + "*" + ], + "properties": { + "*": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + } + } + }, + "additionalProperties": false + }, + { + "title": "/", + "type": "object", + "required": [ + "/" + ], + "properties": { + "/": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + } + } + }, + "additionalProperties": false + }, + { + "title": "//", + "type": "object", + "required": [ + "//" + ], + "properties": { + "//": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + } + } + }, + "additionalProperties": false + }, + { + "title": "<", + "type": "object", + "required": [ + "<" + ], + "properties": { + "<": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "title": "<=", + "type": "object", + "required": [ + "<=" + ], + "properties": { + "<=": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "title": ">", + "type": "object", + "required": [ + ">" + ], + "properties": { + ">": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "title": ">=", + "type": "object", + "required": [ + ">=" + ], + "properties": { + ">=": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "title": "!", + "type": "object", + "required": [ + "!" + ], + "properties": { + "!": { + "$ref": "#/definitions/Expr" + } + }, + "additionalProperties": false + }, + { + "title": "is_substring", + "type": "object", + "required": [ + "is_substring" + ], + "properties": { + "is_substring": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "title": "starts_with", + "type": "object", + "required": [ + "starts_with" + ], + "properties": { + "starts_with": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "title": "ends_with", + "type": "object", + "required": [ + "ends_with" + ], + "properties": { + "ends_with": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "title": "to_lower", + "type": "object", + "required": [ + "to_lower" + ], + "properties": { + "to_lower": { + "$ref": "#/definitions/Expr" + } + }, + "additionalProperties": false + }, + { + "title": "to_upper", + "type": "object", + "required": [ + "to_upper" + ], + "properties": { + "to_upper": { + "$ref": "#/definitions/Expr" + } + }, + "additionalProperties": false + }, + { + "title": "has_label", + "type": "object", + "required": [ + "has_label" + ], + "properties": { + "has_label": { + "$ref": "#/definitions/Expr" + } + }, + "additionalProperties": false + }, + { + "title": "has_mcc", + "type": "object", + "required": [ + "has_mcc" + ], + "properties": { + "has_mcc": { + "$ref": "#/definitions/Expr" + } + }, + "additionalProperties": false + }, + { + "title": "get property", + "type": "object", + "required": [ + "get" + ], + "properties": { + "get": { + "$ref": "#/definitions/TxProp" + } + }, + "additionalProperties": false + } + ] + }, + "TxProp": { + "title": "properties", + "type": "string", + "enum": [ + "logo", + "website", + "merchant", + "description", + "merchant_id", + "location", + "person", + "transaction_type", + "amount", + "entry_type", + "account_holder_type", + "account_holder_id", + "account_holder_name" + ] + }, + "ModifyLabels": { + "title": "modify labels", + "oneOf": [ + { + "title": "add_label", + "type": "object", + "required": [ + "add_label" + ], + "properties": { + "add_label": { + "$ref": "#/definitions/Expr" + } + }, + "additionalProperties": false + }, + { + "title": "remove_label", + "type": "object", + "required": [ + "remove_label" + ], + "properties": { + "remove_label": { + "$ref": "#/definitions/Expr" + } + }, + "additionalProperties": false + }, + { + "title": "set_labels", + "type": "object", + "required": [ + "set_labels" + ], + "properties": { + "set_labels": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + } + } + }, + "additionalProperties": false + }, + { + "title": "add_mcc", + "type": "object", + "required": [ + "add_mcc" + ], + "properties": { + "add_mcc": { + "$ref": "#/definitions/Expr" + } + }, + "additionalProperties": false + }, + { + "title": "remove_mcc", + "type": "object", + "required": [ + "remove_mcc" + ], + "properties": { + "remove_mcc": { + "$ref": "#/definitions/Expr" + } + }, + "additionalProperties": false + }, + { + "title": "set_mcc", + "type": "object", + "required": [ + "set_mcc" + ], + "properties": { + "set_mcc": { + "type": "array", + "items": { + "$ref": "#/definitions/Expr" + } + } + }, + "additionalProperties": false + } + ] + }, + "Setter": { + "title": "set", + "type": "object", + "required": [ + "set", + "to" + ], + "properties": { + "set": { + "$ref": "#/definitions/EditableTxProp" + }, + "to": { + "$ref": "#/definitions/Expr" + } + } + }, + "EditableTxProp": { + "title": "editable properties", + "type": "string", + "enum": [ + "logo", + "website", + "merchant", + "merchant_id", + "location", + "person", + "transaction_type" + ] + } + } + } \ No newline at end of file diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/openapiDocs.test.ts b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/openapiDocs.test.ts index 2284ac9d559..f6d70ce1ecb 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/openapiDocs.test.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/openapiDocs.test.ts @@ -30,7 +30,7 @@ describe("openapi-ir-to-fern docs", async () => { } const definition = await workspace.workspace.getDefinition( { context }, - { enableUniqueErrorsPerEndpoint: true } + { enableUniqueErrorsPerEndpoint: true, preserveSchemaIds: true } ); // eslint-disable-next-line jest/no-standalone-expect expect(definition).toMatchFileSnapshot(`./__snapshots__/openapi-docs/${fixture.name}.json`); diff --git a/packages/cli/cli/src/cli.ts b/packages/cli/cli/src/cli.ts index 86461189e47..cf73175b2fb 100644 --- a/packages/cli/cli/src/cli.ts +++ b/packages/cli/cli/src/cli.ts @@ -929,8 +929,13 @@ function addWriteDefinitionCommand(cli: Argv<GlobalCliOptions>, cliContext: CliC .option("language", { choices: Object.values(generatorsYml.GenerationLanguage), description: "Write the definition for a particular SDK language" + }) + .option("preserve-schemas", { + string: true, + description: "Preserve potentially unsafe schema Ids in the generated fern definition" }), async (argv) => { + const preserveSchemaIds = argv.preserveSchemas != null; await cliContext.instrumentPostHogEvent({ command: "fern write-definition" }); @@ -938,10 +943,12 @@ function addWriteDefinitionCommand(cli: Argv<GlobalCliOptions>, cliContext: CliC project: await loadProjectAndRegisterWorkspacesWithContext(cliContext, { commandLineApiWorkspace: argv.api, defaultToAllApiWorkspaces: true, - sdkLanguage: argv.language + sdkLanguage: argv.language, + preserveSchemaIds }), cliContext, - sdkLanguage: argv.language + sdkLanguage: argv.language, + preserveSchemaIds }); } ); diff --git a/packages/cli/cli/src/commands/docs-dev/devDocsWorkspace.ts b/packages/cli/cli/src/commands/docs-dev/devDocsWorkspace.ts index 8c7d20f3984..82bd33ed42d 100644 --- a/packages/cli/cli/src/commands/docs-dev/devDocsWorkspace.ts +++ b/packages/cli/cli/src/commands/docs-dev/devDocsWorkspace.ts @@ -47,7 +47,7 @@ export async function previewDocsWorkspace({ for (const apiWorkspace of project.apiWorkspaces) { await cliContext.runTaskForWorkspace(apiWorkspace, async (apiWorkspaceContext) => { await validateAPIWorkspaceWithoutExiting({ - workspace: await apiWorkspace.toFernWorkspace({ context }), + workspace: await apiWorkspace.toFernWorkspace({ context }, { preserveSchemaIds: true }), context: apiWorkspaceContext, logWarnings: false, logSummary: false diff --git a/packages/cli/cli/src/commands/generate/generateDocsWorkspace.ts b/packages/cli/cli/src/commands/generate/generateDocsWorkspace.ts index e7a66447d1b..1bc187b20e8 100644 --- a/packages/cli/cli/src/commands/generate/generateDocsWorkspace.ts +++ b/packages/cli/cli/src/commands/generate/generateDocsWorkspace.ts @@ -52,7 +52,7 @@ export async function generateDocsWorkspace({ project.apiWorkspaces.map(async (workspace) => { return workspace.toFernWorkspace( { context }, - { enableUniqueErrorsPerEndpoint: true, detectGlobalHeaders: false } + { enableUniqueErrorsPerEndpoint: true, detectGlobalHeaders: false, preserveSchemaIds: true } ); }) ); diff --git a/packages/cli/cli/src/commands/write-definition/writeDefinitionForWorkspaces.ts b/packages/cli/cli/src/commands/write-definition/writeDefinitionForWorkspaces.ts index ed4896af2e4..90a584a93f5 100644 --- a/packages/cli/cli/src/commands/write-definition/writeDefinitionForWorkspaces.ts +++ b/packages/cli/cli/src/commands/write-definition/writeDefinitionForWorkspaces.ts @@ -13,11 +13,13 @@ import { CliContext } from "../../cli-context/CliContext"; export async function writeDefinitionForWorkspaces({ project, cliContext, - sdkLanguage + sdkLanguage, + preserveSchemaIds }: { project: Project; cliContext: CliContext; sdkLanguage: generatorsYml.GenerationLanguage | undefined; + preserveSchemaIds: boolean; }): Promise<void> { await Promise.all( project.apiWorkspaces.map(async (workspace) => { @@ -26,7 +28,7 @@ export async function writeDefinitionForWorkspaces({ await writeDefinitionForFernWorkspace({ workspace, context }); } else { await writeDefinitionForNonFernWorkspace({ - workspace: await workspace.toFernWorkspace({ context }), + workspace: await workspace.toFernWorkspace({ context }, { preserveSchemaIds }), context }); } diff --git a/packages/cli/cli/versions.yml b/packages/cli/cli/versions.yml index 0cf25f2d321..f46d09e23a8 100644 --- a/packages/cli/cli/versions.yml +++ b/packages/cli/cli/versions.yml @@ -1,3 +1,10 @@ +- changelogEntry: + - summary: | + Docs generation now preserves original model schema names. + type: internal + irVersion: 53 + version: 0.45.0-rc55 + - changelogEntry: - summary: | Removes errant minimum and maximums for 'float' types for docs. diff --git a/packages/cli/docs-preview/src/previewDocs.ts b/packages/cli/docs-preview/src/previewDocs.ts index d06d0173c40..26fb2132da9 100644 --- a/packages/cli/docs-preview/src/previewDocs.ts +++ b/packages/cli/docs-preview/src/previewDocs.ts @@ -39,7 +39,7 @@ export async function getPreviewDocsDefinition({ async (workspace) => await workspace.toFernWorkspace( { context }, - { enableUniqueErrorsPerEndpoint: true, detectGlobalHeaders: false } + { enableUniqueErrorsPerEndpoint: true, detectGlobalHeaders: false, preserveSchemaIds: true } ) ) ); diff --git a/packages/cli/lazy-fern-workspace/src/OSSWorkspace.ts b/packages/cli/lazy-fern-workspace/src/OSSWorkspace.ts index 514cd780450..c0ee0770218 100644 --- a/packages/cli/lazy-fern-workspace/src/OSSWorkspace.ts +++ b/packages/cli/lazy-fern-workspace/src/OSSWorkspace.ts @@ -104,9 +104,13 @@ export declare namespace OSSWorkspace { */ cooerceEnumsToLiterals?: boolean; /* - * Whehter or not to parse object query parameters. + * Whether or not to parse object query parameters. */ objectQueryParameters?: boolean; + /* + * Whether or not to preserve original schema ids. + */ + preserveSchemaIds?: boolean; } } @@ -302,5 +306,8 @@ function getOptionsOverridesFromSettings(settings?: OSSWorkspace.Settings): Part if (settings.cooerceEnumsToLiterals) { result.cooerceEnumsToLiterals = true; } + if (settings.preserveSchemaIds) { + result.preserveSchemaIds = true; + } return result; } diff --git a/packages/cli/project-loader/src/loadProject.ts b/packages/cli/project-loader/src/loadProject.ts index 52800b299f8..93e88fec5c3 100644 --- a/packages/cli/project-loader/src/loadProject.ts +++ b/packages/cli/project-loader/src/loadProject.ts @@ -30,6 +30,7 @@ export declare namespace loadProject { context: TaskContext; nameOverride?: string; sdkLanguage?: generatorsYml.GenerationLanguage; + preserveSchemaIds?: boolean; } export interface LoadProjectFromDirectoryArgs extends Args {