Skip to content

Commit

Permalink
feat(account): activate public generation (#1720)
Browse files Browse the repository at this point in the history
Co-authored-by: philibeaux <[email protected]>
  • Loading branch information
scaleway-bot and philibea authored Jan 16, 2025
1 parent 82f9381 commit 9760f7f
Show file tree
Hide file tree
Showing 5 changed files with 380 additions and 1 deletion.
148 changes: 148 additions & 0 deletions packages/clients/src/api/account/v3/api.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,25 @@ import {
validatePathParam,
} from '../../../bridge'
import {
marshalContractApiCheckContractSignatureRequest,
marshalContractApiCreateContractSignatureRequest,
marshalProjectApiCreateProjectRequest,
marshalProjectApiUpdateProjectRequest,
unmarshalCheckContractSignatureResponse,
unmarshalContractSignature,
unmarshalListContractSignaturesResponse,
unmarshalListProjectsResponse,
unmarshalProject,
} from './marshalling.gen'
import type {
CheckContractSignatureResponse,
ContractApiCheckContractSignatureRequest,
ContractApiCreateContractSignatureRequest,
ContractApiDownloadContractSignatureRequest,
ContractApiListContractSignaturesRequest,
ContractApiValidateContractSignatureRequest,
ContractSignature,
ListContractSignaturesResponse,
ListProjectsResponse,
Project,
ProjectApiCreateProjectRequest,
Expand All @@ -26,6 +39,141 @@ const jsonContentHeaders = {
'Content-Type': 'application/json; charset=utf-8',
}

/**
* Contract API.
*
* The Contract API allows you to manage contracts.
*/
export class ContractAPI extends ParentAPI {
/**
* Download a contract content.
*
* @param request - The request
* {@link ContractApiDownloadContractSignatureRequest}
* @returns A Promise of Blob
*/
downloadContractSignature = (
request: Readonly<ContractApiDownloadContractSignatureRequest>,
) =>
this.client.fetch<Blob>({
method: 'GET',
path: `/account/v3/contract-signatures/${validatePathParam('contractSignatureId', request.contractSignatureId)}/download`,
urlParams: urlParams(['dl', 1], ['locale', request.locale]),
responseType: 'blob',
})

/**
* Create a signature for your Organization for the latest version of the
* requested contract.
*
* @param request - The request
* {@link ContractApiCreateContractSignatureRequest}
* @returns A Promise of ContractSignature
*/
createContractSignature = (
request: Readonly<ContractApiCreateContractSignatureRequest>,
) =>
this.client.fetch<ContractSignature>(
{
body: JSON.stringify(
marshalContractApiCreateContractSignatureRequest(
request,
this.client.settings,
),
),
headers: jsonContentHeaders,
method: 'POST',
path: `/account/v3/contract-signatures`,
},
unmarshalContractSignature,
)

/**
* Sign a contract for your Organization.
*
* @param request - The request
* {@link ContractApiValidateContractSignatureRequest}
* @returns A Promise of ContractSignature
*/
validateContractSignature = (
request: Readonly<ContractApiValidateContractSignatureRequest>,
) =>
this.client.fetch<ContractSignature>(
{
body: '{}',
headers: jsonContentHeaders,
method: 'POST',
path: `/account/v3/contract-signatures/${validatePathParam('contractSignatureId', request.contractSignatureId)}/validate`,
},
unmarshalContractSignature,
)

/**
* Check if a contract is signed for your Organization.
*
* @param request - The request
* {@link ContractApiCheckContractSignatureRequest}
* @returns A Promise of CheckContractSignatureResponse
*/
checkContractSignature = (
request: Readonly<ContractApiCheckContractSignatureRequest>,
) =>
this.client.fetch<CheckContractSignatureResponse>(
{
body: JSON.stringify(
marshalContractApiCheckContractSignatureRequest(
request,
this.client.settings,
),
),
headers: jsonContentHeaders,
method: 'POST',
path: `/account/v3/contract-signatures/check`,
},
unmarshalCheckContractSignatureResponse,
)

protected pageOfListContractSignatures = (
request: Readonly<ContractApiListContractSignaturesRequest> = {},
) =>
this.client.fetch<ListContractSignaturesResponse>(
{
method: 'GET',
path: `/account/v3/contract-signatures`,
urlParams: urlParams(
['order_by', request.orderBy],
[
'organization_id',
request.organizationId ??
this.client.settings.defaultOrganizationId,
],
['page', request.page],
[
'page_size',
request.pageSize ?? this.client.settings.defaultPageSize,
],
),
},
unmarshalListContractSignaturesResponse,
)

/**
* List contract signatures for an Organization.
*
* @param request - The request
* {@link ContractApiListContractSignaturesRequest}
* @returns A Promise of ListContractSignaturesResponse
*/
listContractSignatures = (
request: Readonly<ContractApiListContractSignaturesRequest> = {},
) =>
enrichForPagination(
'contractSignatures',
this.pageOfListContractSignatures,
request,
)
}

/**
* Account API.
*
Expand Down
13 changes: 12 additions & 1 deletion packages/clients/src/api/account/v3/index.gen.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
// This file was automatically generated. DO NOT EDIT.
// If you have any remark or suggestion do not hesitate to open an issue.
export { ProjectAPI } from './api.gen'
export { ContractAPI, ProjectAPI } from './api.gen'
export type {
CheckContractSignatureResponse,
Contract,
ContractApiCheckContractSignatureRequest,
ContractApiCreateContractSignatureRequest,
ContractApiDownloadContractSignatureRequest,
ContractApiListContractSignaturesRequest,
ContractApiValidateContractSignatureRequest,
ContractSignature,
ContractType,
ListContractSignaturesRequestOrderBy,
ListContractSignaturesResponse,
ListProjectsRequestOrderBy,
ListProjectsResponse,
Project,
Expand Down
94 changes: 94 additions & 0 deletions packages/clients/src/api/account/v3/marshalling.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,54 @@ import {
} from '../../../bridge'
import type { DefaultValues } from '../../../bridge'
import type {
CheckContractSignatureResponse,
Contract,
ContractApiCheckContractSignatureRequest,
ContractApiCreateContractSignatureRequest,
ContractSignature,
ListContractSignaturesResponse,
ListProjectsResponse,
Project,
ProjectApiCreateProjectRequest,
ProjectApiUpdateProjectRequest,
} from './types.gen'

const unmarshalContract = (data: unknown): Contract => {
if (!isJSONObject(data)) {
throw new TypeError(
`Unmarshalling the type 'Contract' failed as data isn't a dictionary.`,
)
}

return {
createdAt: unmarshalDate(data.created_at),
id: data.id,
name: data.name,
type: data.type,
updatedAt: unmarshalDate(data.updated_at),
version: data.version,
} as Contract
}

export const unmarshalContractSignature = (
data: unknown,
): ContractSignature => {
if (!isJSONObject(data)) {
throw new TypeError(
`Unmarshalling the type 'ContractSignature' failed as data isn't a dictionary.`,
)
}

return {
contract: data.contract ? unmarshalContract(data.contract) : undefined,
createdAt: unmarshalDate(data.created_at),
expiresAt: unmarshalDate(data.expires_at),
id: data.id,
organizationId: data.organization_id,
signedAt: unmarshalDate(data.signed_at),
} as ContractSignature
}

export const unmarshalProject = (data: unknown): Project => {
if (!isJSONObject(data)) {
throw new TypeError(
Expand All @@ -31,6 +73,39 @@ export const unmarshalProject = (data: unknown): Project => {
} as Project
}

export const unmarshalCheckContractSignatureResponse = (
data: unknown,
): CheckContractSignatureResponse => {
if (!isJSONObject(data)) {
throw new TypeError(
`Unmarshalling the type 'CheckContractSignatureResponse' failed as data isn't a dictionary.`,
)
}

return {
created: data.created,
validated: data.validated,
} as CheckContractSignatureResponse
}

export const unmarshalListContractSignaturesResponse = (
data: unknown,
): ListContractSignaturesResponse => {
if (!isJSONObject(data)) {
throw new TypeError(
`Unmarshalling the type 'ListContractSignaturesResponse' failed as data isn't a dictionary.`,
)
}

return {
contractSignatures: unmarshalArrayOfObject(
data.contract_signatures,
unmarshalContractSignature,
),
totalCount: data.total_count,
} as ListContractSignaturesResponse
}

export const unmarshalListProjectsResponse = (
data: unknown,
): ListProjectsResponse => {
Expand All @@ -46,6 +121,25 @@ export const unmarshalListProjectsResponse = (
} as ListProjectsResponse
}

export const marshalContractApiCheckContractSignatureRequest = (
request: ContractApiCheckContractSignatureRequest,
defaults: DefaultValues,
): Record<string, unknown> => ({
contract_name: request.contractName,
contract_type: request.contractType,
organization_id: request.organizationId ?? defaults.defaultOrganizationId,
})

export const marshalContractApiCreateContractSignatureRequest = (
request: ContractApiCreateContractSignatureRequest,
defaults: DefaultValues,
): Record<string, unknown> => ({
contract_name: request.contractName,
contract_type: request.contractType,
organization_id: request.organizationId ?? defaults.defaultOrganizationId,
validated: request.validated,
})

export const marshalProjectApiCreateProjectRequest = (
request: ProjectApiCreateProjectRequest,
defaults: DefaultValues,
Expand Down
Loading

0 comments on commit 9760f7f

Please sign in to comment.