Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .codegen.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{ "engineHash": "9334953", "specHash": "62fdfd1", "version": "10.0.0" }
{ "engineHash": "9334953", "specHash": "c7acada", "version": "10.0.0" }
10 changes: 5 additions & 5 deletions docs/userCollaborations.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Returns a collaboration object.

Updates a collaboration.
Can be used to change the owner of an item, or to
accept collaboration invites.
accept collaboration invites. In case of accepting collaboration invite, role is not required.

This operation is performed by calling function `updateCollaborationById`.

Expand All @@ -47,16 +47,16 @@ See the endpoint docs at

```ts
await client.userCollaborations.updateCollaborationById(collaborationId, {
role: 'viewer' as UpdateCollaborationByIdRequestBodyRoleField,
} satisfies UpdateCollaborationByIdRequestBody);
requestBody: {
role: 'viewer' as UpdateCollaborationByIdRequestBodyRoleField,
} satisfies UpdateCollaborationByIdRequestBody,
} satisfies UpdateCollaborationByIdOptionalsInput);
```

### Arguments

- collaborationId `string`
- The ID of the collaboration. Example: "1234"
- requestBody `UpdateCollaborationByIdRequestBody`
- Request body of updateCollaborationById method
- optionalsInput `UpdateCollaborationByIdOptionalsInput`

