Skip to content

Commit d159548

Browse files
feat: Support additionalProperties of type any in Python and TS (box/box-codegen#453) (#97)
1 parent 06680c0 commit d159548

File tree

8 files changed

+290
-16
lines changed

8 files changed

+290
-16
lines changed

.codegen.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "engineHash": "183c130", "specHash": "b2f7568", "version": "0.5.1" }
1+
{ "engineHash": "3d3d072", "specHash": "b2f7568", "version": "0.5.1" }

docs/folderMetadata.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@ See the endpoint docs at
200200
```ts
201201
await client.folderMetadata.deleteFolderMetadataById(
202202
folder.id,
203-
'global' as DeleteFolderMetadataByIdScope,
204-
'properties'
203+
'enterprise' as DeleteFolderMetadataByIdScope,
204+
templateKey
205205
);
206206
```
207207

src/managers/fileMetadata.generated.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export class GetFileMetadataByIdHeaders {
5252
}
5353
export type CreateFileMetadataByIdScope = 'global' | 'enterprise';
5454
export type CreateFileMetadataByIdRequestBody = {
55-
readonly [key: string]: string;
55+
readonly [key: string]: any;
5656
};
5757
export class CreateFileMetadataByIdHeaders {
5858
readonly extraHeaders?: {
@@ -333,7 +333,16 @@ export function deserializeCreateFileMetadataByIdScope(
333333
export function serializeCreateFileMetadataByIdRequestBody(
334334
val: any
335335
): SerializedData {
336-
return val;
336+
return Object.fromEntries(
337+
Object.entries(val).map(([k, v]: [string, any]) => [
338+
k,
339+
(function (v: any): any {
340+
return v;
341+
})(v),
342+
])
343+
) as {
344+
readonly [key: string]: any;
345+
};
337346
}
338347
export function deserializeCreateFileMetadataByIdRequestBody(
339348
val: any

src/managers/folderMetadata.generated.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export class GetFolderMetadataByIdHeaders {
5252
}
5353
export type CreateFolderMetadataByIdScope = 'global' | 'enterprise';
5454
export type CreateFolderMetadataByIdRequestBody = {
55-
readonly [key: string]: string;
55+
readonly [key: string]: any;
5656
};
5757
export class CreateFolderMetadataByIdHeaders {
5858
readonly extraHeaders?: {
@@ -337,7 +337,16 @@ export function deserializeCreateFolderMetadataByIdScope(
337337
export function serializeCreateFolderMetadataByIdRequestBody(
338338
val: any
339339
): SerializedData {
340-
return val;
340+
return Object.fromEntries(
341+
Object.entries(val).map(([k, v]: [string, any]) => [
342+
k,
343+
(function (v: any): any {
344+
return v;
345+
})(v),
346+
])
347+
) as {
348+
readonly [key: string]: any;
349+
};
341350
}
342351
export function deserializeCreateFolderMetadataByIdRequestBody(
343352
val: any

src/managers/metadataTemplates.generated.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ export type UpdateMetadataTemplateRequestBodyOpField =
7171
export interface UpdateMetadataTemplateRequestBody {
7272
readonly op: UpdateMetadataTemplateRequestBodyOpField;
7373
readonly data?: {
74-
readonly [key: string]: string;
74+
readonly [key: string]: any;
7575
};
7676
readonly fieldKey?: string;
7777
readonly fieldKeys?: readonly string[];
@@ -563,7 +563,19 @@ export function serializeUpdateMetadataTemplateRequestBody(
563563
): SerializedData {
564564
return {
565565
['op']: serializeUpdateMetadataTemplateRequestBodyOpField(val.op),
566-
['data']: val.data == void 0 ? void 0 : val.data,
566+
['data']:
567+
val.data == void 0
568+
? void 0
569+
: (Object.fromEntries(
570+
Object.entries(val.data).map(([k, v]: [string, any]) => [
571+
k,
572+
(function (v: any): any {
573+
return v;
574+
})(v),
575+
])
576+
) as {
577+
readonly [key: string]: any;
578+
}),
567579
['fieldKey']: val.fieldKey == void 0 ? void 0 : val.fieldKey,
568580
['fieldKeys']:
569581
val.fieldKeys == void 0
@@ -596,7 +608,7 @@ export function deserializeUpdateMetadataTemplateRequestBody(
596608
const data:
597609
| undefined
598610
| {
599-
readonly [key: string]: string;
611+
readonly [key: string]: any;
600612
} = val.data == void 0 ? void 0 : val.data;
601613
const fieldKey: undefined | string =
602614
val.fieldKey == void 0 ? void 0 : val.fieldKey;

src/schemas.generated.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ export interface AccessToken {
312312
readonly issuedTokenType?: AccessTokenIssuedTokenTypeField;
313313
}
314314
export type GenericSource = {
315-
readonly [key: string]: string;
315+
readonly [key: string]: any;
316316
};
317317
export type IntegrationMappingBaseIntegrationTypeField = 'slack';
318318
export interface IntegrationMappingBase {
@@ -400,7 +400,7 @@ export type MetadataFull = Metadata & {
400400
readonly type?: string;
401401
readonly typeVersion?: number;
402402
readonly extraData?: {
403-
readonly [key: string]: string;
403+
readonly [key: string]: any;
404404
};
405405
};
406406
export type MetadataCascadePolicyTypeField = 'metadata_cascade_policy';
@@ -4857,7 +4857,16 @@ export function deserializeAccessToken(val: any): AccessToken {
48574857
} satisfies AccessToken;
48584858
}
48594859
export function serializeGenericSource(val: any): SerializedData {
4860-
return val;
4860+
return Object.fromEntries(
4861+
Object.entries(val).map(([k, v]: [string, any]) => [
4862+
k,
4863+
(function (v: any): any {
4864+
return v;
4865+
})(v),
4866+
])
4867+
) as {
4868+
readonly [key: string]: any;
4869+
};
48614870
}
48624871
export function deserializeGenericSource(val: any): GenericSource {
48634872
return val;
@@ -5519,7 +5528,7 @@ export function deserializeMetadataFull(val: any): MetadataFull {
55195528
const extraData:
55205529
| undefined
55215530
| {
5522-
readonly [key: string]: string;
5531+
readonly [key: string]: any;
55235532
} = val == void 0 ? void 0 : val;
55245533
const parent: undefined | string =
55255534
val.$parent == void 0 ? void 0 : val.$parent;

src/test/fileMetadata.generated.test.ts

Lines changed: 118 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,18 @@ import { serializeUpdateFileMetadataByIdRequestBodyOpField } from '../managers/f
1616
import { deserializeUpdateFileMetadataByIdRequestBodyOpField } from '../managers/fileMetadata.generated.js';
1717
import { serializeDeleteFileMetadataByIdScope } from '../managers/fileMetadata.generated.js';
1818
import { deserializeDeleteFileMetadataByIdScope } from '../managers/fileMetadata.generated.js';
19+
import { serializeMetadataTemplate } from '../schemas.generated.js';
20+
import { deserializeMetadataTemplate } from '../schemas.generated.js';
21+
import { serializeCreateMetadataTemplateRequestBody } from '../managers/metadataTemplates.generated.js';
22+
import { deserializeCreateMetadataTemplateRequestBody } from '../managers/metadataTemplates.generated.js';
23+
import { serializeCreateMetadataTemplateRequestBodyFieldsField } from '../managers/metadataTemplates.generated.js';
24+
import { deserializeCreateMetadataTemplateRequestBodyFieldsField } from '../managers/metadataTemplates.generated.js';
25+
import { serializeCreateMetadataTemplateRequestBodyFieldsTypeField } from '../managers/metadataTemplates.generated.js';
26+
import { deserializeCreateMetadataTemplateRequestBodyFieldsTypeField } from '../managers/metadataTemplates.generated.js';
27+
import { serializeCreateMetadataTemplateRequestBodyFieldsOptionsField } from '../managers/metadataTemplates.generated.js';
28+
import { deserializeCreateMetadataTemplateRequestBodyFieldsOptionsField } from '../managers/metadataTemplates.generated.js';
29+
import { serializeDeleteMetadataTemplateScope } from '../managers/metadataTemplates.generated.js';
30+
import { deserializeDeleteMetadataTemplateScope } from '../managers/metadataTemplates.generated.js';
1931
import { BoxClient } from '../client.generated.js';
2032
import { FileFull } from '../schemas.generated.js';
2133
import { Metadatas } from '../schemas.generated.js';
@@ -26,6 +38,12 @@ import { UpdateFileMetadataByIdScope } from '../managers/fileMetadata.generated.
2638
import { UpdateFileMetadataByIdRequestBody } from '../managers/fileMetadata.generated.js';
2739
import { UpdateFileMetadataByIdRequestBodyOpField } from '../managers/fileMetadata.generated.js';
2840
import { DeleteFileMetadataByIdScope } from '../managers/fileMetadata.generated.js';
41+
import { MetadataTemplate } from '../schemas.generated.js';
42+
import { CreateMetadataTemplateRequestBody } from '../managers/metadataTemplates.generated.js';
43+
import { CreateMetadataTemplateRequestBodyFieldsField } from '../managers/metadataTemplates.generated.js';
44+
import { CreateMetadataTemplateRequestBodyFieldsTypeField } from '../managers/metadataTemplates.generated.js';
45+
import { CreateMetadataTemplateRequestBodyFieldsOptionsField } from '../managers/metadataTemplates.generated.js';
46+
import { DeleteMetadataTemplateScope } from '../managers/metadataTemplates.generated.js';
2947
import { generateByteStream } from '../internal/utils.js';
3048
import { getUuid } from '../internal/utils.js';
3149
import { getDefaultClient } from './commons.generated.js';
@@ -40,7 +58,7 @@ import { sdIsString } from '../serialization/json.js';
4058
import { sdIsList } from '../serialization/json.js';
4159
import { sdIsMap } from '../serialization/json.js';
4260
export const client: any = getDefaultClient();
43-
test('testFileMetadata', async function testFileMetadata(): Promise<any> {
61+
test('testGlobalFileMetadata', async function testGlobalFileMetadata(): Promise<any> {
4462
const file: any = await uploadNewFile();
4563
const fileMetadata: any = await client.fileMetadata.getFileMetadata(file.id);
4664
if (!(fileMetadata.entries!.length == 0)) {
@@ -105,4 +123,103 @@ test('testFileMetadata', async function testFileMetadata(): Promise<any> {
105123
}).rejects.toThrow();
106124
await client.files.deleteFileById(file.id);
107125
});
126+
test('testEnterpriseFileMetadata', async function testEnterpriseFileMetadata(): Promise<any> {
127+
const file: any = await uploadNewFile();
128+
const templateKey: any = ''.concat('key', getUuid()) as string;
129+
const template: any = await client.metadataTemplates.createMetadataTemplate({
130+
scope: 'enterprise',
131+
displayName: templateKey,
132+
templateKey: templateKey,
133+
fields: [
134+
{
135+
type: 'string' as CreateMetadataTemplateRequestBodyFieldsTypeField,
136+
key: 'name',
137+
displayName: 'name',
138+
} satisfies CreateMetadataTemplateRequestBodyFieldsField,
139+
{
140+
type: 'float' as CreateMetadataTemplateRequestBodyFieldsTypeField,
141+
key: 'age',
142+
displayName: 'age',
143+
} satisfies CreateMetadataTemplateRequestBodyFieldsField,
144+
{
145+
type: 'date' as CreateMetadataTemplateRequestBodyFieldsTypeField,
146+
key: 'birthDate',
147+
displayName: 'birthDate',
148+
} satisfies CreateMetadataTemplateRequestBodyFieldsField,
149+
{
150+
type: 'enum' as CreateMetadataTemplateRequestBodyFieldsTypeField,
151+
key: 'countryCode',
152+
displayName: 'countryCode',
153+
options: [
154+
{
155+
key: 'US',
156+
} satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField,
157+
{
158+
key: 'CA',
159+
} satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField,
160+
],
161+
} satisfies CreateMetadataTemplateRequestBodyFieldsField,
162+
{
163+
type: 'multiSelect' as CreateMetadataTemplateRequestBodyFieldsTypeField,
164+
key: 'sports',
165+
displayName: 'sports',
166+
options: [
167+
{
168+
key: 'basketball',
169+
} satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField,
170+
{
171+
key: 'football',
172+
} satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField,
173+
{
174+
key: 'tennis',
175+
} satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField,
176+
],
177+
} satisfies CreateMetadataTemplateRequestBodyFieldsField,
178+
],
179+
} satisfies CreateMetadataTemplateRequestBody);
180+
const createdMetadata: any = await client.fileMetadata.createFileMetadataById(
181+
file.id,
182+
'enterprise' as CreateFileMetadataByIdScope,
183+
templateKey,
184+
{
185+
['name']: 'John',
186+
['age']: 23,
187+
['birthDate']: '2001-01-03T02:20:50.520Z',
188+
['countryCode']: 'US',
189+
['sports']: ['basketball', 'tennis'],
190+
}
191+
);
192+
if (!((toString(createdMetadata.template) as string) == templateKey)) {
193+
throw new Error('Assertion failed');
194+
}
195+
if (!(createdMetadata.extraData!.name == 'John')) {
196+
throw new Error('Assertion failed');
197+
}
198+
if (!(createdMetadata.extraData!.age == 23)) {
199+
throw new Error('Assertion failed');
200+
}
201+
if (!(createdMetadata.extraData!.birthDate == '2001-01-03T02:20:50.520Z')) {
202+
throw new Error('Assertion failed');
203+
}
204+
if (!(createdMetadata.extraData!.countryCode == 'US')) {
205+
throw new Error('Assertion failed');
206+
}
207+
const sports: any = createdMetadata.extraData!.sports;
208+
if (!(sports[0] == 'basketball')) {
209+
throw new Error('Assertion failed');
210+
}
211+
if (!(sports[1] == 'tennis')) {
212+
throw new Error('Assertion failed');
213+
}
214+
await client.fileMetadata.deleteFileMetadataById(
215+
file.id,
216+
'enterprise' as DeleteFileMetadataByIdScope,
217+
templateKey
218+
);
219+
await client.metadataTemplates.deleteMetadataTemplate(
220+
'enterprise' as DeleteMetadataTemplateScope,
221+
templateKey
222+
);
223+
await client.files.deleteFileById(file.id);
224+
});
108225
export {};

0 commit comments

Comments
 (0)