Skip to content

Commit 3aa02f0

Browse files
authored
Merge branch 'main' into v1.5983.0
2 parents 65d38e1 + f9ad1dd commit 3aa02f0

File tree

8 files changed

+574
-166
lines changed

8 files changed

+574
-166
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@
4444
]
4545
},
4646
"devDependencies": {
47-
"@commitlint/cli": "19.5.0",
48-
"@commitlint/config-conventional": "19.5.0",
47+
"@commitlint/cli": "19.6.1",
48+
"@commitlint/config-conventional": "19.6.0",
4949
"@scaleway/eslint-config-react": "4.0.8",
5050
"@typescript-eslint/eslint-plugin": "latest",
5151
"@vitest/coverage-istanbul": "2.0.5",
@@ -57,7 +57,7 @@
5757
"cross-fetch": "4.0.0",
5858
"cz-conventional-changelog": "3.3.0",
5959
"esbuild-plugin-browserslist": "0.14.0",
60-
"eslint": "9.14.0",
60+
"eslint": "9.18.0",
6161
"eslint-plugin-tsdoc": "0.3.0",
6262
"husky": "9.1.6",
6363
"jsdom": "25.0.1",

packages/clients/src/api/account/v3/api.gen.ts

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,25 @@ import {
77
validatePathParam,
88
} from '../../../bridge'
99
import {
10+
marshalContractApiCheckContractSignatureRequest,
11+
marshalContractApiCreateContractSignatureRequest,
1012
marshalProjectApiCreateProjectRequest,
1113
marshalProjectApiUpdateProjectRequest,
14+
unmarshalCheckContractSignatureResponse,
15+
unmarshalContractSignature,
16+
unmarshalListContractSignaturesResponse,
1217
unmarshalListProjectsResponse,
1318
unmarshalProject,
1419
} from './marshalling.gen'
1520
import type {
21+
CheckContractSignatureResponse,
22+
ContractApiCheckContractSignatureRequest,
23+
ContractApiCreateContractSignatureRequest,
24+
ContractApiDownloadContractSignatureRequest,
25+
ContractApiListContractSignaturesRequest,
26+
ContractApiValidateContractSignatureRequest,
27+
ContractSignature,
28+
ListContractSignaturesResponse,
1629
ListProjectsResponse,
1730
Project,
1831
ProjectApiCreateProjectRequest,
@@ -26,6 +39,141 @@ const jsonContentHeaders = {
2639
'Content-Type': 'application/json; charset=utf-8',
2740
}
2841

42+
/**
43+
* Contract API.
44+
*
45+
* The Contract API allows you to manage contracts.
46+
*/
47+
export class ContractAPI extends ParentAPI {
48+
/**
49+
* Download a contract content.
50+
*
51+
* @param request - The request
52+
* {@link ContractApiDownloadContractSignatureRequest}
53+
* @returns A Promise of Blob
54+
*/
55+
downloadContractSignature = (
56+
request: Readonly<ContractApiDownloadContractSignatureRequest>,
57+
) =>
58+
this.client.fetch<Blob>({
59+
method: 'GET',
60+
path: `/account/v3/contract-signatures/${validatePathParam('contractSignatureId', request.contractSignatureId)}/download`,
61+
urlParams: urlParams(['dl', 1], ['locale', request.locale]),
62+
responseType: 'blob',
63+
})
64+
65+
/**
66+
* Create a signature for your Organization for the latest version of the
67+
* requested contract.
68+
*
69+
* @param request - The request
70+
* {@link ContractApiCreateContractSignatureRequest}
71+
* @returns A Promise of ContractSignature
72+
*/
73+
createContractSignature = (
74+
request: Readonly<ContractApiCreateContractSignatureRequest>,
75+
) =>
76+
this.client.fetch<ContractSignature>(
77+
{
78+
body: JSON.stringify(
79+
marshalContractApiCreateContractSignatureRequest(
80+
request,
81+
this.client.settings,
82+
),
83+
),
84+
headers: jsonContentHeaders,
85+
method: 'POST',
86+
path: `/account/v3/contract-signatures`,
87+
},
88+
unmarshalContractSignature,
89+
)
90+
91+
/**
92+
* Sign a contract for your Organization.
93+
*
94+
* @param request - The request
95+
* {@link ContractApiValidateContractSignatureRequest}
96+
* @returns A Promise of ContractSignature
97+
*/
98+
validateContractSignature = (
99+
request: Readonly<ContractApiValidateContractSignatureRequest>,
100+
) =>
101+
this.client.fetch<ContractSignature>(
102+
{
103+
body: '{}',
104+
headers: jsonContentHeaders,
105+
method: 'POST',
106+
path: `/account/v3/contract-signatures/${validatePathParam('contractSignatureId', request.contractSignatureId)}/validate`,
107+
},
108+
unmarshalContractSignature,
109+
)
110+
111+
/**
112+
* Check if a contract is signed for your Organization.
113+
*
114+
* @param request - The request
115+
* {@link ContractApiCheckContractSignatureRequest}
116+
* @returns A Promise of CheckContractSignatureResponse
117+
*/
118+
checkContractSignature = (
119+
request: Readonly<ContractApiCheckContractSignatureRequest>,
120+
) =>
121+
this.client.fetch<CheckContractSignatureResponse>(
122+
{
123+
body: JSON.stringify(
124+
marshalContractApiCheckContractSignatureRequest(
125+
request,
126+
this.client.settings,
127+
),
128+
),
129+
headers: jsonContentHeaders,
130+
method: 'POST',
131+
path: `/account/v3/contract-signatures/check`,
132+
},
133+
unmarshalCheckContractSignatureResponse,
134+
)
135+
136+
protected pageOfListContractSignatures = (
137+
request: Readonly<ContractApiListContractSignaturesRequest> = {},
138+
) =>
139+
this.client.fetch<ListContractSignaturesResponse>(
140+
{
141+
method: 'GET',
142+
path: `/account/v3/contract-signatures`,
143+
urlParams: urlParams(
144+
['order_by', request.orderBy],
145+
[
146+
'organization_id',
147+
request.organizationId ??
148+
this.client.settings.defaultOrganizationId,
149+
],
150+
['page', request.page],
151+
[
152+
'page_size',
153+
request.pageSize ?? this.client.settings.defaultPageSize,
154+
],
155+
),
156+
},
157+
unmarshalListContractSignaturesResponse,
158+
)
159+
160+
/**
161+
* List contract signatures for an Organization.
162+
*
163+
* @param request - The request
164+
* {@link ContractApiListContractSignaturesRequest}
165+
* @returns A Promise of ListContractSignaturesResponse
166+
*/
167+
listContractSignatures = (
168+
request: Readonly<ContractApiListContractSignaturesRequest> = {},
169+
) =>
170+
enrichForPagination(
171+
'contractSignatures',
172+
this.pageOfListContractSignatures,
173+
request,
174+
)
175+
}
176+
29177
/**
30178
* Account API.
31179
*

packages/clients/src/api/account/v3/marshalling.gen.ts

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,54 @@ import {
88
} from '../../../bridge'
99
import type { DefaultValues } from '../../../bridge'
1010
import type {
11+
CheckContractSignatureResponse,
12+
Contract,
13+
ContractApiCheckContractSignatureRequest,
14+
ContractApiCreateContractSignatureRequest,
15+
ContractSignature,
16+
ListContractSignaturesResponse,
1117
ListProjectsResponse,
1218
Project,
1319
ProjectApiCreateProjectRequest,
1420
ProjectApiUpdateProjectRequest,
1521
} from './types.gen'
1622

23+
const unmarshalContract = (data: unknown): Contract => {
24+
if (!isJSONObject(data)) {
25+
throw new TypeError(
26+
`Unmarshalling the type 'Contract' failed as data isn't a dictionary.`,
27+
)
28+
}
29+
30+
return {
31+
createdAt: unmarshalDate(data.created_at),
32+
id: data.id,
33+
name: data.name,
34+
type: data.type,
35+
updatedAt: unmarshalDate(data.updated_at),
36+
version: data.version,
37+
} as Contract
38+
}
39+
40+
export const unmarshalContractSignature = (
41+
data: unknown,
42+
): ContractSignature => {
43+
if (!isJSONObject(data)) {
44+
throw new TypeError(
45+
`Unmarshalling the type 'ContractSignature' failed as data isn't a dictionary.`,
46+
)
47+
}
48+
49+
return {
50+
contract: data.contract ? unmarshalContract(data.contract) : undefined,
51+
createdAt: unmarshalDate(data.created_at),
52+
expiresAt: unmarshalDate(data.expires_at),
53+
id: data.id,
54+
organizationId: data.organization_id,
55+
signedAt: unmarshalDate(data.signed_at),
56+
} as ContractSignature
57+
}
58+
1759
export const unmarshalProject = (data: unknown): Project => {
1860
if (!isJSONObject(data)) {
1961
throw new TypeError(
@@ -31,6 +73,39 @@ export const unmarshalProject = (data: unknown): Project => {
3173
} as Project
3274
}
3375

76+
export const unmarshalCheckContractSignatureResponse = (
77+
data: unknown,
78+
): CheckContractSignatureResponse => {
79+
if (!isJSONObject(data)) {
80+
throw new TypeError(
81+
`Unmarshalling the type 'CheckContractSignatureResponse' failed as data isn't a dictionary.`,
82+
)
83+
}
84+
85+
return {
86+
created: data.created,
87+
validated: data.validated,
88+
} as CheckContractSignatureResponse
89+
}
90+
91+
export const unmarshalListContractSignaturesResponse = (
92+
data: unknown,
93+
): ListContractSignaturesResponse => {
94+
if (!isJSONObject(data)) {
95+
throw new TypeError(
96+
`Unmarshalling the type 'ListContractSignaturesResponse' failed as data isn't a dictionary.`,
97+
)
98+
}
99+
100+
return {
101+
contractSignatures: unmarshalArrayOfObject(
102+
data.contract_signatures,
103+
unmarshalContractSignature,
104+
),
105+
totalCount: data.total_count,
106+
} as ListContractSignaturesResponse
107+
}
108+
34109
export const unmarshalListProjectsResponse = (
35110
data: unknown,
36111
): ListProjectsResponse => {
@@ -46,6 +121,25 @@ export const unmarshalListProjectsResponse = (
46121
} as ListProjectsResponse
47122
}
48123

124+
export const marshalContractApiCheckContractSignatureRequest = (
125+
request: ContractApiCheckContractSignatureRequest,
126+
defaults: DefaultValues,
127+
): Record<string, unknown> => ({
128+
contract_name: request.contractName,
129+
contract_type: request.contractType,
130+
organization_id: request.organizationId ?? defaults.defaultOrganizationId,
131+
})
132+
133+
export const marshalContractApiCreateContractSignatureRequest = (
134+
request: ContractApiCreateContractSignatureRequest,
135+
defaults: DefaultValues,
136+
): Record<string, unknown> => ({
137+
contract_name: request.contractName,
138+
contract_type: request.contractType,
139+
organization_id: request.organizationId ?? defaults.defaultOrganizationId,
140+
validated: request.validated,
141+
})
142+
49143
export const marshalProjectApiCreateProjectRequest = (
50144
request: ProjectApiCreateProjectRequest,
51145
defaults: DefaultValues,

0 commit comments

Comments
 (0)