### Returns
Expand Down
38 changes: 23 additions & 15 deletions src/managers/userCollaborations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,18 +60,26 @@ export interface GetCollaborationByIdOptionalsInput {
readonly cancellationToken?: undefined | CancellationToken;
}
export class UpdateCollaborationByIdOptionals {
readonly requestBody: UpdateCollaborationByIdRequestBody =
{} satisfies UpdateCollaborationByIdRequestBody;
readonly headers: UpdateCollaborationByIdHeaders =
new UpdateCollaborationByIdHeaders({});
readonly cancellationToken?: CancellationToken = void 0;
constructor(
fields: Omit<
UpdateCollaborationByIdOptionals,
'headers' | 'cancellationToken'
'requestBody' | 'headers' | 'cancellationToken'
> &
Partial<
Pick<UpdateCollaborationByIdOptionals, 'headers' | 'cancellationToken'>
Pick<
UpdateCollaborationByIdOptionals,
'requestBody' | 'headers' | 'cancellationToken'
>
>,
) {
if (fields.requestBody !== undefined) {
this.requestBody = fields.requestBody;
}
if (fields.headers !== undefined) {
this.headers = fields.headers;
}
Expand All @@ -81,6 +89,7 @@ export class UpdateCollaborationByIdOptionals {
}
}
export interface UpdateCollaborationByIdOptionalsInput {
readonly requestBody?: UpdateCollaborationByIdRequestBody;
readonly headers?: UpdateCollaborationByIdHeaders;
readonly cancellationToken?: undefined | CancellationToken;
}
Expand Down Expand Up @@ -199,7 +208,7 @@ export type UpdateCollaborationByIdRequestBodyStatusField =
export interface UpdateCollaborationByIdRequestBody {
/**
* The level of access granted. */
readonly role: UpdateCollaborationByIdRequestBodyRoleField;
readonly role?: UpdateCollaborationByIdRequestBodyRoleField;
/**
* Set the status of a `pending` collaboration invitation,
* effectively accepting, or rejecting the invite. */
Expand Down Expand Up @@ -486,23 +495,23 @@ export class UserCollaborationsManager {
/**
* Updates a collaboration.
* Can be used to change the owner of an item, or to
* accept collaboration invites.
* accept collaboration invites. In case of accepting collaboration invite, role is not required.
* @param {string} collaborationId The ID of the collaboration.
Example: "1234"
* @param {UpdateCollaborationByIdRequestBody} requestBody Request body of updateCollaborationById method
* @param {UpdateCollaborationByIdOptionalsInput} optionalsInput
* @returns {Promise<undefined | Collaboration>}
*/
async updateCollaborationById(
collaborationId: string,
requestBody: UpdateCollaborationByIdRequestBody,
optionalsInput: UpdateCollaborationByIdOptionalsInput = {},
): Promise<undefined | Collaboration> {
const optionals: UpdateCollaborationByIdOptionals =
new UpdateCollaborationByIdOptionals({
requestBody: optionalsInput.requestBody,
headers: optionalsInput.headers,
cancellationToken: optionalsInput.cancellationToken,
});
const requestBody: any = optionals.requestBody;
const headers: any = optionals.headers;
const cancellationToken: any = optionals.cancellationToken;
const headersMap: {
Expand Down Expand Up @@ -711,7 +720,10 @@ export function serializeUpdateCollaborationByIdRequestBody(
val: UpdateCollaborationByIdRequestBody,
): SerializedData {
return {
['role']: serializeUpdateCollaborationByIdRequestBodyRoleField(val.role),
['role']:
val.role == void 0
? val.role
: serializeUpdateCollaborationByIdRequestBodyRoleField(val.role),
['status']:
val.status == void 0
? val.status
Expand All @@ -731,14 +743,10 @@ export function deserializeUpdateCollaborationByIdRequestBody(
message: 'Expecting a map for "UpdateCollaborationByIdRequestBody"',
});
}
if (val.role == void 0) {
throw new BoxSdkError({
message:
'Expecting "role" of type "UpdateCollaborationByIdRequestBody" to be defined',
});
}
const role: UpdateCollaborationByIdRequestBodyRoleField =
deserializeUpdateCollaborationByIdRequestBodyRoleField(val.role);
const role: undefined | UpdateCollaborationByIdRequestBodyRoleField =
val.role == void 0
? void 0
: deserializeUpdateCollaborationByIdRequestBodyRoleField(val.role);
const status: undefined | UpdateCollaborationByIdRequestBodyStatusField =
val.status == void 0
? void 0
Expand Down
20 changes: 14 additions & 6 deletions src/test/userCollaborations.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import { serializeUpdateCollaborationByIdRequestBodyRoleField } from '@/managers
import { deserializeUpdateCollaborationByIdRequestBodyRoleField } from '@/managers/userCollaborations';
import { serializeCollaborations } from '@/schemas/collaborations';
import { deserializeCollaborations } from '@/schemas/collaborations';
import { UpdateCollaborationByIdOptionalsInput } from '@/managers/userCollaborations';
import { UpdateCollaborationByIdOptionals } from '@/managers/userCollaborations';
import { BoxClient } from '@/client';
import { UserFull } from '@/schemas/userFull';
import { CreateUserRequestBody } from '@/managers/users';
Expand Down Expand Up @@ -92,8 +94,10 @@ test('testUserCollaborations', async function testUserCollaborations(): Promise<
}
const updatedCollaboration: undefined | Collaboration =
await client.userCollaborations.updateCollaborationById(collaborationId, {
role: 'viewer' as UpdateCollaborationByIdRequestBodyRoleField,
} satisfies UpdateCollaborationByIdRequestBody);
requestBody: {
role: 'viewer' as UpdateCollaborationByIdRequestBodyRoleField,
} satisfies UpdateCollaborationByIdRequestBody,
} satisfies UpdateCollaborationByIdOptionalsInput);
if (!((toString(updatedCollaboration!.role!) as string) == 'viewer')) {
throw new Error('Assertion failed');
}
Expand Down Expand Up @@ -130,8 +134,10 @@ test('testConvertingUserCollaborationToOwnership', async function testConverting
}
const ownerCollaboration: undefined | Collaboration =
await client.userCollaborations.updateCollaborationById(collaboration.id, {
role: 'owner' as UpdateCollaborationByIdRequestBodyRoleField,
} satisfies UpdateCollaborationByIdRequestBody);
requestBody: {
role: 'owner' as UpdateCollaborationByIdRequestBodyRoleField,
} satisfies UpdateCollaborationByIdRequestBody,
} satisfies UpdateCollaborationByIdOptionalsInput);
if (!(ownerCollaboration == void 0)) {
throw new Error('Assertion failed');
}
Expand Down Expand Up @@ -182,8 +188,10 @@ test('testExternalUserCollaborations', async function testExternalUserCollaborat
}
const updatedCollaboration: undefined | Collaboration =
await client.userCollaborations.updateCollaborationById(collaborationId, {
role: 'viewer' as UpdateCollaborationByIdRequestBodyRoleField,
} satisfies UpdateCollaborationByIdRequestBody);
requestBody: {
role: 'viewer' as UpdateCollaborationByIdRequestBodyRoleField,
} satisfies UpdateCollaborationByIdRequestBody,
} satisfies UpdateCollaborationByIdOptionalsInput);
if (!((toString(updatedCollaboration!.role!) as string) == 'viewer')) {
throw new Error('Assertion failed');
}
Expand Down