From e658a0b5c4256dff4bf4ef439e8cd29e36ff9221 Mon Sep 17 00:00:00 2001 From: "quantcloud[bot]" Date: Sat, 5 Sep 2026 16:17:52 +0000 Subject: [PATCH 1/4] feat(sdk): v4.22.0 - Auto-generated from unified API spec Generated from unified API spec v4.22.0 Changes: - Auto-generated SDK updates This PR was automatically created by the API generation pipeline. --- .openapi-generator-config.json | 2 +- .openapi-generator/FILES | 11 + api.ts | 1162 ++++++++++++++++- common.ts | 6 +- configuration.ts | 2 +- docs/AIToolsApi.md | 54 + docs/AttachOrgResourceRequest.md | 24 + docs/CreateOrgResourceRequest.md | 24 + docs/CreateOrgResourceRequestConfig.md | 21 + ...tGovernanceConfig200ResponseSpendLimits.md | 2 +- docs/IdleSleepApi.md | 134 ++ docs/IdleSleepResponse.md | 26 + docs/ListMcpServers200Response.md | 22 + docs/ListMcpServers200ResponseServersInner.md | 28 + docs/OrgResource.md | 36 + docs/ResourceAttachment.md | 32 + docs/ResourcesApi.md | 353 +++++ docs/SetIdleSleepRequest.md | 22 + index.ts | 2 +- package-lock.json | 4 +- package.json | 4 +- 21 files changed, 1958 insertions(+), 13 deletions(-) create mode 100644 docs/AttachOrgResourceRequest.md create mode 100644 docs/CreateOrgResourceRequest.md create mode 100644 docs/CreateOrgResourceRequestConfig.md create mode 100644 docs/IdleSleepApi.md create mode 100644 docs/IdleSleepResponse.md create mode 100644 docs/ListMcpServers200Response.md create mode 100644 docs/ListMcpServers200ResponseServersInner.md create mode 100644 docs/OrgResource.md create mode 100644 docs/ResourceAttachment.md create mode 100644 docs/ResourcesApi.md create mode 100644 docs/SetIdleSleepRequest.md diff --git a/.openapi-generator-config.json b/.openapi-generator-config.json index dd8b87e..bc5b8f8 100644 --- a/.openapi-generator-config.json +++ b/.openapi-generator-config.json @@ -3,7 +3,7 @@ "gitUserId": "quantcdn", "gitRepoId": "quant-ts-client", "npmName": "@quantcdn/quant-client", - "npmVersion": "4.21.0", + "npmVersion": "4.22.0", "packageName": "quant-client", "projectName": "quant-client", "projectDescription": "TypeScript client for QuantCDN and QuantCloud Platform APIs", diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 2f03ace..486a5d0 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -35,6 +35,7 @@ docs/ApplicationDeploymentInformationInner.md docs/ApplicationFilesystem.md docs/ApplicationImageReference.md docs/ApplicationsApi.md +docs/AttachOrgResourceRequest.md docs/BackupManagementApi.md docs/BulkSetEnvironmentVariablesRequest.md docs/BulkSetEnvironmentVariablesRequestEnvironmentInner.md @@ -117,6 +118,8 @@ docs/CreateFilterPolicyRequestRulesInnerMatch.md docs/CreateOrchestrationRequest.md docs/CreateOrchestrationRequestInputSource.md docs/CreateOrchestrationRequestStopCondition.md +docs/CreateOrgResourceRequest.md +docs/CreateOrgResourceRequestConfig.md docs/CreateSkill201Response.md docs/CreateSkillRequest.md docs/CreateSlackBot201Response.md @@ -214,6 +217,8 @@ docs/GetTask200Response.md docs/GetVectorCollection200Response.md docs/GetVectorCollection200ResponseCollection.md docs/HeadersApi.md +docs/IdleSleepApi.md +docs/IdleSleepResponse.md docs/ImageGeneration200Response.md docs/ImageGenerationRequest.md docs/ImageGenerationRequestBackgroundRemovalParams.md @@ -256,6 +261,8 @@ docs/ListCustomTools200Response.md docs/ListCustomTools200ResponseToolsInner.md docs/ListFiles200Response.md docs/ListFiles200ResponseFilesInner.md +docs/ListMcpServers200Response.md +docs/ListMcpServers200ResponseServersInner.md docs/ListOrchestrationBatches200Response.md docs/ListOrchestrationBatches200ResponseBatchesInner.md docs/ListOrchestrations200Response.md @@ -283,6 +290,7 @@ docs/OaiGetModel200Response.md docs/OaiListModels200Response.md docs/OaiListModels200ResponseDataInner.md docs/OpenAICompatibilityApi.md +docs/OrgResource.md docs/OrganizationsApi.md docs/OrganizationsList200ResponseInner.md docs/PatchEnvironmentCompose202Response.md @@ -298,6 +306,8 @@ docs/QueryVectorCollection200ResponsePagination.md docs/QueryVectorCollection200ResponseResultsInner.md docs/QueryVectorCollectionRequest.md docs/QueryVectorCollectionRequestFilter.md +docs/ResourceAttachment.md +docs/ResourcesApi.md docs/RestoreDatabase202Response.md docs/RestoreDatabaseRequest.md docs/RestoreFilesystem202Response.md @@ -311,6 +321,7 @@ docs/SearchSlackWorkspaceChannels200Response.md docs/SearchSlackWorkspaceChannels200ResponseResultsInner.md docs/SearchSlackWorkspaceUsers200Response.md docs/SearchSlackWorkspaceUsers200ResponseResultsInner.md +docs/SetIdleSleepRequest.md docs/SetScalingPolicyRequest.md docs/SpotConfiguration.md docs/SubmitToolCallback200Response.md diff --git a/api.ts b/api.ts index 3b7e89c..c254d73 100644 --- a/api.ts +++ b/api.ts @@ -4,7 +4,7 @@ * QuantCDN API * Unified API for QuantCDN Admin and QuantCloud Platform services * - * The version of the OpenAPI document: 4.21.0 + * The version of the OpenAPI document: 4.22.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -473,6 +473,31 @@ export const ApplicationImageReferenceTypeEnum = { export type ApplicationImageReferenceTypeEnum = typeof ApplicationImageReferenceTypeEnum[keyof typeof ApplicationImageReferenceTypeEnum]; +/** + * + * @export + * @interface AttachOrgResourceRequest + */ +export interface AttachOrgResourceRequest { + /** + * + * @type {string} + * @memberof AttachOrgResourceRequest + */ + 'application': string; + /** + * + * @type {string} + * @memberof AttachOrgResourceRequest + */ + 'environment': string; + /** + * Namespaces every injected variable, so MEDIA yields MEDIA_S3_BUCKET + * @type {string} + * @memberof AttachOrgResourceRequest + */ + 'envVarPrefix'?: string; +} /** * * @export @@ -2984,6 +3009,52 @@ export const CreateOrchestrationRequestStopConditionTypeEnum = { export type CreateOrchestrationRequestStopConditionTypeEnum = typeof CreateOrchestrationRequestStopConditionTypeEnum[keyof typeof CreateOrchestrationRequestStopConditionTypeEnum]; +/** + * + * @export + * @interface CreateOrgResourceRequest + */ +export interface CreateOrgResourceRequest { + /** + * + * @type {string} + * @memberof CreateOrgResourceRequest + */ + 'type': CreateOrgResourceRequestTypeEnum; + /** + * Lowercase letters, numbers and hyphens, 2-41 characters, starting with a letter or number + * @type {string} + * @memberof CreateOrgResourceRequest + */ + 'name': string; + /** + * + * @type {CreateOrgResourceRequestConfig} + * @memberof CreateOrgResourceRequest + */ + 'config'?: CreateOrgResourceRequestConfig; +} + +export const CreateOrgResourceRequestTypeEnum = { + ObjectStorage: 'object-storage', + Valkey: 'valkey' +} as const; + +export type CreateOrgResourceRequestTypeEnum = typeof CreateOrgResourceRequestTypeEnum[keyof typeof CreateOrgResourceRequestTypeEnum]; + +/** + * Valkey only + * @export + * @interface CreateOrgResourceRequestConfig + */ +export interface CreateOrgResourceRequestConfig { + /** + * + * @type {number} + * @memberof CreateOrgResourceRequestConfig + */ + 'dataStorageMaxGb'?: number; +} /** * * @export @@ -5549,7 +5620,7 @@ export interface GetGovernanceConfig200ResponseSpendLimits { */ 'warningThresholdPercent'?: number | null; /** - * Aggregate spend caps per interface label (slack, autonomous, api-gateway, streaming, websocket). Keys are interface labels. + * Aggregate spend caps per interface label (slack, autonomous, api-gateway, streaming, websocket, durable, orchestration, workflow, embedding, ai-search). Keys are interface labels. * @type {{ [key: string]: GetGovernanceConfig200ResponseSpendLimitsInterfaceLimitsValue; }} * @memberof GetGovernanceConfig200ResponseSpendLimits */ @@ -6669,6 +6740,46 @@ export interface GetVectorCollection200ResponseCollection { */ 'updatedAt'?: string; } +/** + * + * @export + * @interface IdleSleepResponse + */ +export interface IdleSleepResponse { + /** + * + * @type {boolean} + * @memberof IdleSleepResponse + */ + 'enabled': boolean; + /** + * + * @type {number} + * @memberof IdleSleepResponse + */ + 'idleMinutes': number | null; + /** + * + * @type {string} + * @memberof IdleSleepResponse + */ + 'state': IdleSleepResponseStateEnum; + /** + * + * @type {string} + * @memberof IdleSleepResponse + */ + 'stateChangedAt': string | null; +} + +export const IdleSleepResponseStateEnum = { + Awake: 'awake', + Sleeping: 'sleeping', + Waking: 'waking' +} as const; + +export type IdleSleepResponseStateEnum = typeof IdleSleepResponseStateEnum[keyof typeof IdleSleepResponseStateEnum]; + /** * * @export @@ -8047,6 +8158,62 @@ export interface ListFiles200ResponseFilesInner { */ 'createdAt'?: string; } +/** + * + * @export + * @interface ListMcpServers200Response + */ +export interface ListMcpServers200Response { + /** + * Origin of the MCP gateway host (scheme://host[:port]) — clients treat gateway URLs on this origin as bearer-authenticated with the end user\'s Quant token + * @type {string} + * @memberof ListMcpServers200Response + */ + 'gatewayBaseUrl'?: string; + /** + * + * @type {Array} + * @memberof ListMcpServers200Response + */ + 'servers'?: Array; +} +/** + * + * @export + * @interface ListMcpServers200ResponseServersInner + */ +export interface ListMcpServers200ResponseServersInner { + /** + * + * @type {string} + * @memberof ListMcpServers200ResponseServersInner + */ + 'serverName'?: string; + /** + * + * @type {string} + * @memberof ListMcpServers200ResponseServersInner + */ + 'displayName'?: string; + /** + * MCP gateway URL + * @type {string} + * @memberof ListMcpServers200ResponseServersInner + */ + 'url'?: string; + /** + * + * @type {boolean} + * @memberof ListMcpServers200ResponseServersInner + */ + 'enabled'?: boolean; + /** + * + * @type {Array} + * @memberof ListMcpServers200ResponseServersInner + */ + 'toolAllowlist'?: Array; +} /** * * @export @@ -9004,6 +9171,89 @@ export interface OaiListModels200ResponseDataInner { */ 'owned_by'?: string; } +/** + * + * @export + * @interface OrgResource + */ +export interface OrgResource { + /** + * + * @type {string} + * @memberof OrgResource + */ + 'orgName'?: string; + /** + * + * @type {string} + * @memberof OrgResource + */ + 'resourceId'?: string; + /** + * + * @type {string} + * @memberof OrgResource + */ + 'type'?: OrgResourceTypeEnum; + /** + * + * @type {string} + * @memberof OrgResource + */ + 'name'?: string; + /** + * + * @type {string} + * @memberof OrgResource + */ + 'status'?: OrgResourceStatusEnum; + /** + * org for resources managed by these endpoints. app rows are compatibility records for an application-managed cache and cannot be mutated here. + * @type {string} + * @memberof OrgResource + */ + 'scope'?: OrgResourceScopeEnum; + /** + * Type-specific settings, such as dataStorageMaxGb for a cache + * @type {object} + * @memberof OrgResource + */ + 'config'?: object; + /** + * Provisioned detail: bucket and region for object storage, cache identifier and endpoint for a cache + * @type {object} + * @memberof OrgResource + */ + 'physical'?: object; + /** + * + * @type {string} + * @memberof OrgResource + */ + 'createdAt'?: string; +} + +export const OrgResourceTypeEnum = { + ObjectStorage: 'object-storage', + Valkey: 'valkey' +} as const; + +export type OrgResourceTypeEnum = typeof OrgResourceTypeEnum[keyof typeof OrgResourceTypeEnum]; +export const OrgResourceStatusEnum = { + Provisioning: 'provisioning', + Available: 'available', + Deleting: 'deleting', + Error: 'error' +} as const; + +export type OrgResourceStatusEnum = typeof OrgResourceStatusEnum[keyof typeof OrgResourceStatusEnum]; +export const OrgResourceScopeEnum = { + Org: 'org', + App: 'app' +} as const; + +export type OrgResourceScopeEnum = typeof OrgResourceScopeEnum[keyof typeof OrgResourceScopeEnum]; + /** * * @export @@ -9501,6 +9751,55 @@ export interface QueryVectorCollectionRequestFilter { */ 'contains'?: { [key: string]: Array; }; } +/** + * + * @export + * @interface ResourceAttachment + */ +export interface ResourceAttachment { + /** + * + * @type {string} + * @memberof ResourceAttachment + */ + 'appName'?: string; + /** + * + * @type {string} + * @memberof ResourceAttachment + */ + 'envName'?: string; + /** + * Namespaces every injected variable, so MEDIA yields MEDIA_S3_BUCKET + * @type {string} + * @memberof ResourceAttachment + */ + 'envVarPrefix'?: string; + /** + * Object storage only. The secret half is written to the environment\'s secrets and never returned. + * @type {string} + * @memberof ResourceAttachment + */ + 'accessKeyId'?: string; + /** + * The exact variable names this attachment wrote, removed precisely on detach + * @type {Array} + * @memberof ResourceAttachment + */ + 'injectedKeys'?: Array; + /** + * + * @type {string} + * @memberof ResourceAttachment + */ + 'createdAt'?: string; + /** + * When the credentials take effect + * @type {string} + * @memberof ResourceAttachment + */ + 'note'?: string; +} /** * * @export @@ -9672,6 +9971,25 @@ export interface SearchSlackWorkspaceUsers200ResponseResultsInner { */ 'real_name'?: string; } +/** + * + * @export + * @interface SetIdleSleepRequest + */ +export interface SetIdleSleepRequest { + /** + * Whether the environment sleeps when idle. + * @type {boolean} + * @memberof SetIdleSleepRequest + */ + 'enabled': boolean; + /** + * Minutes with no requests before compute sleeps. + * @type {number} + * @memberof SetIdleSleepRequest + */ + 'idleMinutes'?: number; +} /** * * @export @@ -25733,6 +26051,44 @@ export const AIToolsApiAxiosParamCreator = function (configuration?: Configurati + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Lists the organization\'s registered MCP servers for CLI sync (QuantCode). Each server\'s `url` is the FULL MCP gateway URL on the AI API host — clients connect there, never to the origin server. Credentials are never exposed. + * @summary List MCP servers with gateway URLs + * @param {string} organisation The organisation ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listMcpServers: async (organisation: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('listMcpServers', 'organisation', organisation) + const localVarPath = `/api/v3/organizations/{organisation}/ai/mcp-servers` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -25821,6 +26177,19 @@ export const AIToolsApiFp = function(configuration?: Configuration) { const localVarOperationServerBasePath = operationServerMap['AIToolsApi.listAITools']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, + /** + * Lists the organization\'s registered MCP servers for CLI sync (QuantCode). Each server\'s `url` is the FULL MCP gateway URL on the AI API host — clients connect there, never to the origin server. Credentials are never exposed. + * @summary List MCP servers with gateway URLs + * @param {string} organisation The organisation ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listMcpServers(organisation: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listMcpServers(organisation, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['AIToolsApi.listMcpServers']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, } }; @@ -25885,6 +26254,16 @@ export const AIToolsApiFactory = function (configuration?: Configuration, basePa listAITools(organisation: string, options?: RawAxiosRequestConfig): AxiosPromise { return localVarFp.listAITools(organisation, options).then((request) => request(axios, basePath)); }, + /** + * Lists the organization\'s registered MCP servers for CLI sync (QuantCode). Each server\'s `url` is the FULL MCP gateway URL on the AI API host — clients connect there, never to the origin server. Credentials are never exposed. + * @summary List MCP servers with gateway URLs + * @param {string} organisation The organisation ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listMcpServers(organisation: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.listMcpServers(organisation, options).then((request) => request(axios, basePath)); + }, }; }; @@ -25958,6 +26337,18 @@ export class AIToolsApi extends BaseAPI { public listAITools(organisation: string, options?: RawAxiosRequestConfig) { return AIToolsApiFp(this.configuration).listAITools(organisation, options).then((request) => request(this.axios, this.basePath)); } + + /** + * Lists the organization\'s registered MCP servers for CLI sync (QuantCode). Each server\'s `url` is the FULL MCP gateway URL on the AI API host — clients connect there, never to the origin server. Credentials are never exposed. + * @summary List MCP servers with gateway URLs + * @param {string} organisation The organisation ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AIToolsApi + */ + public listMcpServers(organisation: string, options?: RawAxiosRequestConfig) { + return AIToolsApiFp(this.configuration).listMcpServers(organisation, options).then((request) => request(this.axios, this.basePath)); + } } /** @@ -32881,6 +33272,228 @@ export class HeadersApi extends BaseAPI { +/** + * IdleSleepApi - axios parameter creator + * @export + */ +export const IdleSleepApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * Retrieves the idle sleep setting and the current sleep state for the environment. + * @summary Get Idle Sleep Setting + * @param {string} organisation + * @param {string} application + * @param {string} environment + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getIdleSleep: async (organisation: string, application: string, environment: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('getIdleSleep', 'organisation', organisation) + // verify required parameter 'application' is not null or undefined + assertParamExists('getIdleSleep', 'application', application) + // verify required parameter 'environment' is not null or undefined + assertParamExists('getIdleSleep', 'environment', environment) + const localVarPath = `/api/v3/organizations/{organisation}/applications/{application}/environments/{environment}/idle-sleep` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"application"}}`, encodeURIComponent(String(application))) + .replace(`{${"environment"}}`, encodeURIComponent(String(environment))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Enable or disable idle sleep. Only Fargate compute sleeps. Disabling a sleeping environment wakes it first; a 202 means it is still waking. + * @summary Set Idle Sleep Setting + * @param {string} organisation + * @param {string} application + * @param {string} environment + * @param {SetIdleSleepRequest} setIdleSleepRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + setIdleSleep: async (organisation: string, application: string, environment: string, setIdleSleepRequest: SetIdleSleepRequest, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('setIdleSleep', 'organisation', organisation) + // verify required parameter 'application' is not null or undefined + assertParamExists('setIdleSleep', 'application', application) + // verify required parameter 'environment' is not null or undefined + assertParamExists('setIdleSleep', 'environment', environment) + // verify required parameter 'setIdleSleepRequest' is not null or undefined + assertParamExists('setIdleSleep', 'setIdleSleepRequest', setIdleSleepRequest) + const localVarPath = `/api/v3/organizations/{organisation}/applications/{application}/environments/{environment}/idle-sleep` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"application"}}`, encodeURIComponent(String(application))) + .replace(`{${"environment"}}`, encodeURIComponent(String(environment))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(setIdleSleepRequest, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * IdleSleepApi - functional programming interface + * @export + */ +export const IdleSleepApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = IdleSleepApiAxiosParamCreator(configuration) + return { + /** + * Retrieves the idle sleep setting and the current sleep state for the environment. + * @summary Get Idle Sleep Setting + * @param {string} organisation + * @param {string} application + * @param {string} environment + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getIdleSleep(organisation: string, application: string, environment: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getIdleSleep(organisation, application, environment, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['IdleSleepApi.getIdleSleep']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Enable or disable idle sleep. Only Fargate compute sleeps. Disabling a sleeping environment wakes it first; a 202 means it is still waking. + * @summary Set Idle Sleep Setting + * @param {string} organisation + * @param {string} application + * @param {string} environment + * @param {SetIdleSleepRequest} setIdleSleepRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async setIdleSleep(organisation: string, application: string, environment: string, setIdleSleepRequest: SetIdleSleepRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.setIdleSleep(organisation, application, environment, setIdleSleepRequest, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['IdleSleepApi.setIdleSleep']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + } +}; + +/** + * IdleSleepApi - factory interface + * @export + */ +export const IdleSleepApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = IdleSleepApiFp(configuration) + return { + /** + * Retrieves the idle sleep setting and the current sleep state for the environment. + * @summary Get Idle Sleep Setting + * @param {string} organisation + * @param {string} application + * @param {string} environment + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getIdleSleep(organisation: string, application: string, environment: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getIdleSleep(organisation, application, environment, options).then((request) => request(axios, basePath)); + }, + /** + * Enable or disable idle sleep. Only Fargate compute sleeps. Disabling a sleeping environment wakes it first; a 202 means it is still waking. + * @summary Set Idle Sleep Setting + * @param {string} organisation + * @param {string} application + * @param {string} environment + * @param {SetIdleSleepRequest} setIdleSleepRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + setIdleSleep(organisation: string, application: string, environment: string, setIdleSleepRequest: SetIdleSleepRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.setIdleSleep(organisation, application, environment, setIdleSleepRequest, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * IdleSleepApi - object-oriented interface + * @export + * @class IdleSleepApi + * @extends {BaseAPI} + */ +export class IdleSleepApi extends BaseAPI { + /** + * Retrieves the idle sleep setting and the current sleep state for the environment. + * @summary Get Idle Sleep Setting + * @param {string} organisation + * @param {string} application + * @param {string} environment + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IdleSleepApi + */ + public getIdleSleep(organisation: string, application: string, environment: string, options?: RawAxiosRequestConfig) { + return IdleSleepApiFp(this.configuration).getIdleSleep(organisation, application, environment, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Enable or disable idle sleep. Only Fargate compute sleeps. Disabling a sleeping environment wakes it first; a 202 means it is still waking. + * @summary Set Idle Sleep Setting + * @param {string} organisation + * @param {string} application + * @param {string} environment + * @param {SetIdleSleepRequest} setIdleSleepRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IdleSleepApi + */ + public setIdleSleep(organisation: string, application: string, environment: string, setIdleSleepRequest: SetIdleSleepRequest, options?: RawAxiosRequestConfig) { + return IdleSleepApiFp(this.configuration).setIdleSleep(organisation, application, environment, setIdleSleepRequest, options).then((request) => request(this.axios, this.basePath)); + } +} + + + /** * KVApi - axios parameter creator * @export @@ -35039,6 +35652,551 @@ export class PurgeApi extends BaseAPI { +/** + * ResourcesApi - axios parameter creator + * @export + */ +export const ResourcesApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * Object storage credentials are written immediately and take effect on the environment\'s next deploy. Cache variables are rendered at the next deploy, so a cache may be attached while it is still provisioning. An environment accepts one attachment per resource type. + * @summary Attach a resource to an application environment + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {AttachOrgResourceRequest} attachOrgResourceRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + attachOrgResource: async (organisation: string, resource: string, attachOrgResourceRequest: AttachOrgResourceRequest, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('attachOrgResource', 'organisation', organisation) + // verify required parameter 'resource' is not null or undefined + assertParamExists('attachOrgResource', 'resource', resource) + // verify required parameter 'attachOrgResourceRequest' is not null or undefined + assertParamExists('attachOrgResource', 'attachOrgResourceRequest', attachOrgResourceRequest) + const localVarPath = `/api/v3/organizations/{organisation}/resources/{resource}/attachments` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"resource"}}`, encodeURIComponent(String(resource))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(attachOrgResourceRequest, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Object storage is provisioned synchronously and returns status available. A Valkey cache is asynchronous and returns status provisioning; poll the show endpoint until it reports available. + * @summary Create a shared resource + * @param {string} organisation The organisation ID + * @param {CreateOrgResourceRequest} createOrgResourceRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOrgResource: async (organisation: string, createOrgResourceRequest: CreateOrgResourceRequest, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('createOrgResource', 'organisation', organisation) + // verify required parameter 'createOrgResourceRequest' is not null or undefined + assertParamExists('createOrgResource', 'createOrgResourceRequest', createOrgResourceRequest) + const localVarPath = `/api/v3/organizations/{organisation}/resources` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(createOrgResourceRequest, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Deletes the resource and its contents. This cannot be undone. A resource with live attachments is rejected unless force is set. + * @summary Delete a shared resource + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {boolean} [force] Delete even if the resource is attached or in an error state + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteOrgResource: async (organisation: string, resource: string, force?: boolean, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('deleteOrgResource', 'organisation', organisation) + // verify required parameter 'resource' is not null or undefined + assertParamExists('deleteOrgResource', 'resource', resource) + const localVarPath = `/api/v3/organizations/{organisation}/resources/{resource}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"resource"}}`, encodeURIComponent(String(resource))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + if (force !== undefined) { + localVarQueryParameter['force'] = force; + } + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Removes the injected credentials and redeploys the environment so that it stops referencing them, which interrupts the environment briefly. The resource and its contents are not deleted. + * @summary Detach a resource from an application environment + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {string} application The application ID + * @param {string} environment The environment ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + detachOrgResource: async (organisation: string, resource: string, application: string, environment: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('detachOrgResource', 'organisation', organisation) + // verify required parameter 'resource' is not null or undefined + assertParamExists('detachOrgResource', 'resource', resource) + // verify required parameter 'application' is not null or undefined + assertParamExists('detachOrgResource', 'application', application) + // verify required parameter 'environment' is not null or undefined + assertParamExists('detachOrgResource', 'environment', environment) + const localVarPath = `/api/v3/organizations/{organisation}/resources/{resource}/attachments/{application}/{environment}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"resource"}}`, encodeURIComponent(String(resource))) + .replace(`{${"application"}}`, encodeURIComponent(String(application))) + .replace(`{${"environment"}}`, encodeURIComponent(String(environment))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Get a shared resource and its attachments + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getOrgResource: async (organisation: string, resource: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('getOrgResource', 'organisation', organisation) + // verify required parameter 'resource' is not null or undefined + assertParamExists('getOrgResource', 'resource', resource) + const localVarPath = `/api/v3/organizations/{organisation}/resources/{resource}` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"resource"}}`, encodeURIComponent(String(resource))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary List an organisation\'s shared resources + * @param {string} organisation The organisation ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOrgResources: async (organisation: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('listOrgResources', 'organisation', organisation) + const localVarPath = `/api/v3/organizations/{organisation}/resources` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * ResourcesApi - functional programming interface + * @export + */ +export const ResourcesApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = ResourcesApiAxiosParamCreator(configuration) + return { + /** + * Object storage credentials are written immediately and take effect on the environment\'s next deploy. Cache variables are rendered at the next deploy, so a cache may be attached while it is still provisioning. An environment accepts one attachment per resource type. + * @summary Attach a resource to an application environment + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {AttachOrgResourceRequest} attachOrgResourceRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async attachOrgResource(organisation: string, resource: string, attachOrgResourceRequest: AttachOrgResourceRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.attachOrgResource(organisation, resource, attachOrgResourceRequest, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['ResourcesApi.attachOrgResource']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Object storage is provisioned synchronously and returns status available. A Valkey cache is asynchronous and returns status provisioning; poll the show endpoint until it reports available. + * @summary Create a shared resource + * @param {string} organisation The organisation ID + * @param {CreateOrgResourceRequest} createOrgResourceRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createOrgResource(organisation: string, createOrgResourceRequest: CreateOrgResourceRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createOrgResource(organisation, createOrgResourceRequest, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['ResourcesApi.createOrgResource']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Deletes the resource and its contents. This cannot be undone. A resource with live attachments is rejected unless force is set. + * @summary Delete a shared resource + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {boolean} [force] Delete even if the resource is attached or in an error state + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async deleteOrgResource(organisation: string, resource: string, force?: boolean, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.deleteOrgResource(organisation, resource, force, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['ResourcesApi.deleteOrgResource']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * Removes the injected credentials and redeploys the environment so that it stops referencing them, which interrupts the environment briefly. The resource and its contents are not deleted. + * @summary Detach a resource from an application environment + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {string} application The application ID + * @param {string} environment The environment ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async detachOrgResource(organisation: string, resource: string, application: string, environment: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.detachOrgResource(organisation, resource, application, environment, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['ResourcesApi.detachOrgResource']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * + * @summary Get a shared resource and its attachments + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getOrgResource(organisation: string, resource: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getOrgResource(organisation, resource, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['ResourcesApi.getOrgResource']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + /** + * + * @summary List an organisation\'s shared resources + * @param {string} organisation The organisation ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listOrgResources(organisation: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listOrgResources(organisation, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['ResourcesApi.listOrgResources']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, + } +}; + +/** + * ResourcesApi - factory interface + * @export + */ +export const ResourcesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = ResourcesApiFp(configuration) + return { + /** + * Object storage credentials are written immediately and take effect on the environment\'s next deploy. Cache variables are rendered at the next deploy, so a cache may be attached while it is still provisioning. An environment accepts one attachment per resource type. + * @summary Attach a resource to an application environment + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {AttachOrgResourceRequest} attachOrgResourceRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + attachOrgResource(organisation: string, resource: string, attachOrgResourceRequest: AttachOrgResourceRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.attachOrgResource(organisation, resource, attachOrgResourceRequest, options).then((request) => request(axios, basePath)); + }, + /** + * Object storage is provisioned synchronously and returns status available. A Valkey cache is asynchronous and returns status provisioning; poll the show endpoint until it reports available. + * @summary Create a shared resource + * @param {string} organisation The organisation ID + * @param {CreateOrgResourceRequest} createOrgResourceRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOrgResource(organisation: string, createOrgResourceRequest: CreateOrgResourceRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.createOrgResource(organisation, createOrgResourceRequest, options).then((request) => request(axios, basePath)); + }, + /** + * Deletes the resource and its contents. This cannot be undone. A resource with live attachments is rejected unless force is set. + * @summary Delete a shared resource + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {boolean} [force] Delete even if the resource is attached or in an error state + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteOrgResource(organisation: string, resource: string, force?: boolean, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.deleteOrgResource(organisation, resource, force, options).then((request) => request(axios, basePath)); + }, + /** + * Removes the injected credentials and redeploys the environment so that it stops referencing them, which interrupts the environment briefly. The resource and its contents are not deleted. + * @summary Detach a resource from an application environment + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {string} application The application ID + * @param {string} environment The environment ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + detachOrgResource(organisation: string, resource: string, application: string, environment: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.detachOrgResource(organisation, resource, application, environment, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Get a shared resource and its attachments + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getOrgResource(organisation: string, resource: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getOrgResource(organisation, resource, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary List an organisation\'s shared resources + * @param {string} organisation The organisation ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOrgResources(organisation: string, options?: RawAxiosRequestConfig): AxiosPromise> { + return localVarFp.listOrgResources(organisation, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * ResourcesApi - object-oriented interface + * @export + * @class ResourcesApi + * @extends {BaseAPI} + */ +export class ResourcesApi extends BaseAPI { + /** + * Object storage credentials are written immediately and take effect on the environment\'s next deploy. Cache variables are rendered at the next deploy, so a cache may be attached while it is still provisioning. An environment accepts one attachment per resource type. + * @summary Attach a resource to an application environment + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {AttachOrgResourceRequest} attachOrgResourceRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ResourcesApi + */ + public attachOrgResource(organisation: string, resource: string, attachOrgResourceRequest: AttachOrgResourceRequest, options?: RawAxiosRequestConfig) { + return ResourcesApiFp(this.configuration).attachOrgResource(organisation, resource, attachOrgResourceRequest, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Object storage is provisioned synchronously and returns status available. A Valkey cache is asynchronous and returns status provisioning; poll the show endpoint until it reports available. + * @summary Create a shared resource + * @param {string} organisation The organisation ID + * @param {CreateOrgResourceRequest} createOrgResourceRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ResourcesApi + */ + public createOrgResource(organisation: string, createOrgResourceRequest: CreateOrgResourceRequest, options?: RawAxiosRequestConfig) { + return ResourcesApiFp(this.configuration).createOrgResource(organisation, createOrgResourceRequest, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Deletes the resource and its contents. This cannot be undone. A resource with live attachments is rejected unless force is set. + * @summary Delete a shared resource + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {boolean} [force] Delete even if the resource is attached or in an error state + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ResourcesApi + */ + public deleteOrgResource(organisation: string, resource: string, force?: boolean, options?: RawAxiosRequestConfig) { + return ResourcesApiFp(this.configuration).deleteOrgResource(organisation, resource, force, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Removes the injected credentials and redeploys the environment so that it stops referencing them, which interrupts the environment briefly. The resource and its contents are not deleted. + * @summary Detach a resource from an application environment + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {string} application The application ID + * @param {string} environment The environment ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ResourcesApi + */ + public detachOrgResource(organisation: string, resource: string, application: string, environment: string, options?: RawAxiosRequestConfig) { + return ResourcesApiFp(this.configuration).detachOrgResource(organisation, resource, application, environment, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Get a shared resource and its attachments + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ResourcesApi + */ + public getOrgResource(organisation: string, resource: string, options?: RawAxiosRequestConfig) { + return ResourcesApiFp(this.configuration).getOrgResource(organisation, resource, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary List an organisation\'s shared resources + * @param {string} organisation The organisation ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ResourcesApi + */ + public listOrgResources(organisation: string, options?: RawAxiosRequestConfig) { + return ResourcesApiFp(this.configuration).listOrgResources(organisation, options).then((request) => request(this.axios, this.basePath)); + } +} + + + /** * RestoreManagementApi - axios parameter creator * @export diff --git a/common.ts b/common.ts index 07ac07d..4cdeed7 100644 --- a/common.ts +++ b/common.ts @@ -4,7 +4,7 @@ * QuantCDN API * Unified API for QuantCDN Admin and QuantCloud Platform services * - * The version of the OpenAPI document: 4.21.0 + * The version of the OpenAPI document: 4.22.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -142,9 +142,9 @@ export const toPathString = function (url: URL) { * * @export */ -export const createRequestFunction = function (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) { +export const createRequestFunction = function (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration): >(axios?: AxiosInstance, basePath?: string) => Promise { return >(axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { const axiosRequestArgs = {...axiosArgs.options, url: (axios.defaults.baseURL ? '' : configuration?.basePath ?? basePath) + axiosArgs.url}; - return axios.request(axiosRequestArgs); + return axios.request(axiosRequestArgs) as Promise; }; } diff --git a/configuration.ts b/configuration.ts index 5a1e1c0..cb31de0 100644 --- a/configuration.ts +++ b/configuration.ts @@ -4,7 +4,7 @@ * QuantCDN API * Unified API for QuantCDN Admin and QuantCloud Platform services * - * The version of the OpenAPI document: 4.21.0 + * The version of the OpenAPI document: 4.22.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/docs/AIToolsApi.md b/docs/AIToolsApi.md index 8f510fa..625a968 100644 --- a/docs/AIToolsApi.md +++ b/docs/AIToolsApi.md @@ -9,6 +9,7 @@ All URIs are relative to *https://dashboard.quantcdn.io* |[**listAIToolExecutions**](#listaitoolexecutions) | **GET** /api/v3/organizations/{organisation}/ai/tools/executions | List tool executions for monitoring and debugging| |[**listAIToolNames**](#listaitoolnames) | **GET** /api/v3/organizations/{organisation}/ai/tools/names | List tool names only (lightweight response)| |[**listAITools**](#listaitools) | **GET** /api/v3/organizations/{organisation}/ai/tools | List available built-in tools for function calling| +|[**listMcpServers**](#listmcpservers) | **GET** /api/v3/organizations/{organisation}/ai/mcp-servers | List MCP servers with gateway URLs| # **getAIOrchestrationStatus** > GetAIOrchestrationStatus200Response getAIOrchestrationStatus() @@ -290,3 +291,56 @@ const { status, data } = await apiInstance.listAITools( [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **listMcpServers** +> ListMcpServers200Response listMcpServers() + +Lists the organization\'s registered MCP servers for CLI sync (QuantCode). Each server\'s `url` is the FULL MCP gateway URL on the AI API host — clients connect there, never to the origin server. Credentials are never exposed. + +### Example + +```typescript +import { + AIToolsApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new AIToolsApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) + +const { status, data } = await apiInstance.listMcpServers( + organisation +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| + + +### Return type + +**ListMcpServers200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | List of MCP servers retrieved successfully | - | +|**403** | Access denied | - | +|**500** | Failed to fetch MCP servers | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/AttachOrgResourceRequest.md b/docs/AttachOrgResourceRequest.md new file mode 100644 index 0000000..7c5623a --- /dev/null +++ b/docs/AttachOrgResourceRequest.md @@ -0,0 +1,24 @@ +# AttachOrgResourceRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**application** | **string** | | [default to undefined] +**environment** | **string** | | [default to undefined] +**envVarPrefix** | **string** | Namespaces every injected variable, so MEDIA yields MEDIA_S3_BUCKET | [optional] [default to undefined] + +## Example + +```typescript +import { AttachOrgResourceRequest } from '@quantcdn/quant-client'; + +const instance: AttachOrgResourceRequest = { + application, + environment, + envVarPrefix, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/CreateOrgResourceRequest.md b/docs/CreateOrgResourceRequest.md new file mode 100644 index 0000000..b841010 --- /dev/null +++ b/docs/CreateOrgResourceRequest.md @@ -0,0 +1,24 @@ +# CreateOrgResourceRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **string** | | [default to undefined] +**name** | **string** | Lowercase letters, numbers and hyphens, 2-41 characters, starting with a letter or number | [default to undefined] +**config** | [**CreateOrgResourceRequestConfig**](CreateOrgResourceRequestConfig.md) | | [optional] [default to undefined] + +## Example + +```typescript +import { CreateOrgResourceRequest } from '@quantcdn/quant-client'; + +const instance: CreateOrgResourceRequest = { + type, + name, + config, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/CreateOrgResourceRequestConfig.md b/docs/CreateOrgResourceRequestConfig.md new file mode 100644 index 0000000..c22309f --- /dev/null +++ b/docs/CreateOrgResourceRequestConfig.md @@ -0,0 +1,21 @@ +# CreateOrgResourceRequestConfig + +Valkey only + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**dataStorageMaxGb** | **number** | | [optional] [default to undefined] + +## Example + +```typescript +import { CreateOrgResourceRequestConfig } from '@quantcdn/quant-client'; + +const instance: CreateOrgResourceRequestConfig = { + dataStorageMaxGb, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetGovernanceConfig200ResponseSpendLimits.md b/docs/GetGovernanceConfig200ResponseSpendLimits.md index 37f4021..1c89ae9 100644 --- a/docs/GetGovernanceConfig200ResponseSpendLimits.md +++ b/docs/GetGovernanceConfig200ResponseSpendLimits.md @@ -10,7 +10,7 @@ Name | Type | Description | Notes **perUserMonthlyBudgetCents** | **number** | | [optional] [default to undefined] **perUserDailyBudgetCents** | **number** | | [optional] [default to undefined] **warningThresholdPercent** | **number** | | [optional] [default to undefined] -**interfaceLimits** | [**{ [key: string]: GetGovernanceConfig200ResponseSpendLimitsInterfaceLimitsValue; }**](GetGovernanceConfig200ResponseSpendLimitsInterfaceLimitsValue.md) | Aggregate spend caps per interface label (slack, autonomous, api-gateway, streaming, websocket). Keys are interface labels. | [optional] [default to undefined] +**interfaceLimits** | [**{ [key: string]: GetGovernanceConfig200ResponseSpendLimitsInterfaceLimitsValue; }**](GetGovernanceConfig200ResponseSpendLimitsInterfaceLimitsValue.md) | Aggregate spend caps per interface label (slack, autonomous, api-gateway, streaming, websocket, durable, orchestration, workflow, embedding, ai-search). Keys are interface labels. | [optional] [default to undefined] **userOverrides** | [**{ [key: string]: GetGovernanceConfig200ResponseSpendLimitsUserOverridesValue; }**](GetGovernanceConfig200ResponseSpendLimitsUserOverridesValue.md) | Per-user budget overrides keyed by userId (numeric portal id, slack-<id>, or system:code-agent). Replaces the flat per-user budget for that user; unlimited=true exempts them. | [optional] [default to undefined] **perTokenMonthlyBudgetCents** | **number** | Flat monthly cap in cents applied to every API token without a named override | [optional] [default to undefined] **perTokenDailyBudgetCents** | **number** | Flat daily cap in cents applied to every API token without a named override | [optional] [default to undefined] diff --git a/docs/IdleSleepApi.md b/docs/IdleSleepApi.md new file mode 100644 index 0000000..f00d835 --- /dev/null +++ b/docs/IdleSleepApi.md @@ -0,0 +1,134 @@ +# IdleSleepApi + +All URIs are relative to *https://dashboard.quantcdn.io* + +|Method | HTTP request | Description| +|------------- | ------------- | -------------| +|[**getIdleSleep**](#getidlesleep) | **GET** /api/v3/organizations/{organisation}/applications/{application}/environments/{environment}/idle-sleep | Get Idle Sleep Setting| +|[**setIdleSleep**](#setidlesleep) | **PUT** /api/v3/organizations/{organisation}/applications/{application}/environments/{environment}/idle-sleep | Set Idle Sleep Setting| + +# **getIdleSleep** +> IdleSleepResponse getIdleSleep() + +Retrieves the idle sleep setting and the current sleep state for the environment. + +### Example + +```typescript +import { + IdleSleepApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new IdleSleepApi(configuration); + +let organisation: string; // (default to undefined) +let application: string; // (default to undefined) +let environment: string; // (default to undefined) + +const { status, data } = await apiInstance.getIdleSleep( + organisation, + application, + environment +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | | defaults to undefined| +| **application** | [**string**] | | defaults to undefined| +| **environment** | [**string**] | | defaults to undefined| + + +### Return type + +**IdleSleepResponse** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Idle sleep setting and state. | - | +|**403** | The caller lacks the required permission or token scope. | - | +|**404** | Organisation, application or environment not found. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **setIdleSleep** +> IdleSleepResponse setIdleSleep(setIdleSleepRequest) + +Enable or disable idle sleep. Only Fargate compute sleeps. Disabling a sleeping environment wakes it first; a 202 means it is still waking. + +### Example + +```typescript +import { + IdleSleepApi, + Configuration, + SetIdleSleepRequest +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new IdleSleepApi(configuration); + +let organisation: string; // (default to undefined) +let application: string; // (default to undefined) +let environment: string; // (default to undefined) +let setIdleSleepRequest: SetIdleSleepRequest; // + +const { status, data } = await apiInstance.setIdleSleep( + organisation, + application, + environment, + setIdleSleepRequest +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **setIdleSleepRequest** | **SetIdleSleepRequest**| | | +| **organisation** | [**string**] | | defaults to undefined| +| **application** | [**string**] | | defaults to undefined| +| **environment** | [**string**] | | defaults to undefined| + + +### Return type + +**IdleSleepResponse** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Applied. | - | +|**202** | Applied; environment still waking. | - | +|**400** | The environment cannot use idle sleep. It runs on EC2 rather than Fargate, it has no web service, or its hostname is too long to route while asleep. | - | +|**403** | The caller lacks the required permission or token scope. | - | +|**404** | Organisation, application or environment not found. | - | +|**422** | Validation failed. idleMinutes must be an integer from 10 to 1440. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/IdleSleepResponse.md b/docs/IdleSleepResponse.md new file mode 100644 index 0000000..f50ccc7 --- /dev/null +++ b/docs/IdleSleepResponse.md @@ -0,0 +1,26 @@ +# IdleSleepResponse + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**enabled** | **boolean** | | [default to undefined] +**idleMinutes** | **number** | | [default to undefined] +**state** | **string** | | [default to undefined] +**stateChangedAt** | **string** | | [default to undefined] + +## Example + +```typescript +import { IdleSleepResponse } from '@quantcdn/quant-client'; + +const instance: IdleSleepResponse = { + enabled, + idleMinutes, + state, + stateChangedAt, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ListMcpServers200Response.md b/docs/ListMcpServers200Response.md new file mode 100644 index 0000000..2f4fdb4 --- /dev/null +++ b/docs/ListMcpServers200Response.md @@ -0,0 +1,22 @@ +# ListMcpServers200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**gatewayBaseUrl** | **string** | Origin of the MCP gateway host (scheme://host[:port]) — clients treat gateway URLs on this origin as bearer-authenticated with the end user\'s Quant token | [optional] [default to undefined] +**servers** | [**Array<ListMcpServers200ResponseServersInner>**](ListMcpServers200ResponseServersInner.md) | | [optional] [default to undefined] + +## Example + +```typescript +import { ListMcpServers200Response } from '@quantcdn/quant-client'; + +const instance: ListMcpServers200Response = { + gatewayBaseUrl, + servers, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ListMcpServers200ResponseServersInner.md b/docs/ListMcpServers200ResponseServersInner.md new file mode 100644 index 0000000..8fbfff4 --- /dev/null +++ b/docs/ListMcpServers200ResponseServersInner.md @@ -0,0 +1,28 @@ +# ListMcpServers200ResponseServersInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**serverName** | **string** | | [optional] [default to undefined] +**displayName** | **string** | | [optional] [default to undefined] +**url** | **string** | MCP gateway URL | [optional] [default to undefined] +**enabled** | **boolean** | | [optional] [default to undefined] +**toolAllowlist** | **Array<string>** | | [optional] [default to undefined] + +## Example + +```typescript +import { ListMcpServers200ResponseServersInner } from '@quantcdn/quant-client'; + +const instance: ListMcpServers200ResponseServersInner = { + serverName, + displayName, + url, + enabled, + toolAllowlist, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/OrgResource.md b/docs/OrgResource.md new file mode 100644 index 0000000..502d26d --- /dev/null +++ b/docs/OrgResource.md @@ -0,0 +1,36 @@ +# OrgResource + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**orgName** | **string** | | [optional] [default to undefined] +**resourceId** | **string** | | [optional] [default to undefined] +**type** | **string** | | [optional] [default to undefined] +**name** | **string** | | [optional] [default to undefined] +**status** | **string** | | [optional] [default to undefined] +**scope** | **string** | org for resources managed by these endpoints. app rows are compatibility records for an application-managed cache and cannot be mutated here. | [optional] [default to undefined] +**config** | **object** | Type-specific settings, such as dataStorageMaxGb for a cache | [optional] [default to undefined] +**physical** | **object** | Provisioned detail: bucket and region for object storage, cache identifier and endpoint for a cache | [optional] [default to undefined] +**createdAt** | **string** | | [optional] [default to undefined] + +## Example + +```typescript +import { OrgResource } from '@quantcdn/quant-client'; + +const instance: OrgResource = { + orgName, + resourceId, + type, + name, + status, + scope, + config, + physical, + createdAt, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ResourceAttachment.md b/docs/ResourceAttachment.md new file mode 100644 index 0000000..09ffca4 --- /dev/null +++ b/docs/ResourceAttachment.md @@ -0,0 +1,32 @@ +# ResourceAttachment + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**appName** | **string** | | [optional] [default to undefined] +**envName** | **string** | | [optional] [default to undefined] +**envVarPrefix** | **string** | Namespaces every injected variable, so MEDIA yields MEDIA_S3_BUCKET | [optional] [default to undefined] +**accessKeyId** | **string** | Object storage only. The secret half is written to the environment\'s secrets and never returned. | [optional] [default to undefined] +**injectedKeys** | **Array<string>** | The exact variable names this attachment wrote, removed precisely on detach | [optional] [default to undefined] +**createdAt** | **string** | | [optional] [default to undefined] +**note** | **string** | When the credentials take effect | [optional] [default to undefined] + +## Example + +```typescript +import { ResourceAttachment } from '@quantcdn/quant-client'; + +const instance: ResourceAttachment = { + appName, + envName, + envVarPrefix, + accessKeyId, + injectedKeys, + createdAt, + note, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ResourcesApi.md b/docs/ResourcesApi.md new file mode 100644 index 0000000..043eae3 --- /dev/null +++ b/docs/ResourcesApi.md @@ -0,0 +1,353 @@ +# ResourcesApi + +All URIs are relative to *https://dashboard.quantcdn.io* + +|Method | HTTP request | Description| +|------------- | ------------- | -------------| +|[**attachOrgResource**](#attachorgresource) | **POST** /api/v3/organizations/{organisation}/resources/{resource}/attachments | Attach a resource to an application environment| +|[**createOrgResource**](#createorgresource) | **POST** /api/v3/organizations/{organisation}/resources | Create a shared resource| +|[**deleteOrgResource**](#deleteorgresource) | **DELETE** /api/v3/organizations/{organisation}/resources/{resource} | Delete a shared resource| +|[**detachOrgResource**](#detachorgresource) | **DELETE** /api/v3/organizations/{organisation}/resources/{resource}/attachments/{application}/{environment} | Detach a resource from an application environment| +|[**getOrgResource**](#getorgresource) | **GET** /api/v3/organizations/{organisation}/resources/{resource} | Get a shared resource and its attachments| +|[**listOrgResources**](#listorgresources) | **GET** /api/v3/organizations/{organisation}/resources | List an organisation\'s shared resources| + +# **attachOrgResource** +> ResourceAttachment attachOrgResource(attachOrgResourceRequest) + +Object storage credentials are written immediately and take effect on the environment\'s next deploy. Cache variables are rendered at the next deploy, so a cache may be attached while it is still provisioning. An environment accepts one attachment per resource type. + +### Example + +```typescript +import { + ResourcesApi, + Configuration, + AttachOrgResourceRequest +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new ResourcesApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let resource: string; //The resource ID (default to undefined) +let attachOrgResourceRequest: AttachOrgResourceRequest; // + +const { status, data } = await apiInstance.attachOrgResource( + organisation, + resource, + attachOrgResourceRequest +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **attachOrgResourceRequest** | **AttachOrgResourceRequest**| | | +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **resource** | [**string**] | The resource ID | defaults to undefined| + + +### Return type + +**ResourceAttachment** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | The attachment | - | +|**409** | An attachment of this type already exists for the environment | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **createOrgResource** +> OrgResource createOrgResource(createOrgResourceRequest) + +Object storage is provisioned synchronously and returns status available. A Valkey cache is asynchronous and returns status provisioning; poll the show endpoint until it reports available. + +### Example + +```typescript +import { + ResourcesApi, + Configuration, + CreateOrgResourceRequest +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new ResourcesApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let createOrgResourceRequest: CreateOrgResourceRequest; // + +const { status, data } = await apiInstance.createOrgResource( + organisation, + createOrgResourceRequest +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **createOrgResourceRequest** | **CreateOrgResourceRequest**| | | +| **organisation** | [**string**] | The organisation ID | defaults to undefined| + + +### Return type + +**OrgResource** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**201** | The created resource | - | +|**422** | Invalid type, name or cache capacity | - | +|**409** | A resource with this name already exists | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **deleteOrgResource** +> deleteOrgResource() + +Deletes the resource and its contents. This cannot be undone. A resource with live attachments is rejected unless force is set. + +### Example + +```typescript +import { + ResourcesApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new ResourcesApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let resource: string; //The resource ID (default to undefined) +let force: boolean; //Delete even if the resource is attached or in an error state (optional) (default to undefined) + +const { status, data } = await apiInstance.deleteOrgResource( + organisation, + resource, + force +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **resource** | [**string**] | The resource ID | defaults to undefined| +| **force** | [**boolean**] | Delete even if the resource is attached or in an error state | (optional) defaults to undefined| + + +### Return type + +void (empty response body) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**204** | Deleted | - | +|**409** | The resource is still attached | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **detachOrgResource** +> detachOrgResource() + +Removes the injected credentials and redeploys the environment so that it stops referencing them, which interrupts the environment briefly. The resource and its contents are not deleted. + +### Example + +```typescript +import { + ResourcesApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new ResourcesApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let resource: string; //The resource ID (default to undefined) +let application: string; //The application ID (default to undefined) +let environment: string; //The environment ID (default to undefined) + +const { status, data } = await apiInstance.detachOrgResource( + organisation, + resource, + application, + environment +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **resource** | [**string**] | The resource ID | defaults to undefined| +| **application** | [**string**] | The application ID | defaults to undefined| +| **environment** | [**string**] | The environment ID | defaults to undefined| + + +### Return type + +void (empty response body) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**204** | Detached; the environment is redeploying | - | +|**404** | No such attachment | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getOrgResource** +> OrgResource getOrgResource() + + +### Example + +```typescript +import { + ResourcesApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new ResourcesApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let resource: string; //The resource ID (default to undefined) + +const { status, data } = await apiInstance.getOrgResource( + organisation, + resource +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **resource** | [**string**] | The resource ID | defaults to undefined| + + +### Return type + +**OrgResource** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | The resource | - | +|**404** | Resource not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **listOrgResources** +> Array listOrgResources() + + +### Example + +```typescript +import { + ResourcesApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new ResourcesApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) + +const { status, data } = await apiInstance.listOrgResources( + organisation +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| + + +### Return type + +**Array** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | The organisation\'s resources | - | +|**403** | Cloud access required | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/SetIdleSleepRequest.md b/docs/SetIdleSleepRequest.md new file mode 100644 index 0000000..3188f00 --- /dev/null +++ b/docs/SetIdleSleepRequest.md @@ -0,0 +1,22 @@ +# SetIdleSleepRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**enabled** | **boolean** | Whether the environment sleeps when idle. | [default to undefined] +**idleMinutes** | **number** | Minutes with no requests before compute sleeps. | [optional] [default to 30] + +## Example + +```typescript +import { SetIdleSleepRequest } from '@quantcdn/quant-client'; + +const instance: SetIdleSleepRequest = { + enabled, + idleMinutes, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/index.ts b/index.ts index ca8b42e..5b91635 100644 --- a/index.ts +++ b/index.ts @@ -4,7 +4,7 @@ * QuantCDN API * Unified API for QuantCDN Admin and QuantCloud Platform services * - * The version of the OpenAPI document: 4.21.0 + * The version of the OpenAPI document: 4.22.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/package-lock.json b/package-lock.json index fc08ba7..7e1f565 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@quantcdn/quant-client", - "version": "4.21.1", + "version": "4.22.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@quantcdn/quant-client", - "version": "4.21.1", + "version": "4.22.0", "license": "MIT", "dependencies": { "axios": "^1.16.0" diff --git a/package.json b/package.json index edff04f..1178a5a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@quantcdn/quant-client", - "version": "4.21.1", + "version": "4.22.0", "description": "OpenAPI client for @quantcdn/quant-client", "author": "QuantCDN", "repository": { @@ -32,7 +32,7 @@ "prepare": "npm run build", "clean": "rm -Rf dist/", "test": "npm run test:smoke", - "test:smoke": "node -e \"const api = require('./dist/index.js'); console.log('\u2713 SDK loads successfully'); console.log('\u2713 Exports:', Object.keys(api).length, 'items'); console.log('\u2713 Configuration available:', typeof api.Configuration); process.exit(0);\"", + "test:smoke": "node -e \"const api = require('./dist/index.js'); console.log('✓ SDK loads successfully'); console.log('✓ Exports:', Object.keys(api).length, 'items'); console.log('✓ Configuration available:', typeof api.Configuration); process.exit(0);\"", "test:unit": "jest --testMatch=\"**/tests/**/*.test.js\"", "test:all": "npm run build && npm run test:smoke && npm run test:unit", "validate": "scripts/validate-sdk.sh", From e1a3986c77aea3a4fe75670da4add78c80ed2981 Mon Sep 17 00:00:00 2001 From: "quantcloud[bot]" Date: Mon, 7 Sep 2026 20:57:26 +0000 Subject: [PATCH 2/4] feat(sdk): v4.22.0 - Auto-generated from unified API spec Generated from unified API spec v4.22.0 Changes: - Auto-generated SDK updates This PR was automatically created by the API generation pipeline. --- .openapi-generator/FILES | 10 + api.ts | 912 +++++++++++++++++- docs/AttachOrgResourceRequest.md | 2 + docs/EnvironmentsApi.md | 23 +- docs/GetEnvironmentLogs200Response.md | 6 +- ...nvironmentLogs200ResponseLogEventsInner.md | 4 + ...GetEnvironmentLogs200ResponsePagination.md | 28 + docs/GetOrgResourceCredentials200Response.md | 30 + docs/GetProjectLogs200Response.md | 24 + docs/GetProjectLogs200ResponseLogsInner.md | 40 + docs/GetProjectLogs400Response.md | 22 + docs/KVApi.md | 73 +- docs/KVDelete409Response.md | 24 + docs/KVItemsPurge200Response.md | 24 + docs/KVItemsPurge202Response.md | 24 + docs/ProjectsApi.md | 78 ++ docs/PurgeOrgResource200Response.md | 30 + docs/PurgeOrgResourceRequest.md | 28 + docs/ResourceAttachment.md | 4 + docs/ResourcesApi.md | 117 +++ 20 files changed, 1462 insertions(+), 41 deletions(-) create mode 100644 docs/GetEnvironmentLogs200ResponsePagination.md create mode 100644 docs/GetOrgResourceCredentials200Response.md create mode 100644 docs/GetProjectLogs200Response.md create mode 100644 docs/GetProjectLogs200ResponseLogsInner.md create mode 100644 docs/GetProjectLogs400Response.md create mode 100644 docs/KVDelete409Response.md create mode 100644 docs/KVItemsPurge200Response.md create mode 100644 docs/KVItemsPurge202Response.md create mode 100644 docs/PurgeOrgResource200Response.md create mode 100644 docs/PurgeOrgResourceRequest.md diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 486a5d0..5226be0 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -188,6 +188,7 @@ docs/GetDurableExecutionStatus200ResponseResultUsage.md docs/GetEcrLoginCredentials200Response.md docs/GetEnvironmentLogs200Response.md docs/GetEnvironmentLogs200ResponseLogEventsInner.md +docs/GetEnvironmentLogs200ResponsePagination.md docs/GetFile200Response.md docs/GetGovernanceConfig200Response.md docs/GetGovernanceConfig200ResponseSpendLimits.md @@ -205,6 +206,10 @@ docs/GetMyUsage200ResponseMonthly.md docs/GetMyUsage200ResponseQuota.md docs/GetMyUsage200ResponseQuotaDailyLimit.md docs/GetMyUsage200ResponseQuotaMonthlyLimit.md +docs/GetOrgResourceCredentials200Response.md +docs/GetProjectLogs200Response.md +docs/GetProjectLogs200ResponseLogsInner.md +docs/GetProjectLogs400Response.md docs/GetRestoreStatus200Response.md docs/GetScalingPolicyResponse.md docs/GetSkill200Response.md @@ -235,8 +240,11 @@ docs/ImportSkillCollectionRequestSource.md docs/ImportSkillRequest.md docs/ImportSkillRequestSource.md docs/KVApi.md +docs/KVDelete409Response.md docs/KVItemsCreate200Response.md docs/KVItemsDelete200Response.md +docs/KVItemsPurge200Response.md +docs/KVItemsPurge202Response.md docs/KVItemsShow200Response.md docs/KVItemsShow200ResponseValue.md docs/KVLinkToProject200Response.md @@ -301,6 +309,8 @@ docs/PatchEnvironmentComposeRequestSpotConfiguration.md docs/ProjectsApi.md docs/PurgeApi.md docs/PurgeCreateRequest.md +docs/PurgeOrgResource200Response.md +docs/PurgeOrgResourceRequest.md docs/QueryVectorCollection200Response.md docs/QueryVectorCollection200ResponsePagination.md docs/QueryVectorCollection200ResponseResultsInner.md diff --git a/api.ts b/api.ts index c254d73..025da4d 100644 --- a/api.ts +++ b/api.ts @@ -497,7 +497,21 @@ export interface AttachOrgResourceRequest { * @memberof AttachOrgResourceRequest */ 'envVarPrefix'?: string; + /** + * Cache only. scoped injects an RBAC user limited to this environment\'s CACHE_PREFIX (plain and {hash-tag} forms) with FLUSHALL and FLUSHDB denied. admin injects the cache-wide credential for integrations that require FLUSHDB, such as Laravel Cache::flush() or the WordPress object cache without selective flush; it can read, write and flush every attached environment\'s keys. + * @type {string} + * @memberof AttachOrgResourceRequest + */ + 'accessLevel'?: AttachOrgResourceRequestAccessLevelEnum; } + +export const AttachOrgResourceRequestAccessLevelEnum = { + Scoped: 'scoped', + Admin: 'admin' +} as const; + +export type AttachOrgResourceRequestAccessLevelEnum = typeof AttachOrgResourceRequestAccessLevelEnum[keyof typeof AttachOrgResourceRequestAccessLevelEnum]; + /** * * @export @@ -5439,7 +5453,19 @@ export interface GetEnvironmentLogs200Response { */ 'logEvents'?: Array; /** - * Token for fetching next page of results (null if no more pages) + * CloudWatch log group the events were read from + * @type {string} + * @memberof GetEnvironmentLogs200Response + */ + 'logGroupName'?: string | null; + /** + * + * @type {GetEnvironmentLogs200ResponsePagination} + * @memberof GetEnvironmentLogs200Response + */ + 'pagination'?: GetEnvironmentLogs200ResponsePagination; + /** + * Same as pagination.nextToken; kept for backward compatibility * @type {string} * @memberof GetEnvironmentLogs200Response */ @@ -5463,6 +5489,55 @@ export interface GetEnvironmentLogs200ResponseLogEventsInner { * @memberof GetEnvironmentLogs200ResponseLogEventsInner */ 'message'?: string; + /** + * Unix timestamp in milliseconds when CloudWatch ingested the event + * @type {number} + * @memberof GetEnvironmentLogs200ResponseLogEventsInner + */ + 'ingestionTime'?: number | null; + /** + * CloudWatch log stream, named container/container/taskId + * @type {string} + * @memberof GetEnvironmentLogs200ResponseLogEventsInner + */ + 'logStreamName'?: string | null; +} +/** + * + * @export + * @interface GetEnvironmentLogs200ResponsePagination + */ +export interface GetEnvironmentLogs200ResponsePagination { + /** + * Page size that was applied + * @type {number} + * @memberof GetEnvironmentLogs200ResponsePagination + */ + 'limit'?: number; + /** + * True when another page is available + * @type {boolean} + * @memberof GetEnvironmentLogs200ResponsePagination + */ + 'hasMore'?: boolean; + /** + * Token for the next page. Present only when hasMore is true. + * @type {string} + * @memberof GetEnvironmentLogs200ResponsePagination + */ + 'nextToken'?: string | null; + /** + * Total events in the time range. Present only when includeTotal=true. + * @type {number} + * @memberof GetEnvironmentLogs200ResponsePagination + */ + 'total'?: number | null; + /** + * ceil(total / limit). Present only when includeTotal=true. + * @type {number} + * @memberof GetEnvironmentLogs200ResponsePagination + */ + 'totalPages'?: number | null; } /** * @@ -5982,6 +6057,166 @@ export interface GetMyUsage200ResponseQuotaMonthlyLimit { */ 'remainingCents'?: number; } +/** + * + * @export + * @interface GetOrgResourceCredentials200Response + */ +export interface GetOrgResourceCredentials200Response { + /** + * + * @type {string} + * @memberof GetOrgResourceCredentials200Response + */ + 'host'?: string; + /** + * + * @type {number} + * @memberof GetOrgResourceCredentials200Response + */ + 'port'?: number; + /** + * + * @type {boolean} + * @memberof GetOrgResourceCredentials200Response + */ + 'tls'?: boolean; + /** + * + * @type {string} + * @memberof GetOrgResourceCredentials200Response + */ + 'username'?: string; + /** + * + * @type {string} + * @memberof GetOrgResourceCredentials200Response + */ + 'password'?: string; + /** + * + * @type {string} + * @memberof GetOrgResourceCredentials200Response + */ + 'note'?: string; +} +/** + * + * @export + * @interface GetProjectLogs200Response + */ +export interface GetProjectLogs200Response { + /** + * Structured CloudFront access log entries. Each entry carries request, response, timing and cache fields as emitted by the edge. + * @type {Array} + * @memberof GetProjectLogs200Response + */ + 'logs'?: Array; + /** + * Number of entries in this response + * @type {number} + * @memberof GetProjectLogs200Response + */ + 'count'?: number; + /** + * Token for the next page, or null when there are no more entries + * @type {string} + * @memberof GetProjectLogs200Response + */ + 'nextToken'?: string | null; +} +/** + * + * @export + * @interface GetProjectLogs200ResponseLogsInner + */ +export interface GetProjectLogs200ResponseLogsInner { + /** + * + * @type {string} + * @memberof GetProjectLogs200ResponseLogsInner + */ + 'timestamp'?: string | null; + /** + * + * @type {string} + * @memberof GetProjectLogs200ResponseLogsInner + */ + 'project'?: string | null; + /** + * + * @type {string} + * @memberof GetProjectLogs200ResponseLogsInner + */ + 'domain'?: string | null; + /** + * + * @type {string} + * @memberof GetProjectLogs200ResponseLogsInner + */ + 'method'?: string | null; + /** + * + * @type {string} + * @memberof GetProjectLogs200ResponseLogsInner + */ + 'uri'?: string | null; + /** + * + * @type {number} + * @memberof GetProjectLogs200ResponseLogsInner + */ + 'status_code'?: number | null; + /** + * + * @type {string} + * @memberof GetProjectLogs200ResponseLogsInner + */ + 'cache_status'?: string | null; + /** + * + * @type {string} + * @memberof GetProjectLogs200ResponseLogsInner + */ + 'client_ip'?: string | null; + /** + * + * @type {string} + * @memberof GetProjectLogs200ResponseLogsInner + */ + 'user_agent'?: string | null; + /** + * + * @type {number} + * @memberof GetProjectLogs200ResponseLogsInner + */ + 'bytes'?: number | null; + /** + * + * @type {number} + * @memberof GetProjectLogs200ResponseLogsInner + */ + 'time_taken'?: number | null; +} +/** + * + * @export + * @interface GetProjectLogs400Response + */ +export interface GetProjectLogs400Response { + /** + * + * @type {boolean} + * @memberof GetProjectLogs400Response + */ + 'error'?: boolean; + /** + * + * @type {string} + * @memberof GetProjectLogs400Response + */ + 'message'?: string; +} /** * * @export @@ -7406,6 +7641,31 @@ export const ImportSkillRequestSourceTypeEnum = { export type ImportSkillRequestSourceTypeEnum = typeof ImportSkillRequestSourceTypeEnum[keyof typeof ImportSkillRequestSourceTypeEnum]; +/** + * + * @export + * @interface KVDelete409Response + */ +export interface KVDelete409Response { + /** + * + * @type {boolean} + * @memberof KVDelete409Response + */ + 'error'?: boolean; + /** + * + * @type {string} + * @memberof KVDelete409Response + */ + 'message'?: string; + /** + * + * @type {string} + * @memberof KVDelete409Response + */ + 'hint'?: string; +} /** * * @export @@ -7450,6 +7710,56 @@ export interface KVItemsDelete200Response { */ 'key'?: string; } +/** + * + * @export + * @interface KVItemsPurge200Response + */ +export interface KVItemsPurge200Response { + /** + * + * @type {string} + * @memberof KVItemsPurge200Response + */ + 'status'?: string; + /** + * + * @type {number} + * @memberof KVItemsPurge200Response + */ + 'deleted'?: number; + /** + * + * @type {number} + * @memberof KVItemsPurge200Response + */ + 'scanned'?: number; +} +/** + * + * @export + * @interface KVItemsPurge202Response + */ +export interface KVItemsPurge202Response { + /** + * + * @type {string} + * @memberof KVItemsPurge202Response + */ + 'status'?: string; + /** + * + * @type {number} + * @memberof KVItemsPurge202Response + */ + 'deleted'?: number; + /** + * + * @type {number} + * @memberof KVItemsPurge202Response + */ + 'scanned'?: number; +} /** * * @export @@ -9499,6 +9809,94 @@ export interface PurgeCreateRequest { */ 'soft'?: boolean; } +/** + * + * @export + * @interface PurgeOrgResource200Response + */ +export interface PurgeOrgResource200Response { + /** + * + * @type {string} + * @memberof PurgeOrgResource200Response + */ + 'scope'?: string; + /** + * + * @type {string} + * @memberof PurgeOrgResource200Response + */ + 'prefix'?: string; + /** + * + * @type {number} + * @memberof PurgeOrgResource200Response + */ + 'deletedKeys'?: number; + /** + * + * @type {boolean} + * @memberof PurgeOrgResource200Response + */ + 'complete'?: boolean; + /** + * + * @type {string} + * @memberof PurgeOrgResource200Response + */ + 'cursor'?: string; + /** + * + * @type {boolean} + * @memberof PurgeOrgResource200Response + */ + 'flushed'?: boolean; +} +/** + * + * @export + * @interface PurgeOrgResourceRequest + */ +export interface PurgeOrgResourceRequest { + /** + * + * @type {string} + * @memberof PurgeOrgResourceRequest + */ + 'scope': PurgeOrgResourceRequestScopeEnum; + /** + * scope environment only + * @type {string} + * @memberof PurgeOrgResourceRequest + */ + 'application'?: string; + /** + * scope environment only + * @type {string} + * @memberof PurgeOrgResourceRequest + */ + 'environment'?: string; + /** + * scope all only; must be true + * @type {boolean} + * @memberof PurgeOrgResourceRequest + */ + 'confirm'?: boolean; + /** + * scope environment only; resume a partial purge + * @type {string} + * @memberof PurgeOrgResourceRequest + */ + 'cursor'?: string; +} + +export const PurgeOrgResourceRequestScopeEnum = { + Environment: 'environment', + All: 'all' +} as const; + +export type PurgeOrgResourceRequestScopeEnum = typeof PurgeOrgResourceRequestScopeEnum[keyof typeof PurgeOrgResourceRequestScopeEnum]; + /** * * @export @@ -9781,6 +10179,18 @@ export interface ResourceAttachment { * @memberof ResourceAttachment */ 'accessKeyId'?: string; + /** + * Cache only. This environment\'s own RBAC user, limited to its CACHE_PREFIX with FLUSHALL and FLUSHDB denied, so it cannot touch another environment\'s keys. + * @type {string} + * @memberof ResourceAttachment + */ + 'cacheUserId'?: string; + /** + * Cache only. scoped: the environment holds its own RBAC user. admin: it holds the cache-wide credential and can read, write and flush every attached environment\'s keys. Absent on attachments made before access levels existed (treated as scoped). + * @type {string} + * @memberof ResourceAttachment + */ + 'accessLevel'?: ResourceAttachmentAccessLevelEnum; /** * The exact variable names this attachment wrote, removed precisely on detach * @type {Array} @@ -9800,6 +10210,14 @@ export interface ResourceAttachment { */ 'note'?: string; } + +export const ResourceAttachmentAccessLevelEnum = { + Scoped: 'scoped', + Admin: 'admin' +} as const; + +export type ResourceAttachmentAccessLevelEnum = typeof ResourceAttachmentAccessLevelEnum[keyof typeof ResourceAttachmentAccessLevelEnum]; + /** * * @export @@ -32073,7 +32491,7 @@ export const EnvironmentsApiAxiosParamCreator = function (configuration?: Config }; }, /** - * Retrieves logs from CloudWatch for the specified environment with optional filtering by time range, container, and pattern matching. Supports pagination via nextToken. + * Retrieves logs from CloudWatch for the specified environment with optional filtering by time range, container, and literal text. Newest-first by default; pass the nextToken from the previous response to fetch the next page. * @summary Get the logs for an environment * @param {string} organisation The organisation ID * @param {string} application The application ID @@ -32081,13 +32499,15 @@ export const EnvironmentsApiAxiosParamCreator = function (configuration?: Config * @param {string} [startTime] Start time for log retrieval (ISO 8601 format or Unix timestamp) * @param {string} [endTime] End time for log retrieval (ISO 8601 format or Unix timestamp) * @param {string} [containerName] Filter logs by specific container name - * @param {string} [filterPattern] CloudWatch Logs filter pattern for searching log content - * @param {number} [limit] Maximum number of log entries to return per page - * @param {string} [nextToken] Pagination token from previous response for retrieving next page of results + * @param {string} [filterPattern] Literal, case-sensitive text to match anywhere in the log message + * @param {number} [limit] Maximum number of log entries to return per page (default 50) + * @param {string} [nextToken] Opaque pagination token from the previous response. Pass back unchanged to fetch the next page. + * @param {GetEnvironmentLogsOrderEnum} [order] Sort order. desc returns newest first, asc returns oldest first. + * @param {boolean} [includeTotal] When true, the response pagination object includes the total log count for the time range. Adds 1-2 seconds of latency. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getEnvironmentLogs: async (organisation: string, application: string, environment: string, startTime?: string, endTime?: string, containerName?: string, filterPattern?: string, limit?: number, nextToken?: string, options: RawAxiosRequestConfig = {}): Promise => { + getEnvironmentLogs: async (organisation: string, application: string, environment: string, startTime?: string, endTime?: string, containerName?: string, filterPattern?: string, limit?: number, nextToken?: string, order?: GetEnvironmentLogsOrderEnum, includeTotal?: boolean, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organisation' is not null or undefined assertParamExists('getEnvironmentLogs', 'organisation', organisation) // verify required parameter 'application' is not null or undefined @@ -32137,6 +32557,14 @@ export const EnvironmentsApiAxiosParamCreator = function (configuration?: Config localVarQueryParameter['nextToken'] = nextToken; } + if (order !== undefined) { + localVarQueryParameter['order'] = order; + } + + if (includeTotal !== undefined) { + localVarQueryParameter['includeTotal'] = includeTotal; + } + setSearchParams(localVarUrlObj, localVarQueryParameter); @@ -32527,7 +32955,7 @@ export const EnvironmentsApiFp = function(configuration?: Configuration) { return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Retrieves logs from CloudWatch for the specified environment with optional filtering by time range, container, and pattern matching. Supports pagination via nextToken. + * Retrieves logs from CloudWatch for the specified environment with optional filtering by time range, container, and literal text. Newest-first by default; pass the nextToken from the previous response to fetch the next page. * @summary Get the logs for an environment * @param {string} organisation The organisation ID * @param {string} application The application ID @@ -32535,14 +32963,16 @@ export const EnvironmentsApiFp = function(configuration?: Configuration) { * @param {string} [startTime] Start time for log retrieval (ISO 8601 format or Unix timestamp) * @param {string} [endTime] End time for log retrieval (ISO 8601 format or Unix timestamp) * @param {string} [containerName] Filter logs by specific container name - * @param {string} [filterPattern] CloudWatch Logs filter pattern for searching log content - * @param {number} [limit] Maximum number of log entries to return per page - * @param {string} [nextToken] Pagination token from previous response for retrieving next page of results + * @param {string} [filterPattern] Literal, case-sensitive text to match anywhere in the log message + * @param {number} [limit] Maximum number of log entries to return per page (default 50) + * @param {string} [nextToken] Opaque pagination token from the previous response. Pass back unchanged to fetch the next page. + * @param {GetEnvironmentLogsOrderEnum} [order] Sort order. desc returns newest first, asc returns oldest first. + * @param {boolean} [includeTotal] When true, the response pagination object includes the total log count for the time range. Adds 1-2 seconds of latency. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async getEnvironmentLogs(organisation: string, application: string, environment: string, startTime?: string, endTime?: string, containerName?: string, filterPattern?: string, limit?: number, nextToken?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.getEnvironmentLogs(organisation, application, environment, startTime, endTime, containerName, filterPattern, limit, nextToken, options); + async getEnvironmentLogs(organisation: string, application: string, environment: string, startTime?: string, endTime?: string, containerName?: string, filterPattern?: string, limit?: number, nextToken?: string, order?: GetEnvironmentLogsOrderEnum, includeTotal?: boolean, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getEnvironmentLogs(organisation, application, environment, startTime, endTime, containerName, filterPattern, limit, nextToken, order, includeTotal, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; const localVarOperationServerBasePath = operationServerMap['EnvironmentsApi.getEnvironmentLogs']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); @@ -32693,7 +33123,7 @@ export const EnvironmentsApiFactory = function (configuration?: Configuration, b return localVarFp.getEnvironment(organisation, application, environment, options).then((request) => request(axios, basePath)); }, /** - * Retrieves logs from CloudWatch for the specified environment with optional filtering by time range, container, and pattern matching. Supports pagination via nextToken. + * Retrieves logs from CloudWatch for the specified environment with optional filtering by time range, container, and literal text. Newest-first by default; pass the nextToken from the previous response to fetch the next page. * @summary Get the logs for an environment * @param {string} organisation The organisation ID * @param {string} application The application ID @@ -32701,14 +33131,16 @@ export const EnvironmentsApiFactory = function (configuration?: Configuration, b * @param {string} [startTime] Start time for log retrieval (ISO 8601 format or Unix timestamp) * @param {string} [endTime] End time for log retrieval (ISO 8601 format or Unix timestamp) * @param {string} [containerName] Filter logs by specific container name - * @param {string} [filterPattern] CloudWatch Logs filter pattern for searching log content - * @param {number} [limit] Maximum number of log entries to return per page - * @param {string} [nextToken] Pagination token from previous response for retrieving next page of results + * @param {string} [filterPattern] Literal, case-sensitive text to match anywhere in the log message + * @param {number} [limit] Maximum number of log entries to return per page (default 50) + * @param {string} [nextToken] Opaque pagination token from the previous response. Pass back unchanged to fetch the next page. + * @param {GetEnvironmentLogsOrderEnum} [order] Sort order. desc returns newest first, asc returns oldest first. + * @param {boolean} [includeTotal] When true, the response pagination object includes the total log count for the time range. Adds 1-2 seconds of latency. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getEnvironmentLogs(organisation: string, application: string, environment: string, startTime?: string, endTime?: string, containerName?: string, filterPattern?: string, limit?: number, nextToken?: string, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.getEnvironmentLogs(organisation, application, environment, startTime, endTime, containerName, filterPattern, limit, nextToken, options).then((request) => request(axios, basePath)); + getEnvironmentLogs(organisation: string, application: string, environment: string, startTime?: string, endTime?: string, containerName?: string, filterPattern?: string, limit?: number, nextToken?: string, order?: GetEnvironmentLogsOrderEnum, includeTotal?: boolean, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getEnvironmentLogs(organisation, application, environment, startTime, endTime, containerName, filterPattern, limit, nextToken, order, includeTotal, options).then((request) => request(axios, basePath)); }, /** * Retrieves CloudWatch metrics for the specified environment with optional filtering by time range, container, and metric configuration. @@ -32844,7 +33276,7 @@ export class EnvironmentsApi extends BaseAPI { } /** - * Retrieves logs from CloudWatch for the specified environment with optional filtering by time range, container, and pattern matching. Supports pagination via nextToken. + * Retrieves logs from CloudWatch for the specified environment with optional filtering by time range, container, and literal text. Newest-first by default; pass the nextToken from the previous response to fetch the next page. * @summary Get the logs for an environment * @param {string} organisation The organisation ID * @param {string} application The application ID @@ -32852,15 +33284,17 @@ export class EnvironmentsApi extends BaseAPI { * @param {string} [startTime] Start time for log retrieval (ISO 8601 format or Unix timestamp) * @param {string} [endTime] End time for log retrieval (ISO 8601 format or Unix timestamp) * @param {string} [containerName] Filter logs by specific container name - * @param {string} [filterPattern] CloudWatch Logs filter pattern for searching log content - * @param {number} [limit] Maximum number of log entries to return per page - * @param {string} [nextToken] Pagination token from previous response for retrieving next page of results + * @param {string} [filterPattern] Literal, case-sensitive text to match anywhere in the log message + * @param {number} [limit] Maximum number of log entries to return per page (default 50) + * @param {string} [nextToken] Opaque pagination token from the previous response. Pass back unchanged to fetch the next page. + * @param {GetEnvironmentLogsOrderEnum} [order] Sort order. desc returns newest first, asc returns oldest first. + * @param {boolean} [includeTotal] When true, the response pagination object includes the total log count for the time range. Adds 1-2 seconds of latency. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof EnvironmentsApi */ - public getEnvironmentLogs(organisation: string, application: string, environment: string, startTime?: string, endTime?: string, containerName?: string, filterPattern?: string, limit?: number, nextToken?: string, options?: RawAxiosRequestConfig) { - return EnvironmentsApiFp(this.configuration).getEnvironmentLogs(organisation, application, environment, startTime, endTime, containerName, filterPattern, limit, nextToken, options).then((request) => request(this.axios, this.basePath)); + public getEnvironmentLogs(organisation: string, application: string, environment: string, startTime?: string, endTime?: string, containerName?: string, filterPattern?: string, limit?: number, nextToken?: string, order?: GetEnvironmentLogsOrderEnum, includeTotal?: boolean, options?: RawAxiosRequestConfig) { + return EnvironmentsApiFp(this.configuration).getEnvironmentLogs(organisation, application, environment, startTime, endTime, containerName, filterPattern, limit, nextToken, order, includeTotal, options).then((request) => request(this.axios, this.basePath)); } /** @@ -32957,6 +33391,14 @@ export class EnvironmentsApi extends BaseAPI { } } +/** + * @export + */ +export const GetEnvironmentLogsOrderEnum = { + Asc: 'asc', + Desc: 'desc' +} as const; +export type GetEnvironmentLogsOrderEnum = typeof GetEnvironmentLogsOrderEnum[keyof typeof GetEnvironmentLogsOrderEnum]; /** * @export */ @@ -33554,10 +33996,11 @@ export const KVApiAxiosParamCreator = function (configuration?: Configuration) { * @param {string} organization Organization identifier * @param {string} project Project identifier * @param {string} storeId + * @param {boolean} [force] Delete the store even if it still holds keys. Without it a non-empty store returns 409. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - kVDelete: async (organization: string, project: string, storeId: string, options: RawAxiosRequestConfig = {}): Promise => { + kVDelete: async (organization: string, project: string, storeId: string, force?: boolean, options: RawAxiosRequestConfig = {}): Promise => { // verify required parameter 'organization' is not null or undefined assertParamExists('kVDelete', 'organization', organization) // verify required parameter 'project' is not null or undefined @@ -33583,6 +34026,10 @@ export const KVApiAxiosParamCreator = function (configuration?: Configuration) { // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + if (force !== undefined) { + localVarQueryParameter['force'] = force; + } + setSearchParams(localVarUrlObj, localVarQueryParameter); @@ -33753,6 +34200,62 @@ export const KVApiAxiosParamCreator = function (configuration?: Configuration) { + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Deletes every item matching the filters. With no filters the whole store is cleared. A small purge finishes in the request and returns 200; a large one returns 202 with the counts so far and continues in the background. Idempotent. + * @summary Delete items in bulk by prefix and/or age + * @param {string} organization Organization identifier + * @param {string} project Project identifier + * @param {string} storeId + * @param {string} [prefix] Only delete keys that start with this string. + * @param {string} [olderThan] Only delete keys last updated before this instant. ISO 8601, or a duration with unit s, m, h or d. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + kVItemsPurge: async (organization: string, project: string, storeId: string, prefix?: string, olderThan?: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organization' is not null or undefined + assertParamExists('kVItemsPurge', 'organization', organization) + // verify required parameter 'project' is not null or undefined + assertParamExists('kVItemsPurge', 'project', project) + // verify required parameter 'storeId' is not null or undefined + assertParamExists('kVItemsPurge', 'storeId', storeId) + const localVarPath = `/api/v2/organizations/{organization}/projects/{project}/kv/{store_id}/items` + .replace(`{${"organization"}}`, encodeURIComponent(String(organization))) + .replace(`{${"project"}}`, encodeURIComponent(String(project))) + .replace(`{${"store_id"}}`, encodeURIComponent(String(storeId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + if (prefix !== undefined) { + localVarQueryParameter['prefix'] = prefix; + } + + if (olderThan !== undefined) { + localVarQueryParameter['older_than'] = olderThan; + } + + + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -34085,11 +34588,12 @@ export const KVApiFp = function(configuration?: Configuration) { * @param {string} organization Organization identifier * @param {string} project Project identifier * @param {string} storeId + * @param {boolean} [force] Delete the store even if it still holds keys. Without it a non-empty store returns 409. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async kVDelete(organization: string, project: string, storeId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.kVDelete(organization, project, storeId, options); + async kVDelete(organization: string, project: string, storeId: string, force?: boolean, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.kVDelete(organization, project, storeId, force, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; const localVarOperationServerBasePath = operationServerMap['KVApi.kVDelete']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); @@ -34145,6 +34649,23 @@ export const KVApiFp = function(configuration?: Configuration) { const localVarOperationServerBasePath = operationServerMap['KVApi.kVItemsList']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, + /** + * Deletes every item matching the filters. With no filters the whole store is cleared. A small purge finishes in the request and returns 200; a large one returns 202 with the counts so far and continues in the background. Idempotent. + * @summary Delete items in bulk by prefix and/or age + * @param {string} organization Organization identifier + * @param {string} project Project identifier + * @param {string} storeId + * @param {string} [prefix] Only delete keys that start with this string. + * @param {string} [olderThan] Only delete keys last updated before this instant. ISO 8601, or a duration with unit s, m, h or d. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async kVItemsPurge(organization: string, project: string, storeId: string, prefix?: string, olderThan?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.kVItemsPurge(organization, project, storeId, prefix, olderThan, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['KVApi.kVItemsPurge']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, /** * Retrieves an item from the KV store. **Security Note:** If the item was stored as a secret (secret=true), the value will be redacted and returned as \'[ENCRYPTED]\' for security. Secrets should be accessed directly via the Quant Cloud platform KVStore abstraction. * @summary Get an item from a kv store @@ -34266,11 +34787,12 @@ export const KVApiFactory = function (configuration?: Configuration, basePath?: * @param {string} organization Organization identifier * @param {string} project Project identifier * @param {string} storeId + * @param {boolean} [force] Delete the store even if it still holds keys. Without it a non-empty store returns 409. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - kVDelete(organization: string, project: string, storeId: string, options?: RawAxiosRequestConfig): AxiosPromise { - return localVarFp.kVDelete(organization, project, storeId, options).then((request) => request(axios, basePath)); + kVDelete(organization: string, project: string, storeId: string, force?: boolean, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.kVDelete(organization, project, storeId, force, options).then((request) => request(axios, basePath)); }, /** * @@ -34314,6 +34836,20 @@ export const KVApiFactory = function (configuration?: Configuration, basePath?: kVItemsList(organization: string, project: string, storeId: string, cursor?: string, limit?: number, search?: string, includeValues?: boolean, options?: RawAxiosRequestConfig): AxiosPromise { return localVarFp.kVItemsList(organization, project, storeId, cursor, limit, search, includeValues, options).then((request) => request(axios, basePath)); }, + /** + * Deletes every item matching the filters. With no filters the whole store is cleared. A small purge finishes in the request and returns 200; a large one returns 202 with the counts so far and continues in the background. Idempotent. + * @summary Delete items in bulk by prefix and/or age + * @param {string} organization Organization identifier + * @param {string} project Project identifier + * @param {string} storeId + * @param {string} [prefix] Only delete keys that start with this string. + * @param {string} [olderThan] Only delete keys last updated before this instant. ISO 8601, or a duration with unit s, m, h or d. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + kVItemsPurge(organization: string, project: string, storeId: string, prefix?: string, olderThan?: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.kVItemsPurge(organization, project, storeId, prefix, olderThan, options).then((request) => request(axios, basePath)); + }, /** * Retrieves an item from the KV store. **Security Note:** If the item was stored as a secret (secret=true), the value will be redacted and returned as \'[ENCRYPTED]\' for security. Secrets should be accessed directly via the Quant Cloud platform KVStore abstraction. * @summary Get an item from a kv store @@ -34419,12 +34955,13 @@ export class KVApi extends BaseAPI { * @param {string} organization Organization identifier * @param {string} project Project identifier * @param {string} storeId + * @param {boolean} [force] Delete the store even if it still holds keys. Without it a non-empty store returns 409. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof KVApi */ - public kVDelete(organization: string, project: string, storeId: string, options?: RawAxiosRequestConfig) { - return KVApiFp(this.configuration).kVDelete(organization, project, storeId, options).then((request) => request(this.axios, this.basePath)); + public kVDelete(organization: string, project: string, storeId: string, force?: boolean, options?: RawAxiosRequestConfig) { + return KVApiFp(this.configuration).kVDelete(organization, project, storeId, force, options).then((request) => request(this.axios, this.basePath)); } /** @@ -34475,6 +35012,22 @@ export class KVApi extends BaseAPI { return KVApiFp(this.configuration).kVItemsList(organization, project, storeId, cursor, limit, search, includeValues, options).then((request) => request(this.axios, this.basePath)); } + /** + * Deletes every item matching the filters. With no filters the whole store is cleared. A small purge finishes in the request and returns 200; a large one returns 202 with the counts so far and continues in the background. Idempotent. + * @summary Delete items in bulk by prefix and/or age + * @param {string} organization Organization identifier + * @param {string} project Project identifier + * @param {string} storeId + * @param {string} [prefix] Only delete keys that start with this string. + * @param {string} [olderThan] Only delete keys last updated before this instant. ISO 8601, or a duration with unit s, m, h or d. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof KVApi + */ + public kVItemsPurge(organization: string, project: string, storeId: string, prefix?: string, olderThan?: string, options?: RawAxiosRequestConfig) { + return KVApiFp(this.configuration).kVItemsPurge(organization, project, storeId, prefix, olderThan, options).then((request) => request(this.axios, this.basePath)); + } + /** * Retrieves an item from the KV store. **Security Note:** If the item was stored as a secret (secret=true), the value will be redacted and returned as \'[ENCRYPTED]\' for security. Secrets should be accessed directly via the Quant Cloud platform KVStore abstraction. * @summary Get an item from a kv store @@ -35077,6 +35630,78 @@ export class OrganizationsApi extends BaseAPI { */ export const ProjectsApiAxiosParamCreator = function (configuration?: Configuration) { return { + /** + * Retrieves CloudFront access log entries for an AWS-platform project. Results are always scoped to the project; the optional filter can only narrow them. Entries are returned oldest first; pass nextToken from the previous response to fetch the next page. Logs are retained for 30 days. + * @summary Get CDN access logs for a project + * @param {string} organization The organization machine name + * @param {string} project The project machine name + * @param {number} [limit] Maximum number of log entries to return per page (default 100) + * @param {string} [startTime] Start of the time range. ISO 8601 or Unix epoch milliseconds. + * @param {string} [endTime] End of the time range. ISO 8601 or Unix epoch milliseconds. + * @param {string} [filter] CloudWatch JSON filter expression AND-ed with the project constraint, e.g. $.status_code = 404. Outer braces are optional; nested braces are rejected. + * @param {string} [domain] Only return entries for this domain + * @param {string} [nextToken] Opaque pagination token from the previous response. Pass back unchanged to fetch the next page. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getProjectLogs: async (organization: string, project: string, limit?: number, startTime?: string, endTime?: string, filter?: string, domain?: string, nextToken?: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organization' is not null or undefined + assertParamExists('getProjectLogs', 'organization', organization) + // verify required parameter 'project' is not null or undefined + assertParamExists('getProjectLogs', 'project', project) + const localVarPath = `/api/v2/organizations/{organization}/projects/{project}/logs` + .replace(`{${"organization"}}`, encodeURIComponent(String(organization))) + .replace(`{${"project"}}`, encodeURIComponent(String(project))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + if (limit !== undefined) { + localVarQueryParameter['limit'] = limit; + } + + if (startTime !== undefined) { + localVarQueryParameter['startTime'] = startTime; + } + + if (endTime !== undefined) { + localVarQueryParameter['endTime'] = endTime; + } + + if (filter !== undefined) { + localVarQueryParameter['filter'] = filter; + } + + if (domain !== undefined) { + localVarQueryParameter['domain'] = domain; + } + + if (nextToken !== undefined) { + localVarQueryParameter['nextToken'] = nextToken; + } + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @summary Create a new project @@ -35308,6 +35933,26 @@ export const ProjectsApiAxiosParamCreator = function (configuration?: Configurat export const ProjectsApiFp = function(configuration?: Configuration) { const localVarAxiosParamCreator = ProjectsApiAxiosParamCreator(configuration) return { + /** + * Retrieves CloudFront access log entries for an AWS-platform project. Results are always scoped to the project; the optional filter can only narrow them. Entries are returned oldest first; pass nextToken from the previous response to fetch the next page. Logs are retained for 30 days. + * @summary Get CDN access logs for a project + * @param {string} organization The organization machine name + * @param {string} project The project machine name + * @param {number} [limit] Maximum number of log entries to return per page (default 100) + * @param {string} [startTime] Start of the time range. ISO 8601 or Unix epoch milliseconds. + * @param {string} [endTime] End of the time range. ISO 8601 or Unix epoch milliseconds. + * @param {string} [filter] CloudWatch JSON filter expression AND-ed with the project constraint, e.g. $.status_code = 404. Outer braces are optional; nested braces are rejected. + * @param {string} [domain] Only return entries for this domain + * @param {string} [nextToken] Opaque pagination token from the previous response. Pass back unchanged to fetch the next page. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getProjectLogs(organization: string, project: string, limit?: number, startTime?: string, endTime?: string, filter?: string, domain?: string, nextToken?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getProjectLogs(organization, project, limit, startTime, endTime, filter, domain, nextToken, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['ProjectsApi.getProjectLogs']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, /** * * @summary Create a new project @@ -35389,6 +36034,23 @@ export const ProjectsApiFp = function(configuration?: Configuration) { export const ProjectsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { const localVarFp = ProjectsApiFp(configuration) return { + /** + * Retrieves CloudFront access log entries for an AWS-platform project. Results are always scoped to the project; the optional filter can only narrow them. Entries are returned oldest first; pass nextToken from the previous response to fetch the next page. Logs are retained for 30 days. + * @summary Get CDN access logs for a project + * @param {string} organization The organization machine name + * @param {string} project The project machine name + * @param {number} [limit] Maximum number of log entries to return per page (default 100) + * @param {string} [startTime] Start of the time range. ISO 8601 or Unix epoch milliseconds. + * @param {string} [endTime] End of the time range. ISO 8601 or Unix epoch milliseconds. + * @param {string} [filter] CloudWatch JSON filter expression AND-ed with the project constraint, e.g. $.status_code = 404. Outer braces are optional; nested braces are rejected. + * @param {string} [domain] Only return entries for this domain + * @param {string} [nextToken] Opaque pagination token from the previous response. Pass back unchanged to fetch the next page. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getProjectLogs(organization: string, project: string, limit?: number, startTime?: string, endTime?: string, filter?: string, domain?: string, nextToken?: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getProjectLogs(organization, project, limit, startTime, endTime, filter, domain, nextToken, options).then((request) => request(axios, basePath)); + }, /** * * @summary Create a new project @@ -35455,6 +36117,25 @@ export const ProjectsApiFactory = function (configuration?: Configuration, baseP * @extends {BaseAPI} */ export class ProjectsApi extends BaseAPI { + /** + * Retrieves CloudFront access log entries for an AWS-platform project. Results are always scoped to the project; the optional filter can only narrow them. Entries are returned oldest first; pass nextToken from the previous response to fetch the next page. Logs are retained for 30 days. + * @summary Get CDN access logs for a project + * @param {string} organization The organization machine name + * @param {string} project The project machine name + * @param {number} [limit] Maximum number of log entries to return per page (default 100) + * @param {string} [startTime] Start of the time range. ISO 8601 or Unix epoch milliseconds. + * @param {string} [endTime] End of the time range. ISO 8601 or Unix epoch milliseconds. + * @param {string} [filter] CloudWatch JSON filter expression AND-ed with the project constraint, e.g. $.status_code = 404. Outer braces are optional; nested braces are rejected. + * @param {string} [domain] Only return entries for this domain + * @param {string} [nextToken] Opaque pagination token from the previous response. Pass back unchanged to fetch the next page. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ProjectsApi + */ + public getProjectLogs(organization: string, project: string, limit?: number, startTime?: string, endTime?: string, filter?: string, domain?: string, nextToken?: string, options?: RawAxiosRequestConfig) { + return ProjectsApiFp(this.configuration).getProjectLogs(organization, project, limit, startTime, endTime, filter, domain, nextToken, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @summary Create a new project @@ -35880,6 +36561,48 @@ export const ResourcesApiAxiosParamCreator = function (configuration?: Configura + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Cache resources only. Returns the cache-wide user (every key, every command, including FLUSHDB) with host and port. Environments attached to the cache use their own scoped users; this credential is for operators who genuinely need unrestricted access. Every read is audit-logged against the requesting user. + * @summary Get a cache\'s administrative credential + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getOrgResourceCredentials: async (organisation: string, resource: string, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('getOrgResourceCredentials', 'organisation', organisation) + // verify required parameter 'resource' is not null or undefined + assertParamExists('getOrgResourceCredentials', 'resource', resource) + const localVarPath = `/api/v3/organizations/{organisation}/resources/{resource}/credentials` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"resource"}}`, encodeURIComponent(String(resource))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -35922,6 +36645,54 @@ export const ResourcesApiAxiosParamCreator = function (configuration?: Configura let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Cache resources only. scope environment deletes that environment\'s keys, using the CACHE_PREFIX recorded on its attachment rather than anything in the request. scope all flushes every key for every attached environment and requires confirm=true. A large environment purge may return complete=false with a cursor to resume. + * @summary Purge keys from a cache + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {PurgeOrgResourceRequest} purgeOrgResourceRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + purgeOrgResource: async (organisation: string, resource: string, purgeOrgResourceRequest: PurgeOrgResourceRequest, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'organisation' is not null or undefined + assertParamExists('purgeOrgResource', 'organisation', organisation) + // verify required parameter 'resource' is not null or undefined + assertParamExists('purgeOrgResource', 'resource', resource) + // verify required parameter 'purgeOrgResourceRequest' is not null or undefined + assertParamExists('purgeOrgResource', 'purgeOrgResourceRequest', purgeOrgResourceRequest) + const localVarPath = `/api/v3/organizations/{organisation}/resources/{resource}/purge` + .replace(`{${"organisation"}}`, encodeURIComponent(String(organisation))) + .replace(`{${"resource"}}`, encodeURIComponent(String(resource))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerAuth required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(purgeOrgResourceRequest, localVarRequestOptions, configuration) + return { url: toPathString(localVarUrlObj), options: localVarRequestOptions, @@ -36011,6 +36782,20 @@ export const ResourcesApiFp = function(configuration?: Configuration) { const localVarOperationServerBasePath = operationServerMap['ResourcesApi.getOrgResource']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, + /** + * Cache resources only. Returns the cache-wide user (every key, every command, including FLUSHDB) with host and port. Environments attached to the cache use their own scoped users; this credential is for operators who genuinely need unrestricted access. Every read is audit-logged against the requesting user. + * @summary Get a cache\'s administrative credential + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getOrgResourceCredentials(organisation: string, resource: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getOrgResourceCredentials(organisation, resource, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['ResourcesApi.getOrgResourceCredentials']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, /** * * @summary List an organisation\'s shared resources @@ -36024,6 +36809,21 @@ export const ResourcesApiFp = function(configuration?: Configuration) { const localVarOperationServerBasePath = operationServerMap['ResourcesApi.listOrgResources']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, + /** + * Cache resources only. scope environment deletes that environment\'s keys, using the CACHE_PREFIX recorded on its attachment rather than anything in the request. scope all flushes every key for every attached environment and requires confirm=true. A large environment purge may return complete=false with a cursor to resume. + * @summary Purge keys from a cache + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {PurgeOrgResourceRequest} purgeOrgResourceRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async purgeOrgResource(organisation: string, resource: string, purgeOrgResourceRequest: PurgeOrgResourceRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.purgeOrgResource(organisation, resource, purgeOrgResourceRequest, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['ResourcesApi.purgeOrgResource']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, } }; @@ -36093,6 +36893,17 @@ export const ResourcesApiFactory = function (configuration?: Configuration, base getOrgResource(organisation: string, resource: string, options?: RawAxiosRequestConfig): AxiosPromise { return localVarFp.getOrgResource(organisation, resource, options).then((request) => request(axios, basePath)); }, + /** + * Cache resources only. Returns the cache-wide user (every key, every command, including FLUSHDB) with host and port. Environments attached to the cache use their own scoped users; this credential is for operators who genuinely need unrestricted access. Every read is audit-logged against the requesting user. + * @summary Get a cache\'s administrative credential + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getOrgResourceCredentials(organisation: string, resource: string, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.getOrgResourceCredentials(organisation, resource, options).then((request) => request(axios, basePath)); + }, /** * * @summary List an organisation\'s shared resources @@ -36103,6 +36914,18 @@ export const ResourcesApiFactory = function (configuration?: Configuration, base listOrgResources(organisation: string, options?: RawAxiosRequestConfig): AxiosPromise> { return localVarFp.listOrgResources(organisation, options).then((request) => request(axios, basePath)); }, + /** + * Cache resources only. scope environment deletes that environment\'s keys, using the CACHE_PREFIX recorded on its attachment rather than anything in the request. scope all flushes every key for every attached environment and requires confirm=true. A large environment purge may return complete=false with a cursor to resume. + * @summary Purge keys from a cache + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {PurgeOrgResourceRequest} purgeOrgResourceRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + purgeOrgResource(organisation: string, resource: string, purgeOrgResourceRequest: PurgeOrgResourceRequest, options?: RawAxiosRequestConfig): AxiosPromise { + return localVarFp.purgeOrgResource(organisation, resource, purgeOrgResourceRequest, options).then((request) => request(axios, basePath)); + }, }; }; @@ -36182,6 +37005,19 @@ export class ResourcesApi extends BaseAPI { return ResourcesApiFp(this.configuration).getOrgResource(organisation, resource, options).then((request) => request(this.axios, this.basePath)); } + /** + * Cache resources only. Returns the cache-wide user (every key, every command, including FLUSHDB) with host and port. Environments attached to the cache use their own scoped users; this credential is for operators who genuinely need unrestricted access. Every read is audit-logged against the requesting user. + * @summary Get a cache\'s administrative credential + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ResourcesApi + */ + public getOrgResourceCredentials(organisation: string, resource: string, options?: RawAxiosRequestConfig) { + return ResourcesApiFp(this.configuration).getOrgResourceCredentials(organisation, resource, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @summary List an organisation\'s shared resources @@ -36193,6 +37029,20 @@ export class ResourcesApi extends BaseAPI { public listOrgResources(organisation: string, options?: RawAxiosRequestConfig) { return ResourcesApiFp(this.configuration).listOrgResources(organisation, options).then((request) => request(this.axios, this.basePath)); } + + /** + * Cache resources only. scope environment deletes that environment\'s keys, using the CACHE_PREFIX recorded on its attachment rather than anything in the request. scope all flushes every key for every attached environment and requires confirm=true. A large environment purge may return complete=false with a cursor to resume. + * @summary Purge keys from a cache + * @param {string} organisation The organisation ID + * @param {string} resource The resource ID + * @param {PurgeOrgResourceRequest} purgeOrgResourceRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ResourcesApi + */ + public purgeOrgResource(organisation: string, resource: string, purgeOrgResourceRequest: PurgeOrgResourceRequest, options?: RawAxiosRequestConfig) { + return ResourcesApiFp(this.configuration).purgeOrgResource(organisation, resource, purgeOrgResourceRequest, options).then((request) => request(this.axios, this.basePath)); + } } diff --git a/docs/AttachOrgResourceRequest.md b/docs/AttachOrgResourceRequest.md index 7c5623a..091bf87 100644 --- a/docs/AttachOrgResourceRequest.md +++ b/docs/AttachOrgResourceRequest.md @@ -8,6 +8,7 @@ Name | Type | Description | Notes **application** | **string** | | [default to undefined] **environment** | **string** | | [default to undefined] **envVarPrefix** | **string** | Namespaces every injected variable, so MEDIA yields MEDIA_S3_BUCKET | [optional] [default to undefined] +**accessLevel** | **string** | Cache only. scoped injects an RBAC user limited to this environment\'s CACHE_PREFIX (plain and {hash-tag} forms) with FLUSHALL and FLUSHDB denied. admin injects the cache-wide credential for integrations that require FLUSHDB, such as Laravel Cache::flush() or the WordPress object cache without selective flush; it can read, write and flush every attached environment\'s keys. | [optional] [default to AccessLevelEnum_Scoped] ## Example @@ -18,6 +19,7 @@ const instance: AttachOrgResourceRequest = { application, environment, envVarPrefix, + accessLevel, }; ``` diff --git a/docs/EnvironmentsApi.md b/docs/EnvironmentsApi.md index fa3e409..f074cc6 100644 --- a/docs/EnvironmentsApi.md +++ b/docs/EnvironmentsApi.md @@ -191,7 +191,7 @@ const { status, data } = await apiInstance.getEnvironment( # **getEnvironmentLogs** > GetEnvironmentLogs200Response getEnvironmentLogs() -Retrieves logs from CloudWatch for the specified environment with optional filtering by time range, container, and pattern matching. Supports pagination via nextToken. +Retrieves logs from CloudWatch for the specified environment with optional filtering by time range, container, and literal text. Newest-first by default; pass the nextToken from the previous response to fetch the next page. ### Example @@ -210,9 +210,11 @@ let environment: string; //The environment ID (default to undefined) let startTime: string; //Start time for log retrieval (ISO 8601 format or Unix timestamp) (optional) (default to undefined) let endTime: string; //End time for log retrieval (ISO 8601 format or Unix timestamp) (optional) (default to undefined) let containerName: string; //Filter logs by specific container name (optional) (default to undefined) -let filterPattern: string; //CloudWatch Logs filter pattern for searching log content (optional) (default to undefined) -let limit: number; //Maximum number of log entries to return per page (optional) (default to undefined) -let nextToken: string; //Pagination token from previous response for retrieving next page of results (optional) (default to undefined) +let filterPattern: string; //Literal, case-sensitive text to match anywhere in the log message (optional) (default to undefined) +let limit: number; //Maximum number of log entries to return per page (default 50) (optional) (default to 50) +let nextToken: string; //Opaque pagination token from the previous response. Pass back unchanged to fetch the next page. (optional) (default to undefined) +let order: 'asc' | 'desc'; //Sort order. desc returns newest first, asc returns oldest first. (optional) (default to 'desc') +let includeTotal: boolean; //When true, the response pagination object includes the total log count for the time range. Adds 1-2 seconds of latency. (optional) (default to false) const { status, data } = await apiInstance.getEnvironmentLogs( organisation, @@ -223,7 +225,9 @@ const { status, data } = await apiInstance.getEnvironmentLogs( containerName, filterPattern, limit, - nextToken + nextToken, + order, + includeTotal ); ``` @@ -237,9 +241,11 @@ const { status, data } = await apiInstance.getEnvironmentLogs( | **startTime** | [**string**] | Start time for log retrieval (ISO 8601 format or Unix timestamp) | (optional) defaults to undefined| | **endTime** | [**string**] | End time for log retrieval (ISO 8601 format or Unix timestamp) | (optional) defaults to undefined| | **containerName** | [**string**] | Filter logs by specific container name | (optional) defaults to undefined| -| **filterPattern** | [**string**] | CloudWatch Logs filter pattern for searching log content | (optional) defaults to undefined| -| **limit** | [**number**] | Maximum number of log entries to return per page | (optional) defaults to undefined| -| **nextToken** | [**string**] | Pagination token from previous response for retrieving next page of results | (optional) defaults to undefined| +| **filterPattern** | [**string**] | Literal, case-sensitive text to match anywhere in the log message | (optional) defaults to undefined| +| **limit** | [**number**] | Maximum number of log entries to return per page (default 50) | (optional) defaults to 50| +| **nextToken** | [**string**] | Opaque pagination token from the previous response. Pass back unchanged to fetch the next page. | (optional) defaults to undefined| +| **order** | [**'asc' | 'desc'**]**Array<'asc' | 'desc'>** | Sort order. desc returns newest first, asc returns oldest first. | (optional) defaults to 'desc'| +| **includeTotal** | [**boolean**] | When true, the response pagination object includes the total log count for the time range. Adds 1-2 seconds of latency. | (optional) defaults to false| ### Return type @@ -260,6 +266,7 @@ const { status, data } = await apiInstance.getEnvironmentLogs( | Status code | Description | Response headers | |-------------|-------------|------------------| |**200** | The logs | - | +|**400** | Invalid startTime or endTime | - | |**404** | The environment not found | - | |**422** | Validation error | - | diff --git a/docs/GetEnvironmentLogs200Response.md b/docs/GetEnvironmentLogs200Response.md index 5e2f4e9..1980560 100644 --- a/docs/GetEnvironmentLogs200Response.md +++ b/docs/GetEnvironmentLogs200Response.md @@ -6,7 +6,9 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **logEvents** | [**Array<GetEnvironmentLogs200ResponseLogEventsInner>**](GetEnvironmentLogs200ResponseLogEventsInner.md) | Array of log events | [optional] [default to undefined] -**nextToken** | **string** | Token for fetching next page of results (null if no more pages) | [optional] [default to undefined] +**logGroupName** | **string** | CloudWatch log group the events were read from | [optional] [default to undefined] +**pagination** | [**GetEnvironmentLogs200ResponsePagination**](GetEnvironmentLogs200ResponsePagination.md) | | [optional] [default to undefined] +**nextToken** | **string** | Same as pagination.nextToken; kept for backward compatibility | [optional] [default to undefined] ## Example @@ -15,6 +17,8 @@ import { GetEnvironmentLogs200Response } from '@quantcdn/quant-client'; const instance: GetEnvironmentLogs200Response = { logEvents, + logGroupName, + pagination, nextToken, }; ``` diff --git a/docs/GetEnvironmentLogs200ResponseLogEventsInner.md b/docs/GetEnvironmentLogs200ResponseLogEventsInner.md index 20cb00b..bd8530c 100644 --- a/docs/GetEnvironmentLogs200ResponseLogEventsInner.md +++ b/docs/GetEnvironmentLogs200ResponseLogEventsInner.md @@ -7,6 +7,8 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **timestamp** | **number** | Unix timestamp in milliseconds | [optional] [default to undefined] **message** | **string** | Log message content | [optional] [default to undefined] +**ingestionTime** | **number** | Unix timestamp in milliseconds when CloudWatch ingested the event | [optional] [default to undefined] +**logStreamName** | **string** | CloudWatch log stream, named container/container/taskId | [optional] [default to undefined] ## Example @@ -16,6 +18,8 @@ import { GetEnvironmentLogs200ResponseLogEventsInner } from '@quantcdn/quant-cli const instance: GetEnvironmentLogs200ResponseLogEventsInner = { timestamp, message, + ingestionTime, + logStreamName, }; ``` diff --git a/docs/GetEnvironmentLogs200ResponsePagination.md b/docs/GetEnvironmentLogs200ResponsePagination.md new file mode 100644 index 0000000..1a38f55 --- /dev/null +++ b/docs/GetEnvironmentLogs200ResponsePagination.md @@ -0,0 +1,28 @@ +# GetEnvironmentLogs200ResponsePagination + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**limit** | **number** | Page size that was applied | [optional] [default to undefined] +**hasMore** | **boolean** | True when another page is available | [optional] [default to undefined] +**nextToken** | **string** | Token for the next page. Present only when hasMore is true. | [optional] [default to undefined] +**total** | **number** | Total events in the time range. Present only when includeTotal=true. | [optional] [default to undefined] +**totalPages** | **number** | ceil(total / limit). Present only when includeTotal=true. | [optional] [default to undefined] + +## Example + +```typescript +import { GetEnvironmentLogs200ResponsePagination } from '@quantcdn/quant-client'; + +const instance: GetEnvironmentLogs200ResponsePagination = { + limit, + hasMore, + nextToken, + total, + totalPages, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetOrgResourceCredentials200Response.md b/docs/GetOrgResourceCredentials200Response.md new file mode 100644 index 0000000..c8a8837 --- /dev/null +++ b/docs/GetOrgResourceCredentials200Response.md @@ -0,0 +1,30 @@ +# GetOrgResourceCredentials200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**host** | **string** | | [optional] [default to undefined] +**port** | **number** | | [optional] [default to undefined] +**tls** | **boolean** | | [optional] [default to undefined] +**username** | **string** | | [optional] [default to undefined] +**password** | **string** | | [optional] [default to undefined] +**note** | **string** | | [optional] [default to undefined] + +## Example + +```typescript +import { GetOrgResourceCredentials200Response } from '@quantcdn/quant-client'; + +const instance: GetOrgResourceCredentials200Response = { + host, + port, + tls, + username, + password, + note, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetProjectLogs200Response.md b/docs/GetProjectLogs200Response.md new file mode 100644 index 0000000..0487f2d --- /dev/null +++ b/docs/GetProjectLogs200Response.md @@ -0,0 +1,24 @@ +# GetProjectLogs200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**logs** | [**Array<GetProjectLogs200ResponseLogsInner>**](GetProjectLogs200ResponseLogsInner.md) | Structured CloudFront access log entries. Each entry carries request, response, timing and cache fields as emitted by the edge. | [optional] [default to undefined] +**count** | **number** | Number of entries in this response | [optional] [default to undefined] +**nextToken** | **string** | Token for the next page, or null when there are no more entries | [optional] [default to undefined] + +## Example + +```typescript +import { GetProjectLogs200Response } from '@quantcdn/quant-client'; + +const instance: GetProjectLogs200Response = { + logs, + count, + nextToken, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetProjectLogs200ResponseLogsInner.md b/docs/GetProjectLogs200ResponseLogsInner.md new file mode 100644 index 0000000..8424ab3 --- /dev/null +++ b/docs/GetProjectLogs200ResponseLogsInner.md @@ -0,0 +1,40 @@ +# GetProjectLogs200ResponseLogsInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**timestamp** | **string** | | [optional] [default to undefined] +**project** | **string** | | [optional] [default to undefined] +**domain** | **string** | | [optional] [default to undefined] +**method** | **string** | | [optional] [default to undefined] +**uri** | **string** | | [optional] [default to undefined] +**status_code** | **number** | | [optional] [default to undefined] +**cache_status** | **string** | | [optional] [default to undefined] +**client_ip** | **string** | | [optional] [default to undefined] +**user_agent** | **string** | | [optional] [default to undefined] +**bytes** | **number** | | [optional] [default to undefined] +**time_taken** | **number** | | [optional] [default to undefined] + +## Example + +```typescript +import { GetProjectLogs200ResponseLogsInner } from '@quantcdn/quant-client'; + +const instance: GetProjectLogs200ResponseLogsInner = { + timestamp, + project, + domain, + method, + uri, + status_code, + cache_status, + client_ip, + user_agent, + bytes, + time_taken, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetProjectLogs400Response.md b/docs/GetProjectLogs400Response.md new file mode 100644 index 0000000..49384aa --- /dev/null +++ b/docs/GetProjectLogs400Response.md @@ -0,0 +1,22 @@ +# GetProjectLogs400Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | **boolean** | | [optional] [default to undefined] +**message** | **string** | | [optional] [default to undefined] + +## Example + +```typescript +import { GetProjectLogs400Response } from '@quantcdn/quant-client'; + +const instance: GetProjectLogs400Response = { + error, + message, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/KVApi.md b/docs/KVApi.md index 0e092f9..0cf4386 100644 --- a/docs/KVApi.md +++ b/docs/KVApi.md @@ -9,6 +9,7 @@ All URIs are relative to *https://dashboard.quantcdn.io* |[**kVItemsCreate**](#kvitemscreate) | **POST** /api/v2/organizations/{organization}/projects/{project}/kv/{store_id}/items | Add an item to a kv store| |[**kVItemsDelete**](#kvitemsdelete) | **DELETE** /api/v2/organizations/{organization}/projects/{project}/kv/{store_id}/items/{key} | Delete an item from a kv store| |[**kVItemsList**](#kvitemslist) | **GET** /api/v2/organizations/{organization}/projects/{project}/kv/{store_id}/items | List items in a kv store| +|[**kVItemsPurge**](#kvitemspurge) | **DELETE** /api/v2/organizations/{organization}/projects/{project}/kv/{store_id}/items | Delete items in bulk by prefix and/or age| |[**kVItemsShow**](#kvitemsshow) | **GET** /api/v2/organizations/{organization}/projects/{project}/kv/{store_id}/items/{key} | Get an item from a kv store| |[**kVItemsUpdate**](#kvitemsupdate) | **PUT** /api/v2/organizations/{organization}/projects/{project}/kv/{store_id}/items/{key} | Update an item in a kv store| |[**kVLinkToProject**](#kvlinktoproject) | **POST** /api/v2/organizations/{organization}/projects/{project}/kv/{store_id}/link | Link a KV store to another project| @@ -93,11 +94,13 @@ const apiInstance = new KVApi(configuration); let organization: string; //Organization identifier (default to undefined) let project: string; //Project identifier (default to undefined) let storeId: string; // (default to undefined) +let force: boolean; //Delete the store even if it still holds keys. Without it a non-empty store returns 409. (optional) (default to false) const { status, data } = await apiInstance.kVDelete( organization, project, - storeId + storeId, + force ); ``` @@ -108,6 +111,7 @@ const { status, data } = await apiInstance.kVDelete( | **organization** | [**string**] | Organization identifier | defaults to undefined| | **project** | [**string**] | Project identifier | defaults to undefined| | **storeId** | [**string**] | | defaults to undefined| +| **force** | [**boolean**] | Delete the store even if it still holds keys. Without it a non-empty store returns 409. | (optional) defaults to false| ### Return type @@ -129,6 +133,7 @@ void (empty response body) |-------------|-------------|------------------| |**204** | The request has succeeded. | - | |**400** | The server could not understand the request due to invalid syntax. | - | +|**409** | The store is not empty. Clear its keys in the dashboard or pass force=true. | - | |**403** | Access is forbidden. | - | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -327,6 +332,72 @@ const { status, data } = await apiInstance.kVItemsList( [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **kVItemsPurge** +> KVItemsPurge200Response kVItemsPurge() + +Deletes every item matching the filters. With no filters the whole store is cleared. A small purge finishes in the request and returns 200; a large one returns 202 with the counts so far and continues in the background. Idempotent. + +### Example + +```typescript +import { + KVApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new KVApi(configuration); + +let organization: string; //Organization identifier (default to undefined) +let project: string; //Project identifier (default to undefined) +let storeId: string; // (default to undefined) +let prefix: string; //Only delete keys that start with this string. (optional) (default to undefined) +let olderThan: string; //Only delete keys last updated before this instant. ISO 8601, or a duration with unit s, m, h or d. (optional) (default to undefined) + +const { status, data } = await apiInstance.kVItemsPurge( + organization, + project, + storeId, + prefix, + olderThan +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organization** | [**string**] | Organization identifier | defaults to undefined| +| **project** | [**string**] | Project identifier | defaults to undefined| +| **storeId** | [**string**] | | defaults to undefined| +| **prefix** | [**string**] | Only delete keys that start with this string. | (optional) defaults to undefined| +| **olderThan** | [**string**] | Only delete keys last updated before this instant. ISO 8601, or a duration with unit s, m, h or d. | (optional) defaults to undefined| + + +### Return type + +**KVItemsPurge200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | The purge finished. | - | +|**202** | The purge continues in the background. | - | +|**400** | The server could not understand the request due to invalid syntax. | - | +|**403** | Insufficient permissions. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **kVItemsShow** > KVItemsShow200Response kVItemsShow() diff --git a/docs/KVDelete409Response.md b/docs/KVDelete409Response.md new file mode 100644 index 0000000..798f317 --- /dev/null +++ b/docs/KVDelete409Response.md @@ -0,0 +1,24 @@ +# KVDelete409Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**error** | **boolean** | | [optional] [default to undefined] +**message** | **string** | | [optional] [default to undefined] +**hint** | **string** | | [optional] [default to undefined] + +## Example + +```typescript +import { KVDelete409Response } from '@quantcdn/quant-client'; + +const instance: KVDelete409Response = { + error, + message, + hint, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/KVItemsPurge200Response.md b/docs/KVItemsPurge200Response.md new file mode 100644 index 0000000..4d0b7e9 --- /dev/null +++ b/docs/KVItemsPurge200Response.md @@ -0,0 +1,24 @@ +# KVItemsPurge200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **string** | | [optional] [default to undefined] +**deleted** | **number** | | [optional] [default to undefined] +**scanned** | **number** | | [optional] [default to undefined] + +## Example + +```typescript +import { KVItemsPurge200Response } from '@quantcdn/quant-client'; + +const instance: KVItemsPurge200Response = { + status, + deleted, + scanned, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/KVItemsPurge202Response.md b/docs/KVItemsPurge202Response.md new file mode 100644 index 0000000..c49c4bb --- /dev/null +++ b/docs/KVItemsPurge202Response.md @@ -0,0 +1,24 @@ +# KVItemsPurge202Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **string** | | [optional] [default to undefined] +**deleted** | **number** | | [optional] [default to undefined] +**scanned** | **number** | | [optional] [default to undefined] + +## Example + +```typescript +import { KVItemsPurge202Response } from '@quantcdn/quant-client'; + +const instance: KVItemsPurge202Response = { + status, + deleted, + scanned, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ProjectsApi.md b/docs/ProjectsApi.md index 9f73997..8951e7f 100644 --- a/docs/ProjectsApi.md +++ b/docs/ProjectsApi.md @@ -4,12 +4,90 @@ All URIs are relative to *https://dashboard.quantcdn.io* |Method | HTTP request | Description| |------------- | ------------- | -------------| +|[**getProjectLogs**](#getprojectlogs) | **GET** /api/v2/organizations/{organization}/projects/{project}/logs | Get CDN access logs for a project| |[**projectsCreate**](#projectscreate) | **POST** /api/v2/organizations/{organization}/projects | Create a new project| |[**projectsDelete**](#projectsdelete) | **DELETE** /api/v2/organizations/{organization}/projects/{project} | Delete a project| |[**projectsList**](#projectslist) | **GET** /api/v2/organizations/{organization}/projects | Retrieve all projects for an organization| |[**projectsRead**](#projectsread) | **GET** /api/v2/organizations/{organization}/projects/{project} | Get details of a single project| |[**projectsUpdate**](#projectsupdate) | **PATCH** /api/v2/organizations/{organization}/projects/{project} | Update a project| +# **getProjectLogs** +> GetProjectLogs200Response getProjectLogs() + +Retrieves CloudFront access log entries for an AWS-platform project. Results are always scoped to the project; the optional filter can only narrow them. Entries are returned oldest first; pass nextToken from the previous response to fetch the next page. Logs are retained for 30 days. + +### Example + +```typescript +import { + ProjectsApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new ProjectsApi(configuration); + +let organization: string; //The organization machine name (default to undefined) +let project: string; //The project machine name (default to undefined) +let limit: number; //Maximum number of log entries to return per page (default 100) (optional) (default to 100) +let startTime: string; //Start of the time range. ISO 8601 or Unix epoch milliseconds. (optional) (default to undefined) +let endTime: string; //End of the time range. ISO 8601 or Unix epoch milliseconds. (optional) (default to undefined) +let filter: string; //CloudWatch JSON filter expression AND-ed with the project constraint, e.g. $.status_code = 404. Outer braces are optional; nested braces are rejected. (optional) (default to undefined) +let domain: string; //Only return entries for this domain (optional) (default to undefined) +let nextToken: string; //Opaque pagination token from the previous response. Pass back unchanged to fetch the next page. (optional) (default to undefined) + +const { status, data } = await apiInstance.getProjectLogs( + organization, + project, + limit, + startTime, + endTime, + filter, + domain, + nextToken +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organization** | [**string**] | The organization machine name | defaults to undefined| +| **project** | [**string**] | The project machine name | defaults to undefined| +| **limit** | [**number**] | Maximum number of log entries to return per page (default 100) | (optional) defaults to 100| +| **startTime** | [**string**] | Start of the time range. ISO 8601 or Unix epoch milliseconds. | (optional) defaults to undefined| +| **endTime** | [**string**] | End of the time range. ISO 8601 or Unix epoch milliseconds. | (optional) defaults to undefined| +| **filter** | [**string**] | CloudWatch JSON filter expression AND-ed with the project constraint, e.g. $.status_code = 404. Outer braces are optional; nested braces are rejected. | (optional) defaults to undefined| +| **domain** | [**string**] | Only return entries for this domain | (optional) defaults to undefined| +| **nextToken** | [**string**] | Opaque pagination token from the previous response. Pass back unchanged to fetch the next page. | (optional) defaults to undefined| + + +### Return type + +**GetProjectLogs200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Access log entries | - | +|**400** | Invalid filter or time range | - | +|**401** | Unauthenticated | - | +|**403** | Token lacks the projects:read scope or the user lacks browse_projects | - | +|**404** | The project is not on the AWS platform, or its access logs are not enabled yet | - | +|**422** | Validation error | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **projectsCreate** > V2Project projectsCreate(v2ProjectRequest) diff --git a/docs/PurgeOrgResource200Response.md b/docs/PurgeOrgResource200Response.md new file mode 100644 index 0000000..ea196bc --- /dev/null +++ b/docs/PurgeOrgResource200Response.md @@ -0,0 +1,30 @@ +# PurgeOrgResource200Response + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**scope** | **string** | | [optional] [default to undefined] +**prefix** | **string** | | [optional] [default to undefined] +**deletedKeys** | **number** | | [optional] [default to undefined] +**complete** | **boolean** | | [optional] [default to undefined] +**cursor** | **string** | | [optional] [default to undefined] +**flushed** | **boolean** | | [optional] [default to undefined] + +## Example + +```typescript +import { PurgeOrgResource200Response } from '@quantcdn/quant-client'; + +const instance: PurgeOrgResource200Response = { + scope, + prefix, + deletedKeys, + complete, + cursor, + flushed, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/PurgeOrgResourceRequest.md b/docs/PurgeOrgResourceRequest.md new file mode 100644 index 0000000..d83d6fb --- /dev/null +++ b/docs/PurgeOrgResourceRequest.md @@ -0,0 +1,28 @@ +# PurgeOrgResourceRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**scope** | **string** | | [default to undefined] +**application** | **string** | scope environment only | [optional] [default to undefined] +**environment** | **string** | scope environment only | [optional] [default to undefined] +**confirm** | **boolean** | scope all only; must be true | [optional] [default to undefined] +**cursor** | **string** | scope environment only; resume a partial purge | [optional] [default to undefined] + +## Example + +```typescript +import { PurgeOrgResourceRequest } from '@quantcdn/quant-client'; + +const instance: PurgeOrgResourceRequest = { + scope, + application, + environment, + confirm, + cursor, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ResourceAttachment.md b/docs/ResourceAttachment.md index 09ffca4..f5aff9a 100644 --- a/docs/ResourceAttachment.md +++ b/docs/ResourceAttachment.md @@ -9,6 +9,8 @@ Name | Type | Description | Notes **envName** | **string** | | [optional] [default to undefined] **envVarPrefix** | **string** | Namespaces every injected variable, so MEDIA yields MEDIA_S3_BUCKET | [optional] [default to undefined] **accessKeyId** | **string** | Object storage only. The secret half is written to the environment\'s secrets and never returned. | [optional] [default to undefined] +**cacheUserId** | **string** | Cache only. This environment\'s own RBAC user, limited to its CACHE_PREFIX with FLUSHALL and FLUSHDB denied, so it cannot touch another environment\'s keys. | [optional] [default to undefined] +**accessLevel** | **string** | Cache only. scoped: the environment holds its own RBAC user. admin: it holds the cache-wide credential and can read, write and flush every attached environment\'s keys. Absent on attachments made before access levels existed (treated as scoped). | [optional] [default to undefined] **injectedKeys** | **Array<string>** | The exact variable names this attachment wrote, removed precisely on detach | [optional] [default to undefined] **createdAt** | **string** | | [optional] [default to undefined] **note** | **string** | When the credentials take effect | [optional] [default to undefined] @@ -23,6 +25,8 @@ const instance: ResourceAttachment = { envName, envVarPrefix, accessKeyId, + cacheUserId, + accessLevel, injectedKeys, createdAt, note, diff --git a/docs/ResourcesApi.md b/docs/ResourcesApi.md index 043eae3..4a37199 100644 --- a/docs/ResourcesApi.md +++ b/docs/ResourcesApi.md @@ -9,7 +9,9 @@ All URIs are relative to *https://dashboard.quantcdn.io* |[**deleteOrgResource**](#deleteorgresource) | **DELETE** /api/v3/organizations/{organisation}/resources/{resource} | Delete a shared resource| |[**detachOrgResource**](#detachorgresource) | **DELETE** /api/v3/organizations/{organisation}/resources/{resource}/attachments/{application}/{environment} | Detach a resource from an application environment| |[**getOrgResource**](#getorgresource) | **GET** /api/v3/organizations/{organisation}/resources/{resource} | Get a shared resource and its attachments| +|[**getOrgResourceCredentials**](#getorgresourcecredentials) | **GET** /api/v3/organizations/{organisation}/resources/{resource}/credentials | Get a cache\'s administrative credential| |[**listOrgResources**](#listorgresources) | **GET** /api/v3/organizations/{organisation}/resources | List an organisation\'s shared resources| +|[**purgeOrgResource**](#purgeorgresource) | **POST** /api/v3/organizations/{organisation}/resources/{resource}/purge | Purge keys from a cache| # **attachOrgResource** > ResourceAttachment attachOrgResource(attachOrgResourceRequest) @@ -300,6 +302,61 @@ const { status, data } = await apiInstance.getOrgResource( [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **getOrgResourceCredentials** +> GetOrgResourceCredentials200Response getOrgResourceCredentials() + +Cache resources only. Returns the cache-wide user (every key, every command, including FLUSHDB) with host and port. Environments attached to the cache use their own scoped users; this credential is for operators who genuinely need unrestricted access. Every read is audit-logged against the requesting user. + +### Example + +```typescript +import { + ResourcesApi, + Configuration +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new ResourcesApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let resource: string; //The resource ID (default to undefined) + +const { status, data } = await apiInstance.getOrgResourceCredentials( + organisation, + resource +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **resource** | [**string**] | The resource ID | defaults to undefined| + + +### Return type + +**GetOrgResourceCredentials200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | The admin credential | - | +|**409** | Not a cache resource, or not yet available | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **listOrgResources** > Array listOrgResources() @@ -351,3 +408,63 @@ const { status, data } = await apiInstance.listOrgResources( [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **purgeOrgResource** +> PurgeOrgResource200Response purgeOrgResource(purgeOrgResourceRequest) + +Cache resources only. scope environment deletes that environment\'s keys, using the CACHE_PREFIX recorded on its attachment rather than anything in the request. scope all flushes every key for every attached environment and requires confirm=true. A large environment purge may return complete=false with a cursor to resume. + +### Example + +```typescript +import { + ResourcesApi, + Configuration, + PurgeOrgResourceRequest +} from '@quantcdn/quant-client'; + +const configuration = new Configuration(); +const apiInstance = new ResourcesApi(configuration); + +let organisation: string; //The organisation ID (default to undefined) +let resource: string; //The resource ID (default to undefined) +let purgeOrgResourceRequest: PurgeOrgResourceRequest; // + +const { status, data } = await apiInstance.purgeOrgResource( + organisation, + resource, + purgeOrgResourceRequest +); +``` + +### Parameters + +|Name | Type | Description | Notes| +|------------- | ------------- | ------------- | -------------| +| **purgeOrgResourceRequest** | **PurgeOrgResourceRequest**| | | +| **organisation** | [**string**] | The organisation ID | defaults to undefined| +| **resource** | [**string**] | The resource ID | defaults to undefined| + + +### Return type + +**PurgeOrgResource200Response** + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +|**200** | Purge result | - | +|**422** | Invalid scope, missing application/environment, or scope all without confirm | - | +|**404** | No such attachment | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + From d5944664343aad2347ad7b168cd23b314436b24e Mon Sep 17 00:00:00 2001 From: "quantcloud[bot]" Date: Thu, 10 Sep 2026 20:28:16 +0000 Subject: [PATCH 3/4] feat(sdk): v4.22.0 - Auto-generated from unified API spec Generated from unified API spec v4.22.0 Changes: - Auto-generated SDK updates This PR was automatically created by the API generation pipeline. --- api.ts | 2 +- docs/V2CrawlerRequest.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api.ts b/api.ts index 025da4d..de89811 100644 --- a/api.ts +++ b/api.ts @@ -13601,7 +13601,7 @@ export interface V2CrawlerRequest { */ 'allowed_domains'?: Array; /** - * Custom user agent, only when browser_mode is false + * Custom user agent. Valid with or without browser_mode. * @type {string} * @memberof V2CrawlerRequest */ diff --git a/docs/V2CrawlerRequest.md b/docs/V2CrawlerRequest.md index 64a8421..5abe7c4 100644 --- a/docs/V2CrawlerRequest.md +++ b/docs/V2CrawlerRequest.md @@ -24,7 +24,7 @@ Name | Type | Description | Notes **status_ok** | **Array<number>** | HTTP status codes that will result in content being captured and pushed to Quant | [optional] [default to undefined] **sitemap** | [**Array<V2CrawlerSitemapInner>**](V2CrawlerSitemapInner.md) | Sitemap configuration | [optional] [default to undefined] **allowed_domains** | **Array<string>** | Allowed domains for multi-domain crawling, automatically enables merge_domains | [optional] [default to undefined] -**user_agent** | **string** | Custom user agent, only when browser_mode is false | [optional] [default to undefined] +**user_agent** | **string** | Custom user agent. Valid with or without browser_mode. | [optional] [default to undefined] **assets** | [**V2CrawlerAssets**](V2CrawlerAssets.md) | | [optional] [default to undefined] **max_errors** | **number** | Maximum errors before stopping crawl | [optional] [default to undefined] From 7fd283541da6a4d994047aa35dea6f98fb7f70d3 Mon Sep 17 00:00:00 2001 From: "quantcloud[bot]" Date: Wed, 23 Sep 2026 05:26:58 +0000 Subject: [PATCH 4/4] feat(sdk): v4.22.0 - Auto-generated from unified API spec Generated from unified API spec v4.22.0 Changes: - Auto-generated SDK updates This PR was automatically created by the API generation pipeline. --- api.ts | 26 ++++++++++++++++++++++++-- docs/EnvironmentResponse.md | 2 +- docs/V2Crawler.md | 2 ++ docs/V2CrawlerRequest.md | 2 ++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/api.ts b/api.ts index de89811..bdf903e 100644 --- a/api.ts +++ b/api.ts @@ -4213,11 +4213,11 @@ export interface EnvironmentResponse { */ 'deploymentStatus'?: EnvironmentResponseDeploymentStatusEnum; /** - * Type of deployment failure + * Why the most recent task stopped. SPOT_INTERRUPTION is informational: AWS reclaimed the task and ECS replaces it. * @type {string} * @memberof EnvironmentResponse */ - 'deploymentFailureType'?: string | null; + 'deploymentFailureType'?: EnvironmentResponseDeploymentFailureTypeEnum | null; /** * Reason for deployment failure * @type {string} @@ -4305,6 +4305,16 @@ export const EnvironmentResponseDeploymentStatusEnum = { } as const; export type EnvironmentResponseDeploymentStatusEnum = typeof EnvironmentResponseDeploymentStatusEnum[keyof typeof EnvironmentResponseDeploymentStatusEnum]; +export const EnvironmentResponseDeploymentFailureTypeEnum = { + ImageNotFound: 'IMAGE_NOT_FOUND', + AccessDenied: 'ACCESS_DENIED', + ArchitectureMismatch: 'ARCHITECTURE_MISMATCH', + ResourceLimit: 'RESOURCE_LIMIT', + SpotInterruption: 'SPOT_INTERRUPTION', + Other: 'OTHER' +} as const; + +export type EnvironmentResponseDeploymentFailureTypeEnum = typeof EnvironmentResponseDeploymentFailureTypeEnum[keyof typeof EnvironmentResponseDeploymentFailureTypeEnum]; /** * Environment summary returned in list responses @@ -13308,6 +13318,12 @@ export interface V2Crawler { * @memberof V2Crawler */ 'browser_mode'?: boolean; + /** + * Content tracking enabled: the crawl reports progress and page status to the project tracking site + * @type {boolean} + * @memberof V2Crawler + */ + 'tracking'?: boolean; /** * Number of concurrent workers * @type {number} @@ -13504,6 +13520,12 @@ export interface V2CrawlerRequest { * @memberof V2CrawlerRequest */ 'browser_mode'?: boolean; + /** + * Enable content tracking. Records crawl progress and per-page status against the project tracking site. Needs no domain verification. + * @type {boolean} + * @memberof V2CrawlerRequest + */ + 'tracking'?: boolean; /** * URLs to crawl * @type {Array} diff --git a/docs/EnvironmentResponse.md b/docs/EnvironmentResponse.md index 645a022..d617b46 100644 --- a/docs/EnvironmentResponse.md +++ b/docs/EnvironmentResponse.md @@ -14,7 +14,7 @@ Name | Type | Description | Notes **maxCapacity** | **number** | Maximum capacity for autoscaling | [optional] [default to undefined] **publicIpAddress** | **string** | Public IP address for SSH access | [optional] [readonly] [default to undefined] **deploymentStatus** | **string** | Current deployment status | [optional] [readonly] [default to undefined] -**deploymentFailureType** | **string** | Type of deployment failure | [optional] [readonly] [default to undefined] +**deploymentFailureType** | **string** | Why the most recent task stopped. SPOT_INTERRUPTION is informational: AWS reclaimed the task and ECS replaces it. | [optional] [readonly] [default to undefined] **deploymentFailureReason** | **string** | Reason for deployment failure | [optional] [readonly] [default to undefined] **taskDefinition** | **object** | ECS task definition details | [optional] [readonly] [default to undefined] **service** | **object** | ECS service details | [optional] [readonly] [default to undefined] diff --git a/docs/V2Crawler.md b/docs/V2Crawler.md index 46451d3..5a1b2da 100644 --- a/docs/V2Crawler.md +++ b/docs/V2Crawler.md @@ -17,6 +17,7 @@ Name | Type | Description | Notes **webhook_auth_header** | **string** | Authorization header for webhook | [optional] [default to undefined] **webhook_extra_vars** | **string** | Extra variables for webhook | [optional] [default to undefined] **browser_mode** | **boolean** | Browser mode enabled | [optional] [default to undefined] +**tracking** | **boolean** | Content tracking enabled: the crawl reports progress and page status to the project tracking site | [optional] [default to undefined] **workers** | **number** | Number of concurrent workers | [optional] [default to undefined] **delay** | **number** | Delay between requests in seconds | [optional] [default to undefined] **depth** | **number** | Maximum crawl depth | [optional] [default to undefined] @@ -55,6 +56,7 @@ const instance: V2Crawler = { webhook_auth_header, webhook_extra_vars, browser_mode, + tracking, workers, delay, depth, diff --git a/docs/V2CrawlerRequest.md b/docs/V2CrawlerRequest.md index 5abe7c4..f47fecb 100644 --- a/docs/V2CrawlerRequest.md +++ b/docs/V2CrawlerRequest.md @@ -8,6 +8,7 @@ Name | Type | Description | Notes **name** | **string** | Crawler name | [optional] [default to undefined] **domain** | **string** | Domain to crawl | [default to undefined] **browser_mode** | **boolean** | Enable browser mode | [optional] [default to false] +**tracking** | **boolean** | Enable content tracking. Records crawl progress and per-page status against the project tracking site. Needs no domain verification. | [optional] [default to false] **urls** | **Array<string>** | URLs to crawl | [optional] [default to undefined] **start_urls** | **Array<string>** | Starting URLs for crawl | [optional] [default to undefined] **headers** | **{ [key: string]: string; }** | Custom headers | [optional] [default to undefined] @@ -37,6 +38,7 @@ const instance: V2CrawlerRequest = { name, domain, browser_mode, + tracking, urls, start_urls, headers,