Variable productLimitConfigApiConst
productLimitConfigApi: {
"/v1/product/limit-config": {
get: {
querystring: TObject<
{ products: TOptional<TString>; statuses: TOptional<TString> },
>;
response: {
"200": TObject<
{
items: TArray<
TObject<
{
createdAt: TString;
product: TUnion<[(...), (...)]>;
rules: TArray<TObject<(...)>>;
status: TUnsafe<(...) | (...)>;
updatedAt: TString;
},
>,
>;
},
>;
};
summary: "Search all existing product limit configurations";
tags: readonly ["Product limit config"];
};
post: {
body: TObject<
{
product: TUnion<
[
TUnsafe<
| "organization.v1"
| "identity.v1"
| "card.physical_card.v1"
| "card.virtual_card.v1"
| "deposit.rtp.v1"
| "deposit.ach_credit.v1"
| "deposit.us_bank_ach.v1"
| "deposit.us_cash.v1"
| "deposit.us_wire.v1"
| "deposit.swift_wire.v1"
| "transfer.redemption.v1"
| "swap.v1"
| "withdraw.blockchain.v1"
| "withdraw.ke_bank.v1"
| "withdraw.ke_momo.v1"
| "withdraw.mx_bank_spei.v1"
| "withdraw.swift_wire.v1"
| "withdraw.tg_momo.v1"
| "withdraw.us_bank_ach.v1"
| "withdraw.us_instant.v1"
| "withdraw.us_wire.v1"
| "withdraw.ach_pull.v1"
| "withdraw.us_wire_drawdown.v1"
| "account.virtual-account.v1",
>,
TUnsafe<"deposit.*" | "withdraw.*">,
],
>;
rules: TArray<
TObject<
{
matcher: TObject<{}>;
status: TUnsafe<"ACTIVE" | "DISABLED">;
value: TArray<TIntersect<[(...), (...)]>>;
},
>,
>;
status: TUnsafe<"ACTIVE" | "DISABLED">;
},
>;
description: "A customer can configure limits for transactions that their identities or organizations can perform.\n\nCFX platform enforces some system-wide limits. Customer's configurations are only considered if they fall below the system-wide ones.\n\nIf the configuration already exists, this operation completely replaces with the newly provided configurations. See the [configuration guide](https://docs.moveusd.com/docs/product-configurations) for an introduction on how to use rules.\n\nNon-USD usage is converted using the exchange rate at the time of transaction, before it is compared with the configured limit.\n\nCurrently supported fields for the matcher are:\n\n* `entityType`: `IDENTITY` or `ORGANIZATION`\n* `countryCode`: 2-letter ISO country code, e.g. `US`, `MX`\n* `sourceCurrency`: The currency code, e.g. `MOVEUSD`, `USDC`, `USD`, etc.\n* `targetCurrency`: The currency code, e.g. `MOVEUSD`, `USDC`, `USD`, etc.";
response: {
"200": TObject<
{
createdAt: TString;
product: TUnion<
[
TUnsafe<
| "organization.v1"
| "identity.v1"
| "card.physical_card.v1"
| "card.virtual_card.v1"
| "deposit.rtp.v1"
| "deposit.ach_credit.v1"
| "deposit.us_bank_ach.v1"
| "deposit.us_cash.v1"
| "deposit.us_wire.v1"
| "deposit.swift_wire.v1"
| "transfer.redemption.v1"
| "swap.v1"
| "withdraw.blockchain.v1"
| "withdraw.ke_bank.v1"
| "withdraw.ke_momo.v1"
| "withdraw.mx_bank_spei.v1"
| "withdraw.swift_wire.v1"
| "withdraw.tg_momo.v1"
| "withdraw.us_bank_ach.v1"
| "withdraw.us_instant.v1"
| "withdraw.us_wire.v1"
| "withdraw.ach_pull.v1"
| "withdraw.us_wire_drawdown.v1"
| "account.virtual-account.v1",
>,
TUnsafe<"deposit.*" | "withdraw.*">,
],
>;
rules: TArray<
TObject<
{
matcher: TObject<{}>;
status: TUnsafe<(...) | (...)>;
value: TArray<TIntersect<(...)>>;
},
>,
>;
status: TUnsafe<"ACTIVE" | "DISABLED">;
updatedAt: TString;
},
>;
"400": TIntersect<
[
TObject<{ code: TLiteral<"INVALID_FIELD">; message: TString }>,
TObject<{ fields: TArray<TUnsafe<"rules[].value[].value">> }>,
],
>;
};
summary: "Create or update a product limit configuration";
tags: readonly ["Product limit config"];
};
};
"/v1/product/limit-config/{product}": {
delete: {
params: TObject<
{
product: TUnion<
[
TUnsafe<
| "organization.v1"
| "identity.v1"
| "card.physical_card.v1"
| "card.virtual_card.v1"
| "deposit.rtp.v1"
| "deposit.ach_credit.v1"
| "deposit.us_bank_ach.v1"
| "deposit.us_cash.v1"
| "deposit.us_wire.v1"
| "deposit.swift_wire.v1"
| "transfer.redemption.v1"
| "swap.v1"
| "withdraw.blockchain.v1"
| "withdraw.ke_bank.v1"
| "withdraw.ke_momo.v1"
| "withdraw.mx_bank_spei.v1"
| "withdraw.swift_wire.v1"
| "withdraw.tg_momo.v1"
| "withdraw.us_bank_ach.v1"
| "withdraw.us_instant.v1"
| "withdraw.us_wire.v1"
| "withdraw.ach_pull.v1"
| "withdraw.us_wire_drawdown.v1"
| "account.virtual-account.v1",
>,
TUnsafe<"deposit.*" | "withdraw.*">,
],
>;
},
>;
response: {
"204": TNull;
"404": TObject<{ code: TLiteral<"NOT_FOUND">; message: TString }>;
};
summary: "Delete an existing product limit configuration";
tags: readonly ["Product limit config"];
};
};
"/v1/product/limit-config/test": {
post: {
body: TIntersect<
[
TObject<
{
countryCode: TString;
product: TUnion<
[
TUnsafe<
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...),
>,
TUnsafe<(...) | (...)>,
],
>;
sourceCurrency: TString;
targetCurrency: TString;
},
>,
TUnion<
[
TObject<
{
entityType: TLiteral<"IDENTITY">;
verifications: TArray<TLiteral<(...)>>;
},
>,
TObject<{ entityType: TLiteral<"ORGANIZATION"> }>,
],
>,
],
>;
description: "This operation simulates the calculation of limits for the provided criteria. Both customer and admin configurations are taken into account.\n\nUse this operation to test whether the desired outcome is achieved after making configuration changes.";
response: {
"200": TObject<
{
applicableRules: TArray<
TIntersect<
[
TObject<{ matcher: ...; status: ...; value: ... }>,
TObject<{ type: ... }>,
],
>,
>;
effective: TArray<
TIntersect<[TObject<{ limit: ... }>, TUnion<[(...), (...)]>]>,
>;
},
>;
};
summary: "Test the product limit configurations";
tags: readonly ["Product limit config"];
};
};
} = ...
Type Declaration
Readonly/v1/product/limit-config: {
get: {
querystring: TObject<
{ products: TOptional<TString>; statuses: TOptional<TString> },
>;
response: {
"200": TObject<
{
items: TArray<
TObject<
{
createdAt: TString;
product: TUnion<[(...), (...)]>;
rules: TArray<TObject<(...)>>;
status: TUnsafe<(...) | (...)>;
updatedAt: TString;
},
>,
>;
},
>;
};
summary: "Search all existing product limit configurations";
tags: readonly ["Product limit config"];
};
post: {
body: TObject<
{
product: TUnion<
[
TUnsafe<
| "organization.v1"
| "identity.v1"
| "card.physical_card.v1"
| "card.virtual_card.v1"
| "deposit.rtp.v1"
| "deposit.ach_credit.v1"
| "deposit.us_bank_ach.v1"
| "deposit.us_cash.v1"
| "deposit.us_wire.v1"
| "deposit.swift_wire.v1"
| "transfer.redemption.v1"
| "swap.v1"
| "withdraw.blockchain.v1"
| "withdraw.ke_bank.v1"
| "withdraw.ke_momo.v1"
| "withdraw.mx_bank_spei.v1"
| "withdraw.swift_wire.v1"
| "withdraw.tg_momo.v1"
| "withdraw.us_bank_ach.v1"
| "withdraw.us_instant.v1"
| "withdraw.us_wire.v1"
| "withdraw.ach_pull.v1"
| "withdraw.us_wire_drawdown.v1"
| "account.virtual-account.v1",
>,
TUnsafe<"deposit.*" | "withdraw.*">,
],
>;
rules: TArray<
TObject<
{
matcher: TObject<{}>;
status: TUnsafe<"ACTIVE" | "DISABLED">;
value: TArray<TIntersect<[(...), (...)]>>;
},
>,
>;
status: TUnsafe<"ACTIVE" | "DISABLED">;
},
>;
description: "A customer can configure limits for transactions that their identities or organizations can perform.\n\nCFX platform enforces some system-wide limits. Customer's configurations are only considered if they fall below the system-wide ones.\n\nIf the configuration already exists, this operation completely replaces with the newly provided configurations. See the [configuration guide](https://docs.moveusd.com/docs/product-configurations) for an introduction on how to use rules.\n\nNon-USD usage is converted using the exchange rate at the time of transaction, before it is compared with the configured limit.\n\nCurrently supported fields for the matcher are:\n\n* `entityType`: `IDENTITY` or `ORGANIZATION`\n* `countryCode`: 2-letter ISO country code, e.g. `US`, `MX`\n* `sourceCurrency`: The currency code, e.g. `MOVEUSD`, `USDC`, `USD`, etc.\n* `targetCurrency`: The currency code, e.g. `MOVEUSD`, `USDC`, `USD`, etc.";
response: {
"200": TObject<
{
createdAt: TString;
product: TUnion<
[
TUnsafe<
| "organization.v1"
| "identity.v1"
| "card.physical_card.v1"
| "card.virtual_card.v1"
| "deposit.rtp.v1"
| "deposit.ach_credit.v1"
| "deposit.us_bank_ach.v1"
| "deposit.us_cash.v1"
| "deposit.us_wire.v1"
| "deposit.swift_wire.v1"
| "transfer.redemption.v1"
| "swap.v1"
| "withdraw.blockchain.v1"
| "withdraw.ke_bank.v1"
| "withdraw.ke_momo.v1"
| "withdraw.mx_bank_spei.v1"
| "withdraw.swift_wire.v1"
| "withdraw.tg_momo.v1"
| "withdraw.us_bank_ach.v1"
| "withdraw.us_instant.v1"
| "withdraw.us_wire.v1"
| "withdraw.ach_pull.v1"
| "withdraw.us_wire_drawdown.v1"
| "account.virtual-account.v1",
>,
TUnsafe<"deposit.*" | "withdraw.*">,
],
>;
rules: TArray<
TObject<
{
matcher: TObject<{}>;
status: TUnsafe<(...) | (...)>;
value: TArray<TIntersect<(...)>>;
},
>,
>;
status: TUnsafe<"ACTIVE" | "DISABLED">;
updatedAt: TString;
},
>;
"400": TIntersect<
[
TObject<{ code: TLiteral<"INVALID_FIELD">; message: TString }>,
TObject<{ fields: TArray<TUnsafe<"rules[].value[].value">> }>,
],
>;
};
summary: "Create or update a product limit configuration";
tags: readonly ["Product limit config"];
};
}
Readonly/v1/product/limit-config/{product}: {
delete: {
params: TObject<
{
product: TUnion<
[
TUnsafe<
| "organization.v1"
| "identity.v1"
| "card.physical_card.v1"
| "card.virtual_card.v1"
| "deposit.rtp.v1"
| "deposit.ach_credit.v1"
| "deposit.us_bank_ach.v1"
| "deposit.us_cash.v1"
| "deposit.us_wire.v1"
| "deposit.swift_wire.v1"
| "transfer.redemption.v1"
| "swap.v1"
| "withdraw.blockchain.v1"
| "withdraw.ke_bank.v1"
| "withdraw.ke_momo.v1"
| "withdraw.mx_bank_spei.v1"
| "withdraw.swift_wire.v1"
| "withdraw.tg_momo.v1"
| "withdraw.us_bank_ach.v1"
| "withdraw.us_instant.v1"
| "withdraw.us_wire.v1"
| "withdraw.ach_pull.v1"
| "withdraw.us_wire_drawdown.v1"
| "account.virtual-account.v1",
>,
TUnsafe<"deposit.*" | "withdraw.*">,
],
>;
},
>;
response: {
"204": TNull;
"404": TObject<{ code: TLiteral<"NOT_FOUND">; message: TString }>;
};
summary: "Delete an existing product limit configuration";
tags: readonly ["Product limit config"];
};
}
Readonly/v1/product/limit-config/test: {
post: {
body: TIntersect<
[
TObject<
{
countryCode: TString;
product: TUnion<
[
TUnsafe<
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...),
>,
TUnsafe<(...) | (...)>,
],
>;
sourceCurrency: TString;
targetCurrency: TString;
},
>,
TUnion<
[
TObject<
{
entityType: TLiteral<"IDENTITY">;
verifications: TArray<TLiteral<(...)>>;
},
>,
TObject<{ entityType: TLiteral<"ORGANIZATION"> }>,
],
>,
],
>;
description: "This operation simulates the calculation of limits for the provided criteria. Both customer and admin configurations are taken into account.\n\nUse this operation to test whether the desired outcome is achieved after making configuration changes.";
response: {
"200": TObject<
{
applicableRules: TArray<
TIntersect<
[
TObject<{ matcher: ...; status: ...; value: ... }>,
TObject<{ type: ... }>,
],
>,
>;
effective: TArray<
TIntersect<[TObject<{ limit: ... }>, TUnion<[(...), (...)]>]>,
>;
},
>;
};
summary: "Test the product limit configurations";
tags: readonly ["Product limit config"];
};
}