box-node-sdk
Version:
Official SDK for Box Platform APIs
240 lines (239 loc) • 8.71 kB
text/typescript
import { serializeQueryAncestorReferenceV2026R0 } from './queryAncestorReferenceV2026R0';
import { deserializeQueryAncestorReferenceV2026R0 } from './queryAncestorReferenceV2026R0';
import { serializeQueryInsightsGroupByV2026R0 } from './queryInsightsGroupByV2026R0';
import { deserializeQueryInsightsGroupByV2026R0 } from './queryInsightsGroupByV2026R0';
import { serializeQueryInsightsMetricDefinitionV2026R0 } from './queryInsightsMetricDefinitionV2026R0';
import { deserializeQueryInsightsMetricDefinitionV2026R0 } from './queryInsightsMetricDefinitionV2026R0';
import { QueryAncestorReferenceV2026R0 } from './queryAncestorReferenceV2026R0';
import { QueryInsightsGroupByV2026R0 } from './queryInsightsGroupByV2026R0';
import { QueryInsightsMetricDefinitionV2026R0 } from './queryInsightsMetricDefinitionV2026R0';
import { BoxSdkError } from '../../box/errors';
import { SerializedData } from '../../serialization/json';
import { sdIsEmpty } from '../../serialization/json';
import { sdIsBoolean } from '../../serialization/json';
import { sdIsNumber } from '../../serialization/json';
import { sdIsString } from '../../serialization/json';
import { sdIsList } from '../../serialization/json';
import { sdIsMap } from '../../serialization/json';
export interface QueryInsightsRequestBodyV2026R0QueryField {
/**
* A logical expression used to filter the dataset prior to metric
* computation, similar to an SQL `WHERE` clause. May include
* named parameters referenced as `:placeholder`. */
readonly predicate: string;
/**
* A map of placeholder names (without the `:` prefix) to their values.
* Required only when the predicate contains parameter placeholders. The
* type of each value must match the type of the field it is compared to. */
readonly params?: {
readonly [key: string]: any;
};
/**
* Restricts results to items contained within any of the specified
* ancestors. The user must have access to every listed ancestor. When
* omitted, insights are computed across all accessible items. */
readonly ancestors?: readonly QueryAncestorReferenceV2026R0[];
/**
* Defines how data is grouped for insights computation. Currently only a
* single grouping field is supported. */
readonly groupBy?: readonly QueryInsightsGroupByV2026R0[];
readonly rawData?: SerializedData;
}
export interface QueryInsightsRequestBodyV2026R0 {
/**
* The filtering and grouping definition. Filters are applied first, followed
* by grouping, before metrics are computed. */
readonly query: QueryInsightsRequestBodyV2026R0QueryField;
/**
* A map of user-defined metric aliases to their definitions. A maximum of 10
* metrics may be defined. Each alias must be a unique, non-empty string of up
* to 256 characters, containing only letters, digits, `_`, `-`, or `.`, and
* must not start with a digit, `_`, `-`, or `.`. May be empty to request
* only a total count. */
readonly metrics: {
readonly [key: string]: QueryInsightsMetricDefinitionV2026R0;
};
readonly rawData?: SerializedData;
}
export function serializeQueryInsightsRequestBodyV2026R0QueryField(
val: QueryInsightsRequestBodyV2026R0QueryField,
): SerializedData {
return {
['predicate']: val.predicate,
['params']:
val.params == void 0
? val.params
: (Object.fromEntries(
Object.entries(val.params).map(([k, v]: [string, any]) => [
k,
(function (v: any): any {
return v;
})(v),
]),
) as {
readonly [key: string]: any;
}),
['ancestors']:
val.ancestors == void 0
? val.ancestors
: (val.ancestors.map(function (
item: QueryAncestorReferenceV2026R0,
): SerializedData {
return serializeQueryAncestorReferenceV2026R0(item);
}) as readonly any[]),
['group_by']:
val.groupBy == void 0
? val.groupBy
: (val.groupBy.map(function (
item: QueryInsightsGroupByV2026R0,
): SerializedData {
return serializeQueryInsightsGroupByV2026R0(item);
}) as readonly any[]),
};
}
export function deserializeQueryInsightsRequestBodyV2026R0QueryField(
val: SerializedData,
): QueryInsightsRequestBodyV2026R0QueryField {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message:
'Expecting a map for "QueryInsightsRequestBodyV2026R0QueryField"',
});
}
if (val.predicate == void 0) {
throw new BoxSdkError({
message:
'Expecting "predicate" of type "QueryInsightsRequestBodyV2026R0QueryField" to be defined',
});
}
if (!sdIsString(val.predicate)) {
throw new BoxSdkError({
message:
'Expecting string for "predicate" of type "QueryInsightsRequestBodyV2026R0QueryField"',
});
}
const predicate: string = val.predicate;
if (!(val.params == void 0) && !sdIsMap(val.params)) {
throw new BoxSdkError({
message:
'Expecting object for "params" of type "QueryInsightsRequestBodyV2026R0QueryField"',
});
}
const params:
| undefined
| {
readonly [key: string]: any;
} =
val.params == void 0
? void 0
: sdIsMap(val.params)
? (Object.fromEntries(
Object.entries(val.params).map(([k, v]: [string, any]) => [
k,
(function (v: any): any {
return v;
})(v),
]),
) as {
readonly [key: string]: any;
})
: {};
if (!(val.ancestors == void 0) && !sdIsList(val.ancestors)) {
throw new BoxSdkError({
message:
'Expecting array for "ancestors" of type "QueryInsightsRequestBodyV2026R0QueryField"',
});
}
const ancestors: undefined | readonly QueryAncestorReferenceV2026R0[] =
val.ancestors == void 0
? void 0
: sdIsList(val.ancestors)
? (val.ancestors.map(function (
itm: SerializedData,
): QueryAncestorReferenceV2026R0 {
return deserializeQueryAncestorReferenceV2026R0(itm);
}) as readonly any[])
: [];
if (!(val.group_by == void 0) && !sdIsList(val.group_by)) {
throw new BoxSdkError({
message:
'Expecting array for "group_by" of type "QueryInsightsRequestBodyV2026R0QueryField"',
});
}
const groupBy: undefined | readonly QueryInsightsGroupByV2026R0[] =
val.group_by == void 0
? void 0
: sdIsList(val.group_by)
? (val.group_by.map(function (
itm: SerializedData,
): QueryInsightsGroupByV2026R0 {
return deserializeQueryInsightsGroupByV2026R0(itm);
}) as readonly any[])
: [];
return {
predicate: predicate,
params: params,
ancestors: ancestors,
groupBy: groupBy,
} satisfies QueryInsightsRequestBodyV2026R0QueryField;
}
export function serializeQueryInsightsRequestBodyV2026R0(
val: QueryInsightsRequestBodyV2026R0,
): SerializedData {
return {
['query']: serializeQueryInsightsRequestBodyV2026R0QueryField(val.query),
['metrics']: Object.fromEntries(
Object.entries(val.metrics).map(([k, v]: [string, any]) => [
k,
serializeQueryInsightsMetricDefinitionV2026R0(v),
]),
) as {
readonly [key: string]: any;
},
};
}
export function deserializeQueryInsightsRequestBodyV2026R0(
val: SerializedData,
): QueryInsightsRequestBodyV2026R0 {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message: 'Expecting a map for "QueryInsightsRequestBodyV2026R0"',
});
}
if (val.query == void 0) {
throw new BoxSdkError({
message:
'Expecting "query" of type "QueryInsightsRequestBodyV2026R0" to be defined',
});
}
const query: QueryInsightsRequestBodyV2026R0QueryField =
deserializeQueryInsightsRequestBodyV2026R0QueryField(val.query);
if (val.metrics == void 0) {
throw new BoxSdkError({
message:
'Expecting "metrics" of type "QueryInsightsRequestBodyV2026R0" to be defined',
});
}
if (!sdIsMap(val.metrics)) {
throw new BoxSdkError({
message:
'Expecting object for "metrics" of type "QueryInsightsRequestBodyV2026R0"',
});
}
const metrics: {
readonly [key: string]: QueryInsightsMetricDefinitionV2026R0;
} = sdIsMap(val.metrics)
? (Object.fromEntries(
Object.entries(val.metrics).map(([k, v]: [string, any]) => [
k,
deserializeQueryInsightsMetricDefinitionV2026R0(v),
]),
) as {
readonly [key: string]: any;
})
: {};
return {
query: query,
metrics: metrics,
} satisfies QueryInsightsRequestBodyV2026R0;
}