import {z} from 'zod' export type GetApiSpacesSpaceIdentifierCertificatesIdUsagesArgs = {spaceIdentifier: string, id: string}; export type GetApiSpacesSpaceIdentifierCertificatesIdUsagesOptions = {baseUrl?: string | undefined, APIKeyHeader?: string | undefined, fetch?: typeof fetch | undefined}; export const endpointResource = z.object({CommunicationStyle: z.enum(["None", "TentaclePassive", "TentacleActive", "Ssh", "OfflineDrop", "AzureWebApp", "Ftp", "AzureCloudService", "AzureServiceFabricCluster", "Kubernetes", "StepPackage", "KubernetesTentacle", "AwsEcsCluster"]).optional(), Id: z.string().optional(), LastModifiedBy: z.string().optional(), LastModifiedOn: z.string().optional(), Links: z.record(z.string(), z.string()).optional()}); export const machineResource = z.object({Architecture: z.string().optional(), Endpoint: endpointResource.optional(), EnvironmentIds: z.array(z.string()).optional(), HasLatestCalamari: z.boolean().optional(), HealthStatus: z.enum(["Healthy", "Unavailable", "Unknown", "HasWarnings", "Unhealthy"]).optional(), Id: z.string().optional(), IsDisabled: z.boolean().optional(), IsInProcess: z.boolean().optional(), LastModifiedBy: z.string().optional(), LastModifiedOn: z.string().optional(), Links: z.record(z.string(), z.string()).optional(), MachinePolicyId: z.string().optional(), Name: z.string().optional(), OperatingSystem: z.string().optional(), OperatingSystemVersion: z.string().optional(), Roles: z.array(z.string()).optional(), ShellName: z.string().optional(), ShellVersion: z.string().optional(), SkipInitialHealthCheck: z.boolean().optional(), Slug: z.string().optional(), SpaceId: z.string().optional(), StatusSummary: z.string().optional(), TenantedDeploymentParticipation: z.enum(["Untenanted", "TenantedOrUntenanted", "Tenanted"]).optional(), TenantIds: z.array(z.string()).optional(), TenantTags: z.array(z.string()).optional(), Thumbprint: z.string().optional(), Uri: z.string().optional()}); export const sensitiveValue = z.object({HasValue: z.boolean().optional(), Hint: z.string().optional(), NewValue: z.string().optional()}); export const propertyValueResource = z.object({IsSensitive: z.boolean().optional(), SensitiveValue: sensitiveValue.optional(), Value: z.string().optional()}); export const actionTemplateParameterResource = z.object({DefaultValue: propertyValueResource.optional(), DisplaySettings: z.record(z.string(), z.string()).optional(), HelpText: z.string().optional(), Id: z.string().optional(), Label: z.string().optional(), Name: z.string().optional()}); export const libraryVariableSetResource = z.object({ContentType: z.enum(["Variables", "ScriptModule"]).optional(), Description: z.string().optional(), Id: z.string().optional(), LastModifiedBy: z.string().optional(), LastModifiedOn: z.string().optional(), Links: z.record(z.string(), z.string()).optional(), Name: z.string().optional(), SpaceId: z.string().optional(), Templates: z.array(actionTemplateParameterResource).optional(), VariableSetId: z.string().optional(), Version: z.number().int().optional()}); export const autoDeployReleaseOverrideResource = z.object({EnvironmentId: z.string().optional(), ReleaseId: z.string().optional(), TenantId: z.string().optional()}); export const extensionSettingsValues = z.object({ExtensionId: z.string().optional(), Values: z.unknown()}); export const iconResource = z.object({Color: z.string().optional(), Id: z.string().optional()}); export const persistenceSettingsResource = z.object({Type: z.enum(["Database", "VersionControlled"]).optional()}); export const deploymentConnectivityPolicy = z.object({AllowDeploymentsToNoTargets: z.boolean().optional(), ExcludeUnhealthyTargets: z.boolean().optional(), SkipMachineBehavior: z.enum(["None", "SkipUnavailableMachines"]).optional(), TargetRoles: z.array(z.string()).optional()}); export const projectTemplateDetailsResource = z.object({IsShared: z.boolean().optional(), ManagedChannelsAndLifecycles: z.boolean().optional(), Slug: z.string(), VersionMask: z.string().min(1)}); export const deploymentActionPackageResource = z.object({DeploymentAction: z.string().optional(), PackageReference: z.string().optional()}); export const releaseCreationStrategyResource = z.object({ChannelId: z.string().optional(), ReleaseCreationPackage: deploymentActionPackageResource.optional()}).and(z.record(z.string(), z.unknown())); export const versioningStrategyResource = z.object({DonorPackage: deploymentActionPackageResource.optional(), Template: z.string().optional()}).and(z.record(z.string(), z.unknown())); export const projectResource = z.object({AllowIgnoreChannelRules: z.boolean().optional(), AutoCreateRelease: z.boolean().optional(), AutoDeployReleaseOverrides: z.array(autoDeployReleaseOverrideResource).optional(), ClonedFromProjectId: z.string().optional(), CombineHealthAndSyncStatusInDashboardLiveStatus: z.boolean().optional(), DefaultGuidedFailureMode: z.enum(["EnvironmentDefault", "Off", "On"]).optional(), DefaultPowerShellEdition: z.string().optional(), DefaultToSkipIfAlreadyInstalled: z.boolean().optional(), DeploymentChangesTemplate: z.string().optional(), DeploymentProcessId: z.string().optional(), DeprovisioningRunbookId: z.string().optional(), Description: z.string().optional(), DiscreteChannelRelease: z.boolean().optional(), ExecuteDeploymentsOnEventBasedPipeline: z.boolean().optional(), ExtensionSettings: z.array(extensionSettingsValues).optional(), ForcePackageDownload: z.boolean().optional(), Icon: iconResource.optional(), Id: z.string().optional(), IncludedLibraryVariableSetIds: z.array(z.string()).optional(), IsBadgesEnabled: z.boolean().optional(), IsDisabled: z.boolean().optional(), IsVersionControlled: z.boolean().optional(), LastModifiedBy: z.string().optional(), LastModifiedOn: z.string().optional(), LifecycleId: z.string().optional(), Links: z.record(z.string(), z.string()).optional(), Name: z.string().optional(), PersistenceSettings: persistenceSettingsResource.optional(), ProjectConnectivityPolicy: deploymentConnectivityPolicy.optional(), ProjectGroupId: z.string().optional(), ProjectTags: z.array(z.string()).optional(), ProjectTemplateDetails: projectTemplateDetailsResource.optional(), ProvisioningRunbookId: z.string().optional(), ReleaseCreationStrategy: releaseCreationStrategyResource.optional(), ReleaseNotesTemplate: z.string().optional(), Slug: z.string().optional(), SpaceId: z.string().optional(), Templates: z.array(actionTemplateParameterResource).optional(), TenantedDeploymentMode: z.enum(["Untenanted", "TenantedOrUntenanted", "Tenanted"]).optional(), VariableSetId: z.string().optional(), VersioningStrategy: versioningStrategyResource.optional()}); export const tenantResource = z.object({ClonedFromTenantId: z.string().optional(), CustomFields: z.array(z.string()).optional(), Description: z.string().optional(), Icon: iconResource.optional(), Id: z.string().optional(), IsDisabled: z.boolean().optional(), LastModifiedBy: z.string().optional(), LastModifiedOn: z.string().optional(), Links: z.record(z.string(), z.string()).optional(), Name: z.string().optional(), ProjectEnvironments: z.record(z.string(), z.array(z.string())).optional(), Slug: z.string().optional(), SpaceId: z.string().optional(), TenantTags: z.array(z.string()).optional()}); export const certificateUsageResource = z.object({DeploymentTargetUsages: z.array(machineResource).optional(), Id: z.string().optional(), LastModifiedBy: z.string().optional(), LastModifiedOn: z.string().optional(), LibraryVariableSetUsages: z.array(libraryVariableSetResource).optional(), Links: z.record(z.string(), z.string()).optional(), ProjectUsages: z.array(projectResource).optional(), TenantUsages: z.array(tenantResource).optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Get the usages of a certificate * * GET /spaces/{spaceIdentifier}/certificates/{id}/usages * * Also accepts auth: APIKeyQuery, NugetApiKeyHeader */ export const getApiSpacesSpaceIdentifierCertificatesIdUsages = async (args: GetApiSpacesSpaceIdentifierCertificatesIdUsagesArgs, options?: GetApiSpacesSpaceIdentifierCertificatesIdUsagesOptions) => { const {baseUrl = "https://demo.octopus.app/api", fetch: fetchFn = fetch, APIKeyHeader} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (APIKeyHeader !== undefined) headers.set("X-Octopus-ApiKey", APIKeyHeader) const url = `${baseUrl.replace(/\/+$/, '')}/spaces/${encodeURIComponent(String(args.spaceIdentifier))}/certificates/${encodeURIComponent(String(args.id))}/usages${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(certificateUsageResource, await res.json()) };